1#include "StringEscapeTest.h"
2#include "cppunit/TestCaller.h"
3#include <String.h>
4
5
6StringEscapeTest::StringEscapeTest(std::string name)
7		: BTestCase(name)
8{
9}
10
11
12StringEscapeTest::~StringEscapeTest()
13{
14}
15
16
17void
18StringEscapeTest::PerformTest(void)
19{
20	BString *string1;
21
22	// CharacterEscape(char*, char)
23	NextSubTest();
24	string1 = new BString("abcdefghi");
25	string1->CharacterEscape("acf", '/');
26	CPPUNIT_ASSERT(strcmp(string1->String(), "/ab/cde/fghi") == 0);
27	delete string1;
28
29	// BString is null
30	NextSubTest();
31	string1 = new BString;
32	string1->CharacterEscape("abc", '/');
33	CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
34	delete string1;
35
36	// BString doesn't contain wanted characters
37	NextSubTest();
38	string1 = new BString("abcdefghi");
39	string1->CharacterEscape("z34", 'z');
40	CPPUNIT_ASSERT(strcmp(string1->String(), "abcdefghi") == 0);
41	delete string1;
42
43	// CharacterEscape(char *, char*, char)
44	NextSubTest();
45	string1 = new BString("something");
46	string1->CharacterEscape("newstring", "esi", '0');
47	CPPUNIT_ASSERT(strcmp(string1->String(), "n0ew0str0ing") == 0);
48	delete string1;
49
50#ifndef TEST_R5
51	// assigned string is NULL
52	// it crashes r5 implementation, but not ours :)
53	NextSubTest();
54	string1 = new BString("something");
55	string1->CharacterEscape((char*)NULL, "ei", '-');
56	CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
57	delete string1;
58#endif
59
60	// String was empty
61	NextSubTest();
62	string1 = new BString;
63	string1->CharacterEscape("newstring", "esi", '0');
64	CPPUNIT_ASSERT(strcmp(string1->String(), "n0ew0str0ing") == 0);
65	delete string1;
66
67	// CharacterDeescape(char)
68	NextSubTest();
69	string1 = new BString("/a/nh/g/bhhgy/fgtuhjkb/");
70	string1->CharacterDeescape('/');
71	CPPUNIT_ASSERT(strcmp(string1->String(), "anhgbhhgyfgtuhjkb") == 0);
72	delete string1;
73
74	// String was empty
75	NextSubTest();
76	string1 = new BString;
77	string1->CharacterDeescape('/');
78	CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
79	delete string1;
80
81	// String doesn't contain character to escape
82	NextSubTest();
83	string1 = new BString("/a/nh/g/bhhgy/fgtuhjkb/");
84	string1->CharacterDeescape('-');
85	CPPUNIT_ASSERT(strcmp(string1->String(), "/a/nh/g/bhhgy/fgtuhjkb/") == 0);
86	delete string1;
87
88	// CharacterDeescape(char* original, char)
89	NextSubTest();
90	string1 = new BString("oldString");
91	string1->CharacterDeescape("-ne-ws-tri-ng-", '-');
92	CPPUNIT_ASSERT(strcmp(string1->String(), "newstring") == 0);
93	delete string1;
94
95	// String was empty
96	NextSubTest();
97	string1 = new BString;
98	string1->CharacterDeescape("new/str/ing", '/');
99	CPPUNIT_ASSERT(strcmp(string1->String(), "newstring") == 0);
100	delete string1;
101
102#ifndef TEST_R5
103	// assigned string is empty
104	// it crashes r5 implementation, but not ours :)
105	NextSubTest();
106	string1 = new BString("pippo");
107	string1->CharacterDeescape((char*)NULL, '/');
108	CPPUNIT_ASSERT(strcmp(string1->String(), "") == 0);
109	delete string1;
110#endif
111
112	// String doesn't contain character to escape
113	NextSubTest();
114	string1 = new BString("Old");
115	string1->CharacterDeescape("/a/nh/g/bhhgy/fgtuhjkb/", '-');
116	CPPUNIT_ASSERT(strcmp(string1->String(), "/a/nh/g/bhhgy/fgtuhjkb/") == 0);
117	delete string1;
118}
119
120
121CppUnit::Test *StringEscapeTest::suite(void)
122{
123	typedef CppUnit::TestCaller<StringEscapeTest>
124		StringEscapeTestCaller;
125
126	return(new StringEscapeTestCaller("BString::Escape Test",
127		&StringEscapeTest::PerformTest));
128}
129