xref: /haiku/src/tests/kits/support/bstring/StringEscapeTest.cpp (revision f960e7e9a2b236d50e202d5c46b4d759d46b233a)
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