aboutsummaryrefslogtreecommitdiff
path: root/test/common
diff options
context:
space:
mode:
authorJohannes Schickel2010-05-05 17:52:59 +0000
committerJohannes Schickel2010-05-05 17:52:59 +0000
commit388e4b65bf695bf3574a5311ea3806dc54ffe7a0 (patch)
tree7b370f1bdb1fc6d36ed60648bd8ad48c29efe77a /test/common
parent3b5bd3ada729c668b035ca0a418bf0f28d07d104 (diff)
downloadscummvm-rg350-388e4b65bf695bf3574a5311ea3806dc54ffe7a0.tar.gz
scummvm-rg350-388e4b65bf695bf3574a5311ea3806dc54ffe7a0.tar.bz2
scummvm-rg350-388e4b65bf695bf3574a5311ea3806dc54ffe7a0.zip
Add a custom implementation of OpenBSD's strlcat and strlcpy.
This includes both an implementation and some basic unit tests for the above mentioned functions. svn-id: r48953
Diffstat (limited to 'test/common')
-rw-r--r--test/common/str.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/common/str.h b/test/common/str.h
index dcef1c1773..aed2888736 100644
--- a/test/common/str.h
+++ b/test/common/str.h
@@ -295,6 +295,58 @@ class StringTestSuite : public CxxTest::TestSuite
Common::String s = Common::String::printf("%s%X", "test", 1234);
TS_ASSERT(s == "test4D2");
TS_ASSERT(s.size() == 7);
+ }
+
+ void test_strlcpy() {
+ static const char * const testString = "1234567890";
+
+ char test1[4];
+ TS_ASSERT_EQUALS(Common::strlcpy(test1, testString, 4), strlen(testString));
+ TS_ASSERT_EQUALS(strcmp(test1, "123"), 0);
+
+ char test2[12];
+ test2[11] = 'X';
+ TS_ASSERT_EQUALS(Common::strlcpy(test2, testString, 11), strlen(testString));
+ TS_ASSERT_EQUALS(strcmp(test2, testString), 0);
+ TS_ASSERT_EQUALS(test2[11], 'X');
+
+ char test3[1] = { 'X' };
+ TS_ASSERT_EQUALS(Common::strlcpy(test3, testString, 0), strlen(testString));
+ TS_ASSERT_EQUALS(test3[0], 'X');
+
+ char test4[12];
+ TS_ASSERT_EQUALS(Common::strlcpy(test4, testString, 12), strlen(testString));
+ TS_ASSERT_EQUALS(strcmp(test4, testString), 0);
+ }
+ void test_strncat() {
+ static const char * const initialString = "123";
+ static const char * const appendString = "4567890";
+ static const char * const resultString = "1234567890";
+
+ char test1[4];
+ TS_ASSERT_EQUALS(Common::strlcpy(test1, initialString, 4), strlen(initialString));
+ TS_ASSERT_EQUALS(strcmp(test1, initialString), 0);
+ TS_ASSERT_EQUALS(Common::strlcat(test1, appendString, 4), strlen(resultString));
+ TS_ASSERT_EQUALS(strcmp(test1, initialString), 0);
+
+ char test2[12];
+ test2[11] = 'X';
+ TS_ASSERT_EQUALS(Common::strlcpy(test2, initialString, 11), strlen(initialString));
+ TS_ASSERT_EQUALS(strcmp(test2, initialString), 0);
+ TS_ASSERT_EQUALS(Common::strlcat(test2, appendString, 11), strlen(resultString));
+ TS_ASSERT_EQUALS(strcmp(test2, resultString), 0);
+ TS_ASSERT_EQUALS(test2[11], 'X');
+
+ char test3[1];
+ test3[0] = 'X';
+ TS_ASSERT_EQUALS(Common::strlcat(test3, appendString, 0), strlen(appendString));
+ TS_ASSERT_EQUALS(test3[0], 'X');
+
+ char test4[11];
+ TS_ASSERT_EQUALS(Common::strlcpy(test4, initialString, 11), strlen(initialString));
+ TS_ASSERT_EQUALS(strcmp(test4, initialString), 0);
+ TS_ASSERT_EQUALS(Common::strlcat(test4, appendString, 11), strlen(resultString));
+ TS_ASSERT_EQUALS(strcmp(test4, resultString), 0);
}
};