#include <iostream> #include <j/cppunit/cppunit.hpp> #include <j/cppunit/assert.hpp> #include <j/lang/assertion_error.hpp> #include <string_util.hpp> using namespace j; using namespace j::lang; using namespace j::cppunit; using namespace xtokenizer; class StringUtilTest : public TestCase { public: StringUtilTest() {} ~StringUtilTest() {} void setUp() {} void tearDown() {} void testStartsWith() { // 01234567890123 std::string str = "abcdefghijklmn"; bool ret = startsWith(str, "abc", 0); assertTrue(ret); ret = startsWith(str, "abc", 3); assertFalse(ret); ret = startsWith(str, "fghijk", 5); assertTrue(ret); ret = startsWith(str, "abcdefghijklmnopqrstuvwxyz", 0); assertFalse(ret); ret = startsWith(str, "abc", -1); assertFalse(ret); ret = startsWith(str, "abc", 100); assertFalse(ret); // String ret = startsWith(str, String("abc"), 0); assertTrue(ret); ret = startsWith(str, String("abc"), 3); assertFalse(ret); ret = startsWith(str, String("fghijk"), 5); assertTrue(ret); ret = startsWith(str, String("abcdefghijklmnopqrstuvwxyz"), 0); assertFalse(ret); ret = startsWith(str, String("abc"), -1); assertFalse(ret); ret = startsWith(str, String("abc"), 100); assertFalse(ret); } void testUnescapedIndexOf() { // int unescapedIndexOf(const std::string &str, const std::string &needle, int offset); // 0123 4567 8 90123 4567 std::string str = "abcd\"efg\\\"hijk\"lmn"; int ret = unescapedIndexOf(str, "\"", 0); assertEquals(4, ret); ret = unescapedIndexOf(str, "\"", 5); assertEquals(14, ret); ret = unescapedIndexOf(str, "\"", 15); assertEquals(-1, ret); } void testEscapedString() { // 10 20 30 // 01234 56789012 3456789012345678 90 12 std::string str = "Hello\\tWorld!\\nThis is Sample\\r\\n"; std::string res = escapedString(str, 0, 13); assertEquals(std::string("Hello\tWorld!"), res); res = escapedString(str, 7, 32); assertEquals(std::string("World!\nThis is Sample\r\n"), res); std::string str2 = "Hello\\x20World!"; res = escapedString(str2, 0, str2.length()); assertEquals(std::string("Hello World!"), res); std::string str3 = "\\!"; res = escapedString(str3, 0, str3.length()); assertEquals(std::string("\\!"), res); } /* std::string escapedString(const std::string &str, int offset, int length); */ void suite() { RUN_TEST("startsWith", testStartsWith); RUN_TEST("unescapedIndexOf", testUnescapedIndexOf); RUN_TEST("escapedString", testEscapedString); } };