From a516b3aa6f6906d6780172d684e91fa4b7d3cdd1 Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Fri, 11 Feb 2022 01:32:43 +0100 Subject: Switched to Catch2 testing framework --- StringTools/Test/Replace_Char.cpp | 314 ++++++++++++++++++-------------------- 1 file changed, 152 insertions(+), 162 deletions(-) (limited to 'StringTools/Test/Replace_Char.cpp') diff --git a/StringTools/Test/Replace_Char.cpp b/StringTools/Test/Replace_Char.cpp index d562651..4aae394 100644 --- a/StringTools/Test/Replace_Char.cpp +++ b/StringTools/Test/Replace_Char.cpp @@ -1,166 +1,156 @@ -#include "CppUnitTest.h" -#include "../StringTools/StringTools.h" +#include +#include "Catch2.h" -using namespace Microsoft::VisualStudio::CppUnitTestFramework; +// Tests that replacing something in an empty string returns an empty string +TEST_CASE(__FILE__"/EmptyString") +{ + // Setup + const std::string in = ""; + + // Exercise + const std::string out = StringTools::Replace(in, 'a', "Subst"); + + // Verify + REQUIRE(out == ""); + return; +} + +// Tests that replacing a char to an empty string works +TEST_CASE(__FILE__"/Single_ReplaceToEmpty") +{ + // Setup + const std::string in = "i"; + + // Exercise + const std::string out = StringTools::Replace(in, 'i', ""); + + // Verify + REQUIRE(out == ""); + return; +} + +// Tests that replacing to a single char works +TEST_CASE(__FILE__"/Single_ReplaceToSingleChar") +{ + // Setup + const std::string in = "a"; + + // Exercise + const std::string out = StringTools::Replace(in, 'a', "i"); + + // Verify + REQUIRE(out == "i"); + return; +} -namespace _StringTools +// Tests that replacing to a single char works, passing a char +TEST_CASE(__FILE__"/Single_ReplaceToSingleChar_AsChar") { - TEST_CLASS(_Replace_Char) - { - public: - - // Tests that replacing something in an empty string returns an empty string - TEST_METHOD(EmptyString) - { - // Setup - const std::string in = ""; - - // Exercise - const std::string out = StringTools::Replace(in, 'a', "Subst"); - - // Verify - Assert::AreEqual(out.c_str(), ""); - return; - } - - // Tests that replacing a char to an empty string works - TEST_METHOD(Single_ReplaceToEmpty) - { - // Setup - const std::string in = "i"; - - // Exercise - const std::string out = StringTools::Replace(in, 'i', ""); - - // Verify - Assert::AreEqual(out.c_str(), ""); - return; - } - - // Tests that replacing to a single char works - TEST_METHOD(Single_ReplaceToSingleChar) - { - // Setup - const std::string in = "a"; - - // Exercise - const std::string out = StringTools::Replace(in, 'a', "i"); - - // Verify - Assert::AreEqual(out.c_str(), "i"); - return; - } - - // Tests that replacing to a single char works, passing a char - TEST_METHOD(Single_ReplaceToSingleChar_AsChar) - { - // Setup - const std::string in = "Oilbanger"; - - // Exercise - const std::string out = StringTools::Replace(in, 'a', 'i'); - - // Verify - Assert::AreEqual(out.c_str(), "Oilbinger"); - return; - } - - // Tests that replacing the find to something longer works - TEST_METHOD(Single_ReplaceToLonger) - { - // Setup - const std::string in = "Littled"; - - // Exercise - const std::string out = StringTools::Replace(in, 'd', "binger"); - - // Verify - Assert::AreEqual(out.c_str(), "Littlebinger"); - return; - } - - // Tests that replacing a char to an empty string works - TEST_METHOD(Multiple_ReplaceToEmpty) - { - // Setup - const std::string in = "dirty dogs dig dirt daringly"; - - // Exercise - const std::string out = StringTools::Replace(in, 'd', ""); - - // Verify - Assert::AreEqual(out.c_str(), "irty ogs ig irt aringly"); - return; - } - - // Tests that replacing to a single char works - TEST_METHOD(Multiple_ReplaceToSingleChar) - { - // Setup - const std::string in = "Oilbanger, Bangerfanger, Lattle brattle oaly skattle."; - - // Exercise - const std::string out = StringTools::Replace(in, 'a', "i"); - - // Verify - Assert::AreEqual(out.c_str(), "Oilbinger, Bingerfinger, Little brittle oily skittle."); - return; - } - - // Tests that replacing to a single char works, passing a char - TEST_METHOD(Multiple_ReplaceToSingleChar_AsChar) - { - // Setup - const std::string in = "Oilbanger, Bangerfanger, Lattle brattle oaly skattle."; - - // Exercise - const std::string out = StringTools::Replace(in, 'a', 'i'); - - // Verify - Assert::AreEqual(out.c_str(), "Oilbinger, Bingerfinger, Little brittle oily skittle."); - return; - } - - // Tests that replacing the find to something longer works - TEST_METHOD(Multiple_ReplaceToLonger) - { - // Setup - const std::string in = "d d d d d d d d"; - - // Exercise - const std::string out = StringTools::Replace(in, 'd', "bla"); - - // Verify - Assert::AreEqual(out.c_str(), "bla bla bla bla bla bla bla bla"); - return; - } - - // Tests that the replacer ignores chars put in by the replacer - TEST_METHOD(ReplacerIgnoresReplaced) - { - // Setup - const std::string in = "b b b b b b b b"; - - // Exercise - const std::string out = StringTools::Replace(in, 'b', "bla"); - - // Verify - Assert::AreEqual(out.c_str(), "bla bla bla bla bla bla bla bla"); - return; - } - - // Tests that replacing succesive findings works - TEST_METHOD(Replace_Successive) - { - // Setup - const std::string in = "bbbbbbbb"; - - // Exercise - const std::string out = StringTools::Replace(in, 'b', "bla"); - - // Verify - Assert::AreEqual(out.c_str(), "blablablablablablablabla"); - return; - } - }; + // Setup + const std::string in = "Oilbanger"; + + // Exercise + const std::string out = StringTools::Replace(in, 'a', 'i'); + + // Verify + REQUIRE(out == "Oilbinger"); + return; +} + +// Tests that replacing the find to something longer works +TEST_CASE(__FILE__"/Single_ReplaceToLonger") +{ + // Setup + const std::string in = "Littled"; + + // Exercise + const std::string out = StringTools::Replace(in, 'd', "binger"); + + // Verify + REQUIRE(out == "Littlebinger"); + return; +} + +// Tests that replacing a char to an empty string works +TEST_CASE(__FILE__"/Multiple_ReplaceToEmpty") +{ + // Setup + const std::string in = "dirty dogs dig dirt daringly"; + + // Exercise + const std::string out = StringTools::Replace(in, 'd', ""); + + // Verify + REQUIRE(out == "irty ogs ig irt aringly"); + return; +} + +// Tests that replacing to a single char works +TEST_CASE(__FILE__"/Multiple_ReplaceToSingleChar") +{ + // Setup + const std::string in = "Oilbanger, Bangerfanger, Lattle brattle oaly skattle."; + + // Exercise + const std::string out = StringTools::Replace(in, 'a', "i"); + + // Verify + REQUIRE(out == "Oilbinger, Bingerfinger, Little brittle oily skittle."); + return; +} + +// Tests that replacing to a single char works, passing a char +TEST_CASE(__FILE__"/Multiple_ReplaceToSingleChar_AsChar") +{ + // Setup + const std::string in = "Oilbanger, Bangerfanger, Lattle brattle oaly skattle."; + + // Exercise + const std::string out = StringTools::Replace(in, 'a', 'i'); + + // Verify + REQUIRE(out == "Oilbinger, Bingerfinger, Little brittle oily skittle."); + return; +} + +// Tests that replacing the find to something longer works +TEST_CASE(__FILE__"/Multiple_ReplaceToLonger") +{ + // Setup + const std::string in = "d d d d d d d d"; + + // Exercise + const std::string out = StringTools::Replace(in, 'd', "bla"); + + // Verify + REQUIRE(out == "bla bla bla bla bla bla bla bla"); + return; +} + +// Tests that the replacer ignores chars put in by the replacer +TEST_CASE(__FILE__"/ReplacerIgnoresReplaced") +{ + // Setup + const std::string in = "b b b b b b b b"; + + // Exercise + const std::string out = StringTools::Replace(in, 'b', "bla"); + + // Verify + REQUIRE(out == "bla bla bla bla bla bla bla bla"); + return; +} + +// Tests that replacing succesive findings works +TEST_CASE(__FILE__"/Replace_Successive") +{ + // Setup + const std::string in = "bbbbbbbb"; + + // Exercise + const std::string out = StringTools::Replace(in, 'b', "bla"); + + // Verify + REQUIRE(out == "blablablablablablablabla"); + return; } -- cgit v1.2.3