@@ -3843,5 +3843,35 @@ namespace cppstringstests
38433843 Assert::AreEqual (L" " , wtext.substr (10 , 15 ).c_str ());
38443844 Assert::AreEqual (L" " , wtext.substr (21 ).c_str ());
38453845 }
3846+
3847+ TEST_METHOD (swapcase)
3848+ {
3849+ CppString s (255 , ' \0 ' );
3850+ for (int i : std::views::iota (0 , 256 ))
3851+ s[i] = CppString::value_type (i);
3852+ CppString res{ s.swapcase () };
3853+ for (auto const [s, r] : std::views::zip (s, res)) {
3854+ if (std::islower (s))
3855+ Assert::IsTrue (std::isupper (r));
3856+ else if (std::isupper (s))
3857+ Assert::IsTrue (std::islower (r));
3858+ else
3859+ Assert::AreEqual (s, r);
3860+ }
3861+
3862+ CppWString ws (0xffff , ' \0 ' );
3863+ for (int i : std::views::iota (0 , 0x1'0000 ))
3864+ ws[i] = CppWString::value_type (i);
3865+ CppWString wres{ ws.swapcase () };
3866+ for (auto const [ws, wr] : std::views::zip (ws, wres)) {
3867+ if (std::islower (ws))
3868+ Assert::IsTrue (std::isupper (wr));
3869+ else if (std::isupper (ws))
3870+ Assert::IsTrue (std::islower (wr));
3871+ else
3872+ Assert::AreEqual (ws, wr);
3873+ }
3874+ }
3875+
38463876 };
38473877}
0 commit comments