aboutsummaryrefslogtreecommitdiff
path: root/test/common/algorithm.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/common/algorithm.h')
-rw-r--r--test/common/algorithm.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/common/algorithm.h b/test/common/algorithm.h
index ccf6469f67..eeed59d821 100644
--- a/test/common/algorithm.h
+++ b/test/common/algorithm.h
@@ -25,6 +25,34 @@ class AlgorithmTestSuite : public CxxTest::TestSuite {
return true;
}
+ /**
+ * Auxiliary function to check the equality of two generic collections (A and B), from one_first to one_last.
+ *
+ * @note: It assumes that other has at least (one_last - one-first) lenght, starting from other_first.
+ *
+ * @param one_first: The first element of the first collection to be compared.
+ * @param one_last: The last element of the first collection to be compared.
+ * @param other_first: The first element of the collection to be compared.
+ * @return true if, for each index i in [one_first, one_last), A[i] == B[i], false otherwise.
+ */
+ template<typename It>
+ bool checkEqual(It one_first, It one_last, It other_first) {
+ if (one_first == one_last)
+ return true;
+
+ // Check whether two containers have the same items in the same order,
+ // starting from some iterators one_first and other_first
+ //
+ // It iterates through the containers, comparing the elements one by one.
+ // If it finds a discrepancy, it returns false. Otherwise, it returns true.
+
+ for (; one_first != one_last; ++one_first, ++other_first)
+ if (*one_first != *other_first)
+ return false;
+
+ return true;
+ }
+
struct Item {
int value;
Item(int v) : value(v) {}
@@ -97,4 +125,32 @@ public:
Common::sort(list.begin(), list.end());
TS_ASSERT_EQUALS(checkSort(list.begin(), list.end(), Common::Less<Item>()), true);
}
+
+ void test_string_replace() {
+
+ Common::String original = "Hello World";
+ Common::String expected = "Hells Wsrld";
+
+ Common::replace(original.begin(), original.end(), 'o', 's');
+
+ TS_ASSERT_EQUALS(original, expected);
+ }
+
+ void test_container_replace() {
+
+ Common::List<int> original;
+ Common::List<int> expected;
+ for (int i = 0; i < 6; ++i) {
+ original.push_back(i);
+ if (i == 3) {
+ expected.push_back(5);
+ } else {
+ expected.push_back(i);
+ }
+ }
+
+ Common::replace(original.begin(), original.end(), 3, 5);
+
+ TS_ASSERT_EQUALS(checkEqual(original.begin(), original.end(), expected.begin()), true);
+ }
};