1dd2406ebSStefano Ceccherini #include "StringEscapeTest.h"
2dd2406ebSStefano Ceccherini #include "cppunit/TestCaller.h"
3dd2406ebSStefano Ceccherini #include <String.h>
4dd2406ebSStefano Ceccherini
5*f960e7e9Skrish_iyer
StringEscapeTest(std::string name)6*f960e7e9Skrish_iyer StringEscapeTest::StringEscapeTest(std::string name)
7*f960e7e9Skrish_iyer : BTestCase(name)
8dd2406ebSStefano Ceccherini {
9dd2406ebSStefano Ceccherini }
10dd2406ebSStefano Ceccherini
11dd2406ebSStefano Ceccherini
~StringEscapeTest()12dd2406ebSStefano Ceccherini StringEscapeTest::~StringEscapeTest()
13dd2406ebSStefano Ceccherini {
14dd2406ebSStefano Ceccherini }
15dd2406ebSStefano Ceccherini
16dd2406ebSStefano Ceccherini
17dd2406ebSStefano Ceccherini void
PerformTest(void)18dd2406ebSStefano Ceccherini StringEscapeTest::PerformTest(void)
19dd2406ebSStefano Ceccherini {
205480b459SStefano Ceccherini BString *string1;
21dd2406ebSStefano Ceccherini
226903f4c6SStefano Ceccherini // CharacterEscape(char*, char)
23dd2406ebSStefano Ceccherini NextSubTest();
24dd2406ebSStefano Ceccherini string1 = new BString("abcdefghi");
25dd2406ebSStefano Ceccherini string1->CharacterEscape("acf", '/');
26dd2406ebSStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "/ab/cde/fghi") == 0);
27dd2406ebSStefano Ceccherini delete string1;
286903f4c6SStefano Ceccherini
296903f4c6SStefano Ceccherini // BString is null
306903f4c6SStefano Ceccherini NextSubTest();
316903f4c6SStefano Ceccherini string1 = new BString;
326903f4c6SStefano Ceccherini string1->CharacterEscape("abc", '/');
336903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
346903f4c6SStefano Ceccherini delete string1;
356903f4c6SStefano Ceccherini
366903f4c6SStefano Ceccherini // BString doesn't contain wanted characters
376903f4c6SStefano Ceccherini NextSubTest();
386903f4c6SStefano Ceccherini string1 = new BString("abcdefghi");
396903f4c6SStefano Ceccherini string1->CharacterEscape("z34", 'z');
406903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "abcdefghi") == 0);
416903f4c6SStefano Ceccherini delete string1;
426903f4c6SStefano Ceccherini
436903f4c6SStefano Ceccherini // CharacterEscape(char *, char*, char)
446903f4c6SStefano Ceccherini NextSubTest();
456903f4c6SStefano Ceccherini string1 = new BString("something");
466903f4c6SStefano Ceccherini string1->CharacterEscape("newstring", "esi", '0');
476903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "n0ew0str0ing") == 0);
486903f4c6SStefano Ceccherini delete string1;
496903f4c6SStefano Ceccherini
509f83f86cSStefano Ceccherini #ifndef TEST_R5
516903f4c6SStefano Ceccherini // assigned string is NULL
529f83f86cSStefano Ceccherini // it crashes r5 implementation, but not ours :)
539f83f86cSStefano Ceccherini NextSubTest();
549f83f86cSStefano Ceccherini string1 = new BString("something");
559f83f86cSStefano Ceccherini string1->CharacterEscape((char*)NULL, "ei", '-');
569f83f86cSStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
579f83f86cSStefano Ceccherini delete string1;
589f83f86cSStefano Ceccherini #endif
596903f4c6SStefano Ceccherini
606903f4c6SStefano Ceccherini // String was empty
616903f4c6SStefano Ceccherini NextSubTest();
626903f4c6SStefano Ceccherini string1 = new BString;
636903f4c6SStefano Ceccherini string1->CharacterEscape("newstring", "esi", '0');
646903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "n0ew0str0ing") == 0);
656903f4c6SStefano Ceccherini delete string1;
666903f4c6SStefano Ceccherini
676903f4c6SStefano Ceccherini // CharacterDeescape(char)
686903f4c6SStefano Ceccherini NextSubTest();
696903f4c6SStefano Ceccherini string1 = new BString("/a/nh/g/bhhgy/fgtuhjkb/");
706903f4c6SStefano Ceccherini string1->CharacterDeescape('/');
716903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "anhgbhhgyfgtuhjkb") == 0);
726903f4c6SStefano Ceccherini delete string1;
736903f4c6SStefano Ceccherini
746903f4c6SStefano Ceccherini // String was empty
756903f4c6SStefano Ceccherini NextSubTest();
766903f4c6SStefano Ceccherini string1 = new BString;
776903f4c6SStefano Ceccherini string1->CharacterDeescape('/');
786903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
796903f4c6SStefano Ceccherini delete string1;
806903f4c6SStefano Ceccherini
816903f4c6SStefano Ceccherini // String doesn't contain character to escape
826903f4c6SStefano Ceccherini NextSubTest();
836903f4c6SStefano Ceccherini string1 = new BString("/a/nh/g/bhhgy/fgtuhjkb/");
846903f4c6SStefano Ceccherini string1->CharacterDeescape('-');
856903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "/a/nh/g/bhhgy/fgtuhjkb/") == 0);
866903f4c6SStefano Ceccherini delete string1;
876903f4c6SStefano Ceccherini
886903f4c6SStefano Ceccherini // CharacterDeescape(char* original, char)
896903f4c6SStefano Ceccherini NextSubTest();
906903f4c6SStefano Ceccherini string1 = new BString("oldString");
916903f4c6SStefano Ceccherini string1->CharacterDeescape("-ne-ws-tri-ng-", '-');
926903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "newstring") == 0);
936903f4c6SStefano Ceccherini delete string1;
946903f4c6SStefano Ceccherini
956903f4c6SStefano Ceccherini // String was empty
966903f4c6SStefano Ceccherini NextSubTest();
976903f4c6SStefano Ceccherini string1 = new BString;
986903f4c6SStefano Ceccherini string1->CharacterDeescape("new/str/ing", '/');
996903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "newstring") == 0);
1006903f4c6SStefano Ceccherini delete string1;
1016903f4c6SStefano Ceccherini
1029f83f86cSStefano Ceccherini #ifndef TEST_R5
1036903f4c6SStefano Ceccherini // assigned string is empty
1049f83f86cSStefano Ceccherini // it crashes r5 implementation, but not ours :)
1059f83f86cSStefano Ceccherini NextSubTest();
1069f83f86cSStefano Ceccherini string1 = new BString("pippo");
1079f83f86cSStefano Ceccherini string1->CharacterDeescape((char*)NULL, '/');
1089f83f86cSStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
1099f83f86cSStefano Ceccherini delete string1;
1109f83f86cSStefano Ceccherini #endif
1116903f4c6SStefano Ceccherini
1126903f4c6SStefano Ceccherini // String doesn't contain character to escape
1136903f4c6SStefano Ceccherini NextSubTest();
1146903f4c6SStefano Ceccherini string1 = new BString("Old");
1156903f4c6SStefano Ceccherini string1->CharacterDeescape("/a/nh/g/bhhgy/fgtuhjkb/", '-');
1166903f4c6SStefano Ceccherini CPPUNIT_ASSERT(strcmp(string1->String(), "/a/nh/g/bhhgy/fgtuhjkb/") == 0);
1176903f4c6SStefano Ceccherini delete string1;
118dd2406ebSStefano Ceccherini }
119dd2406ebSStefano Ceccherini
120dd2406ebSStefano Ceccherini
suite(void)121dd2406ebSStefano Ceccherini CppUnit::Test *StringEscapeTest::suite(void)
122dd2406ebSStefano Ceccherini {
123dd2406ebSStefano Ceccherini typedef CppUnit::TestCaller<StringEscapeTest>
124dd2406ebSStefano Ceccherini StringEscapeTestCaller;
125dd2406ebSStefano Ceccherini
126*f960e7e9Skrish_iyer return(new StringEscapeTestCaller("BString::Escape Test",
127*f960e7e9Skrish_iyer &StringEscapeTest::PerformTest));
128dd2406ebSStefano Ceccherini }
129