Skip to content

Commit fbde103

Browse files
committed
#185-Test method CppStringT::contains_n()
Completed. Validated.
1 parent 016bdfd commit fbde103

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

cpp-strings-tests/cpp-strings-tests.cpp

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,87 @@ namespace cppstringstests
771771
Assert::IsFalse(wtext.contains(L'a'));
772772
}
773773

774+
TEST_METHOD(contains_n)
775+
{
776+
pcs::CppString text("Abcd. Efgh ij!");
777+
for (std::size_t index = 0; index < text.size(); ++index) {
778+
Assert::IsTrue(text.contains_n(text.substr(index), index));
779+
for (std::size_t count = 0; count < text.size() - index; ++count) {
780+
Assert::IsTrue(text.contains_n(text.substr(index, count), index, count));
781+
Assert::IsTrue(text.contains_n(text.substr(index, count), index, count + 1));
782+
if (count > 0)
783+
Assert::IsFalse(text.contains_n(text.substr(index, count), index, count - 1));
784+
}
785+
}
786+
Assert::IsFalse(text.contains_n("zzz"cs, 0));
787+
Assert::IsFalse(text.contains_n("abc"cs, 0));
788+
Assert::IsFalse(text.contains_n("Abcd. Efgh ij!!"cs, 0));
789+
Assert::IsTrue(text.contains_n(""cs, 6));
790+
Assert::IsFalse(text.contains_n(". Ef"cs, 10, 4));
791+
Assert::IsFalse(text.contains_n(". Ef"cs, 4, 3));
792+
793+
pcs::CppWString wtext(L"Abcd. Efgh ij!");
794+
for (std::size_t index = 0; index < wtext.size(); ++index) {
795+
Assert::IsTrue(wtext.contains_n(wtext.substr(index), index));
796+
for (std::size_t count = 0; count < text.size() - index; ++count) {
797+
Assert::IsTrue(wtext.contains_n(wtext.substr(index, count), index, count));
798+
Assert::IsTrue(wtext.contains_n(wtext.substr(index, count), index, count + 1));
799+
if (count > 0)
800+
Assert::IsFalse(wtext.contains_n(wtext.substr(index, count), index, count - 1));
801+
}
802+
}
803+
Assert::IsFalse(wtext.contains_n(L"zzz"cs, 0));
804+
Assert::IsFalse(wtext.contains_n(L"abc"cs, 0));
805+
Assert::IsFalse(wtext.contains_n(L"Abcd. Efgh ij!!"cs, 0));
806+
Assert::IsTrue(wtext.contains_n(L""cs, 6));
807+
Assert::IsFalse(wtext.contains_n(L". Ef"cs, 10, 4));
808+
Assert::IsFalse(wtext.contains_n(L". Ef"cs, 4, 3));
809+
810+
for (std::size_t index = 0; index < text.size(); ++index) {
811+
Assert::IsTrue(text.contains_n(text.substr(index), index));
812+
for (std::size_t count = 0; count < text.size() - index; ++count) {
813+
Assert::IsTrue(text.contains_n(text.substr(index, count).c_str(), index, count));
814+
Assert::IsTrue(text.contains_n(text.substr(index, count).c_str(), index, count + 1));
815+
if (count > 0)
816+
Assert::IsFalse(text.contains_n(text.substr(index, count).c_str(), index, count - 1));
817+
}
818+
}
819+
Assert::IsFalse(text.contains_n("z", 0));
820+
Assert::IsFalse(text.contains_n("a", 0));
821+
Assert::IsFalse(text.contains_n("Abcd. Efgh ij!!", 0));
822+
Assert::IsTrue(text.contains_n("", 6));
823+
Assert::IsTrue(text.contains_n(nullptr, 5));
824+
Assert::IsFalse(text.contains_n(". Ef", 10, 4));
825+
Assert::IsFalse(text.contains_n(". Ef", 4, 3));
826+
827+
for (std::size_t index = 0; index < text.size(); ++index) {
828+
Assert::IsTrue(wtext.contains_n(wtext.substr(index), index));
829+
for (std::size_t count = 0; count < wtext.size() - index; ++count) {
830+
Assert::IsTrue(wtext.contains_n(wtext.substr(index, count).c_str(), index, count));
831+
Assert::IsTrue(wtext.contains_n(wtext.substr(index, count).c_str(), index, count + 1));
832+
if (count > 0)
833+
Assert::IsFalse(wtext.contains_n(wtext.substr(index, count).c_str(), index, count - 1));
834+
}
835+
}
836+
Assert::IsFalse(wtext.contains_n(L"z", 0));
837+
Assert::IsFalse(wtext.contains_n(L"a", 0));
838+
Assert::IsFalse(wtext.contains_n(L"Abcd. Efgh ij!!", 0));
839+
Assert::IsTrue(wtext.contains_n(L"", 6));
840+
Assert::IsTrue(wtext.contains_n(nullptr, 3));
841+
Assert::IsFalse(wtext.contains_n(L". Ef", 10, 4));
842+
Assert::IsFalse(wtext.contains_n(L". Ef", 4, 3));
843+
844+
for (auto const ch : text)
845+
Assert::IsTrue(text.contains_n(ch, 0));
846+
Assert::IsFalse(text.contains_n('z', 0, 21));
847+
Assert::IsFalse(text.contains_n('a', 0));
848+
849+
for (auto const wch : wtext)
850+
Assert::IsTrue(wtext.contains_n(wch, 0));
851+
Assert::IsFalse(wtext.contains_n(L'z', 0));
852+
Assert::IsFalse(wtext.contains_n(L'a', 0, 21));
853+
}
854+
774855
TEST_METHOD(count)
775856
{
776857
pcs::CppString s("abcabcabcdefabca bca bcabca");

0 commit comments

Comments
 (0)