Index: uspace/lib/cpp/include/internal/test/tests.hpp
===================================================================
--- uspace/lib/cpp/include/internal/test/tests.hpp	(revision 15f407a70191c28a048f47bcc0cc3bdbdf7cb17a)
+++ uspace/lib/cpp/include/internal/test/tests.hpp	(revision 25709c348a700a1d32d609841cc75c1f82804174)
@@ -229,4 +229,5 @@
         private:
             void test_algorithms();
+            void test_complex();
     };
 }
Index: uspace/lib/cpp/src/internal/test/numeric.cpp
===================================================================
--- uspace/lib/cpp/src/internal/test/numeric.cpp	(revision 15f407a70191c28a048f47bcc0cc3bdbdf7cb17a)
+++ uspace/lib/cpp/src/internal/test/numeric.cpp	(revision 25709c348a700a1d32d609841cc75c1f82804174)
@@ -27,9 +27,15 @@
  */
 
+#include <iostream> // TODO: remove
+
 #include <array>
+#include <complex>
 #include <initializer_list>
 #include <internal/test/tests.hpp>
 #include <numeric>
 #include <utility>
+
+using namespace std::literals;
+using namespace complex_literals;
 
 namespace std::test
@@ -41,4 +47,5 @@
 
         test_algorithms();
+        test_complex();
 
         return end();
@@ -147,4 +154,29 @@
         );
     }
+
+    void numeric_test::test_complex()
+    {
+        auto c1 = 1.f + 2.5if;
+        test_eq("complex literals pt1", c1.real(), 1.f);
+        test_eq("complex literals pt2", c1.imag(), 2.5f);
+
+        std::complex<double> c2{2.0, 0.5};
+        test_eq("complex value initialization", c2, (2.0 + 0.5i));
+
+        std::complex<double> c3{c2};
+        test_eq("complex copy initialization", c3, (2.0 + 0.5i));
+
+        std::complex<double> c4{c1};
+        test_eq("complex conversion initialization", c4, (1.0 + 2.5i));
+
+        test_eq("complex sum", ((1.0 + 2.5i) + (3.0 + 0.5i)), (4.0 + 3.0i));
+        test_eq("complex sub", ((2.0 + 3.0i) - (1.0 + 5.0i)), (1.0 - 2.0i));
+        test_eq("complex mul", ((2.0 + 2.0i) * (2.0 + 3.0i)), (-2.0 + 10.0i));
+        test_eq("complex div", ((2.0 - 1.0i) / (3.0 + 4.0i)), (0.08 - 0.44i));
+        test_eq("complex unary minus", -(1.0 + 1.0i), (-1.0 - 1.0i));
+        test_eq("complex abs", std::abs(2.0 - 4.0i), 20.0);
+        test_eq("complex real", std::real(2.0 + 3.0i), 2.0);
+        test_eq("complex imag", std::imag(2.0 + 3.0i), 3.0);
+    }
 }
 
