aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2009-12-27 10:47:34 +0000
committerJohannes Schickel2009-12-27 10:47:34 +0000
commit835c6c0d6325818f075c157ad57edb182b361c54 (patch)
tree39dee5c560eb3e4a6fd77956cf9568443bb251fe
parent18d4bbdccc1b1c2118b20cbbeb850d4b2d11d01a (diff)
downloadscummvm-rg350-835c6c0d6325818f075c157ad57edb182b361c54.tar.gz
scummvm-rg350-835c6c0d6325818f075c157ad57edb182b361c54.tar.bz2
scummvm-rg350-835c6c0d6325818f075c157ad57edb182b361c54.zip
Cleanup.
svn-id: r46617
-rw-r--r--test/common/algorithm.h68
1 files changed, 36 insertions, 32 deletions
diff --git a/test/common/algorithm.h b/test/common/algorithm.h
index 253bc10cec..af1692027a 100644
--- a/test/common/algorithm.h
+++ b/test/common/algorithm.h
@@ -5,60 +5,64 @@
#include "common/algorithm.h"
#include "common/list.h"
-template<typename T, class StrictWeakOrdering >
-void check_sort(T first, T last, StrictWeakOrdering comp = StrictWeakOrdering()) {
- for(T i = first; i != last; ++i) {
- T next = i;
- ++next;
- if (next == last)
- break;
- TS_ASSERT_EQUALS(comp(*next, *i), false); //prev <= next
- };
-}
+class AlgorithmTestSuite : public CxxTest::TestSuite {
+ template<typename T, class StrictWeakOrdering>
+ void checkSort(T first, T last, StrictWeakOrdering comp = StrictWeakOrdering()) {
+ // Check whether the container is sorted by the given binary predicate, which
+ // decides whether the first value passed preceeds the second value passed.
+ //
+ // To do that it checks an item and its follower in the container with the
+ // given predicate in reverse order, when it returns false everything is
+ // fine, when it returns false, the follower preceeds the item and thus
+ // the order is violated.
+ for (T prev = first++; first != last; ++prev, ++first)
+ TS_ASSERT_EQUALS(comp(*first, *prev), false);
+ }
-struct item {
- int value;
- item(int v): value(v) {}
-};
+ struct Item {
+ int value;
+ Item(int v) : value(v) {}
+ };
-struct item_cmp {
- bool operator()(const item &a, const item &b) {
- return a.value < b.value;
- }
-};
+ struct ItemCmp {
+ bool operator()(const Item &a, const Item &b) {
+ return a.value < b.value;
+ }
+ };
-class AlgorithmTestSuite : public CxxTest::TestSuite {
public:
void test_pod_sort() {
{
int array[] = { 63, 11, 31, 72, 1, 48, 32, 69, 38, 31 };
Common::sort(array, array + ARRAYSIZE(array));
- check_sort(array, array + ARRAYSIZE(array), Common::Less<int>());
+ checkSort(array, array + ARRAYSIZE(array), Common::Less<int>());
Common::sort(array, array + ARRAYSIZE(array)); //already sorted one
- check_sort(array, array + ARRAYSIZE(array), Common::Less<int>());
+ checkSort(array, array + ARRAYSIZE(array), Common::Less<int>());
}
{
int array[] = { 90, 80, 70, 60, 50, 40, 30, 20, 10 };
Common::sort(array, array + ARRAYSIZE(array));
- check_sort(array, array + ARRAYSIZE(array), Common::Less<int>());
+ checkSort(array, array + ARRAYSIZE(array), Common::Less<int>());
Common::sort(array, array + ARRAYSIZE(array), Common::Greater<int>());
- check_sort(array, array + ARRAYSIZE(array), Common::Greater<int>());
+ checkSort(array, array + ARRAYSIZE(array), Common::Greater<int>());
}
}
void test_container_sort() {
const int n = 1000;
- Common::List<item> list;
- for(int i = 0; i < n; ++i) {
- list.push_back(item(i));
- }
- Common::sort(list.begin(), list.end(), item_cmp());
- check_sort(list.begin(), list.end(), item_cmp());
+
+ Common::List<Item> list;
+ for(int i = 0; i < n; ++i)
+ list.push_back(Item(i));
+
+ Common::sort(list.begin(), list.end(), ItemCmp());
+ checkSort(list.begin(), list.end(), ItemCmp());
+
//already sorted
- Common::sort(list.begin(), list.end(), item_cmp());
- check_sort(list.begin(), list.end(), item_cmp());
+ Common::sort(list.begin(), list.end(), ItemCmp());
+ checkSort(list.begin(), list.end(), ItemCmp());
}
};