diff options
Diffstat (limited to 'test/common')
-rw-r--r-- | test/common/array.h | 28 | ||||
-rw-r--r-- | test/common/str.h | 17 |
2 files changed, 45 insertions, 0 deletions
diff --git a/test/common/array.h b/test/common/array.h index f17edd3984..c10270436f 100644 --- a/test/common/array.h +++ b/test/common/array.h @@ -107,6 +107,34 @@ class ArrayTestSuite : public CxxTest::TestSuite } + void test_self_insert() { + Common::Array<int> array; + int i; + + // Insert some data -- and make sure we have enough space for + // *twice* as much data. This way, there is no need to allocate + // new storage, so if the insert() operation is "clever", it + // will try to reuse the existing storage. + // This in turn may uncover bugs if the insertion code does not + // expect self-insertions. + array.reserve(128); + for (i = 0; i < 64; ++i) + array.push_back(i); + + // Now insert the array into the middle of itself + array.insert_at(12, array); + + // Verify integrity + TS_ASSERT_EQUALS(array.size(), 128UL); + + for (i = 0; i < 12; ++i) + TS_ASSERT_EQUALS(array[i], i); + for (i = 0; i < 64; ++i) + TS_ASSERT_EQUALS(array[i+12], i); + for (i = 12; i < 64; ++i) + TS_ASSERT_EQUALS(array[i+64], i); + } + void test_remove_at() { Common::Array<int> array; diff --git a/test/common/str.h b/test/common/str.h index 5d9fe29af9..0dee16a493 100644 --- a/test/common/str.h +++ b/test/common/str.h @@ -378,4 +378,21 @@ class StringTestSuite : public CxxTest::TestSuite TS_ASSERT_EQUALS(Common::strlcat(test4, appendString, 11), strlen(resultString)); TS_ASSERT_EQUALS(strcmp(test4, resultString), 0); } + + void test_scumm_stricmp() { + TS_ASSERT_EQUALS(scumm_stricmp("abCd", "abCd"), 0); + TS_ASSERT_EQUALS(scumm_stricmp("abCd", "ABCd"), 0); + TS_ASSERT_LESS_THAN(scumm_stricmp("abCd", "ABCe"), 0); + TS_ASSERT_LESS_THAN(scumm_stricmp("abCd", "ABCde"), 0); + } + + void test_scumm_strnicmp() { + TS_ASSERT_EQUALS(scumm_strnicmp("abCd", "abCd", 3), 0); + TS_ASSERT_EQUALS(scumm_strnicmp("abCd", "ABCd", 4), 0); + TS_ASSERT_EQUALS(scumm_strnicmp("abCd", "ABCd", 5), 0); + TS_ASSERT_EQUALS(scumm_strnicmp("abCd", "ABCe", 3), 0); + TS_ASSERT_LESS_THAN(scumm_strnicmp("abCd", "ABCe", 4), 0); + TS_ASSERT_EQUALS(scumm_strnicmp("abCd", "ABCde", 4), 0); + TS_ASSERT_LESS_THAN(scumm_strnicmp("abCd", "ABCde", 5), 0); + } }; |