Index: uspace/lib/cpp/include/internal/test/tests.hpp
===================================================================
--- uspace/lib/cpp/include/internal/test/tests.hpp	(revision 173a246e7d10462c87c0f11a10afef7c689429c2)
+++ uspace/lib/cpp/include/internal/test/tests.hpp	(revision 923b0c8f8cf364a5f8536c1064a2eca43b315416)
@@ -72,4 +72,5 @@
             void test_replace();
             void test_copy();
+            void test_find();
     };
 }
Index: uspace/lib/cpp/src/internal/test/string.cpp
===================================================================
--- uspace/lib/cpp/src/internal/test/string.cpp	(revision 173a246e7d10462c87c0f11a10afef7c689429c2)
+++ uspace/lib/cpp/src/internal/test/string.cpp	(revision 923b0c8f8cf364a5f8536c1064a2eca43b315416)
@@ -42,4 +42,5 @@
         test_replace();
         test_copy();
+        test_find();
 
         return true;
@@ -387,3 +388,43 @@
         );
     }
+
+    void string_test::test_find()
+    {
+        std::string target{"ABC"};
+        auto miss = std::string::npos;
+
+        std::string str1{"xxABCxx"};
+
+        auto idx = str1.find(target, 0);
+        test_eq(
+            "find from start (success)",
+            idx, 2ul
+        );
+
+        idx = str1.find(target, 3);
+        test_eq(
+            "find from start (fail, late start)",
+            idx, miss
+        );
+
+        idx = str1.rfind(target, miss);
+        test_eq(
+            "rfind from start (success)",
+            idx, 2ul
+        );
+
+        idx = str1.rfind(target, 1);
+        test_eq(
+            "rfind from start (fail, late start)",
+            idx, miss
+        );
+
+        std::string str2{"xxABCxxABCxx"};
+
+        idx = str2.find(target, 0);
+        test_eq(
+            "find from start (success, multiple)",
+            idx, 2ul
+        );
+    }
 }
