-//%/////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-//==============================================================================
-//
-// Author: Mike Brasher (mbrasher@bmc.com)
-//
-// Modified By:
-//
-//%/////////////////////////////////////////////////////////////////////////////
-//%/////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-//==============================================================================
-//
-// Author: Mike Brasher (mbrasher@bmc.com)
-//
-// Modified By:
-//
-//%/////////////////////////////////////////////////////////////////////////////
-
-
-#include <cassert>
-#include <strstream>
-#include <Pegasus/Common/String.h>
-
-PEGASUS_USING_PEGASUS;
-PEGASUS_USING_STD;
-#include <Pegasus/Common/Exception.h>
-
-static void TestSplit()
-{
- {
- String line = " a b \"c d e\" fff \"\" gggg";
- Array<String> fields;
- String::split(line, fields);
- assert(fields.size() == 6);
- assert(fields[0] == "a");
- assert(fields[1] == "b");
- assert(fields[2] == "c d e");
- assert(fields[3] == "fff");
- assert(fields[4] == "");
- assert(fields[5] == "gggg");
- }
-
- {
- String line = "";
- Array<String> fields;
- String::split(line, fields);
- assert(fields.size() == 0);
- }
-
- {
- String line = "hello";
- Array<String> fields;
- String::split(line, fields);
- assert(fields.size() == 1);
- assert(fields[0] == "hello");
- }
-
- {
- String line;
- Array<String> fields;
- fields.append("one");
- fields.append("two \"three\" four");
- fields.append("five");
- String::join(fields, line);
- Boolean result = line == "one \"two \\\"three\\\" four\" five";
- assert(result);
-
- fields.clear();
- String::split(line, fields);
- assert(fields.size() == 3);
- assert(fields[0] == "one");
- result = fields[1] == "two \"three\" four";
- assert(result);
- assert(fields[2] == "five");
- }
-
- {
- Array<String> fields;
- fields.append("./associations.txt");
- fields.append("A.left=\"x.key=\\\"one\\\"\",right=\"y.key=\\\"two\\\"\"");
- fields.append("A");
- fields.append("X.key=\"one\"");
- fields.append("X");
- fields.append("left");
- fields.append("Y");
- fields.append("right");
- fields.append("Y.key=\"two\"");
-
- String line;
- String::join(fields, line);
-
- Array<String> tmpFields;
- String::split(line, tmpFields);
-
- assert(tmpFields.size() == fields.size());
- for (Uint32 i = 0; i < fields.size(); i++)
- assert(fields[i] == tmpFields[i]);
- }
-}
-
-int main()
-{
- String s1 = "Hello World";
- String s2 = s1;
- String s3(s2);
-
- assert(String::equal(s1, s3));
-
- // Test append characters to String
- String s4 = "Hello";
- s4.append(Char16(0x0000));
- s4.append(Char16(0x1234));
- s4.append(Char16(0x5678));
- s4.append(Char16(0x9cde));
- s4.append(Char16(0xffff));
-
- {
- ostrstream os;
- os << s4;
- os.put('\0');
- const char EXPECTED[] = "Hello\\x0000\\x1234\\x5678\\x9CDE\\xFFFF";
- char* tmp = os.str();
- assert(strcmp(EXPECTED, tmp) == 0);
- delete [] tmp;
- }
-
- {
- // Test allocateCString
- const char STR0[] = "one two three four";
- String s = STR0;
- char* tmp = s.allocateCString();
- assert(strcmp(tmp, STR0) == 0);
- const char STR1[] = "zero ";
- delete [] tmp;
- }
-
- {
- // Test appendToCString
- const char STR0[] = "one two three four";
- String s = STR0;
- const char STR1[] = "zero ";
- char* tmp = new char[strlen(STR1) + s.size() + 1];
- strcpy(tmp, STR1);
- s.appendToCString(tmp);
- assert(strcmp(tmp, "zero one two three four") == 0);
- delete [] tmp;
- }
-
- {
- // Test appendToCString with length parameter
- const char STR0[] = "one two three four";
- String s = STR0;
- const char STR1[] = "zero ";
- char* tmp = new char[strlen(STR1) + s.size() + 1];
- strcpy(tmp, STR1);
- s.appendToCString(tmp, 7);
- assert(strcmp(tmp, "zero one two") == 0);
- delete [] tmp;
- }
-
- {
- // Test remove
- String s = "abcdefg";
- s.remove(3, 3);
- assert(String::equal(s, "abcg"));
- assert(s.size() == 4);
-
- s = "abcdefg";
- s.remove(3, 4);
- assert(String::equal(s, "abc"));
- assert(s.size() == 3);
-
- s = "abcdefg";
- s.remove(3);
- assert(String::equal(s, "abc"));
- assert(s.size() == 3);
-
- s = "abc";
- s.remove(3);
- assert(String::equal(s, "abc"));
- assert(s.size() == 3);
-
- s = "abc";
- s.remove(0);
- assert(String::equal(s, ""));
- assert(s.size() == 0);
-
- s = "abc";
- s.remove(0, 1);
- assert(String::equal(s, "bc"));
- assert(s.size() == 2);
-
- String t1 = "HELLO";
- String t2 = ToLower(t1);
- assert(String::equal(t1, "HELLO"));
- assert(String::equal(t2, "hello"));
- }
-
- // Test of the different overload operators
- {
- // test the append overload operator +=;
- String t1 = "one";
- t1 += " two";
- assert(String::equal(t1, "one two"));
- t1 += ' ';
- t1 += 't';
- t1 += 'h';
- t1 += 'r';
- t1 += "ee";
- assert(String::equal(t1,"one two three"));
-
- // used as example in Doc.
- String test = "abc";
- test += "def";
- assert(test == "abcdef");
- }
-
- {
- // Test the == overload operator
- String t1 = "one";
- String t2 = "one";
- assert(t1 == "one");
- assert("one" == t1);
- assert(t1 == t2);
- assert(t2 == t1);
- assert(String("one") == "one");
-
- const char STR0[] = "one two three four";
- String s = STR0;
- char* tmp = s.allocateCString();
- assert(tmp == s);
- assert(s == tmp);
- delete [] tmp;
- }
-
- {
- // Tests of the + Overload operator
- String t1 = "abc";
- String t2 = t1 + t1;
- assert(t2 == "abcabc");
- t1 = "abc";
- t2 = t1 + "def";
- assert(t2 == "abcdef");
-
- t1 = "ghi";
- assert(t1 == "ghi");
-
- // ATTN: the following fails because there
- // is no single character overload operator
- // KS: Apr 2001
- // t2 = t1 + 'k' + 'l' + 'm' + "nop";
- t2 = t1 + "k" + "l" + "m" + "nop";
- assert(t2 == "ghiklmnop");
- assert(String::equal(t2,"ghiklmnop"));
-
- // add tests for != operator.
-
- t1 = "abc";
- assert(t1 != "ghi");
- assert(t1 != t2);
-
- // add tests for other compare operators
-
- // Operater <
- t1 = "ab";
- t2 = "cde";
- assert(t1 < t2);
- assert(t1 <= t2);
- assert(t2 > t1);
- assert(t2 >=t1);
- t2 = t1;
- assert(t1 <= t2);
- assert(t1 >= t2);
-
- // comparison and equals
- // the compare is for null term strings.
- // Therefore following does not work
- // the compare operators cover the problem
- // for String objects.
- // assert(String::compare(t1,t2) == -1);
-
-
- // Tests for compare with same length
- t1 = "abc";
- t2 = "def";
- assert(t1 < t2);
-
- // comparison and equals
- // compare is for null term strings
- // therefore following does not work.
- //assert(String::compare(t1,t2) == -1);
- }
-
- {
- // Test of the [] operator
- String t1 = "abc";
- Char16 c = t1[1];
- // note c is Char16
- assert(c == 'b');
-
- //ATTN: test for outofbounds exception
- try
- {
- c = t1[200];
- }
- catch (OutOfBounds&)
- {
- assert(true);
- }
- }
-
- {
- // Test the find function
- String t1 = "abcdef";
- String t2 = "cde";
- String t3 = "xyz";
- String t4 = "abc";
- String t5 = "abd";
- String t6 = "defg";
- assert(t1.find('c') == 2);
- assert(t1.find(t2)==2);
- assert(t1.find(t3)==(Uint32)-1);
- assert(t1.find(t4)==0);
- assert(t1.find(t5)==(Uint32)-1);
- assert(t1.find(t6)==(Uint32)-1);
- assert(t1.find("cde")==2);
- assert(t1.find("def")==3);
- assert(t1.find("xyz")==(Uint32)-1);
- assert(t1.find("a") ==0);
-
- // test for the case where string
- // partly occurs and then later
- // completely occurs
- String s = "this is an apple";
- assert(s.find("apple")==11);
- assert(s.find("appld")==(Uint32)-1);
- assert(s.find("this")==0);
- assert(s.find("t")==0);
- assert(s.find("e")==15);
- s = "a";
- assert(s.find("b")==(Uint32)-1);
- assert(s.find("a")==0);
- assert(s.find(s)==0);
- s = "aaaapple";
- assert(s.find("apple")==3);
-
- {
- String nameSpace = "a#b#c";
- nameSpace.translate('#', '/');
- assert(nameSpace == "a/b/c");
- }
-
- TestSplit();
- }
-
-
- cout << "+++++ passed all tests" << endl;
-
- return 0;
-}
+//%/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM\r
+//\r
+// Permission is hereby granted, free of charge, to any person obtaining a copy\r
+// of this software and associated documentation files (the "Software"), to \r
+// deal in the Software without restriction, including without limitation the \r
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or \r
+// sell copies of the Software, and to permit persons to whom the Software is\r
+// furnished to do so, subject to the following conditions:\r
+// \r
+// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN \r
+// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED\r
+// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\r
+// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR \r
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT \r
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN \r
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+//\r
+//==============================================================================\r
+//%/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM\r
+//\r
+// Permission is hereby granted, free of charge, to any person obtaining a copy\r
+// of this software and associated documentation files (the "Software"), to \r
+// deal in the Software without restriction, including without limitation the \r
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or \r
+// sell copies of the Software, and to permit persons to whom the Software is\r
+// furnished to do so, subject to the following conditions:\r
+// \r
+// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN \r
+// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED\r
+// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT\r
+// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR \r
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT \r
+// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN \r
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+//\r
+//==============================================================================\r
+//\r
+// Author: Mike Brasher (mbrasher@bmc.com)\r
+//\r
+// Modified By:\r
+//\r
+//\r
+// Author: Mike Brasher (mbrasher@bmc.com)\r
+//\r
+// Modified By:\r
+//\r
+//%/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+#include <cassert>\r
+#include <strstream>\r
+#include <Pegasus/Common/String.h>\r
+\r
+PEGASUS_USING_PEGASUS;\r
+PEGASUS_USING_STD;\r
+#include <Pegasus/Common/Exception.h>\r
+\r
+static void TestSplit()\r
+{\r
+ {\r
+ String line = " a b \"c d e\" fff \"\" gggg";\r
+ Array<String> fields;\r
+ String::split(line, fields);\r
+ assert(fields.size() == 6);\r
+ assert(fields[0] == "a");\r
+ assert(fields[1] == "b");\r
+ assert(fields[2] == "c d e");\r
+ assert(fields[3] == "fff");\r
+ assert(fields[4] == "");\r
+ assert(fields[5] == "gggg");\r
+ }\r
+\r
+ {\r
+ String line = "";\r
+ Array<String> fields;\r
+ String::split(line, fields);\r
+ assert(fields.size() == 0);\r
+ }\r
+\r
+ {\r
+ String line = "hello";\r
+ Array<String> fields;\r
+ String::split(line, fields);\r
+ assert(fields.size() == 1);\r
+ assert(fields[0] == "hello");\r
+ }\r
+\r
+ {\r
+ String line;\r
+ Array<String> fields;\r
+ fields.append("one");\r
+ fields.append("two \"three\" four");\r
+ fields.append("five");\r
+ String::join(fields, line);\r
+ Boolean result = line == "one \"two \\\"three\\\" four\" five";\r
+ assert(result);\r
+\r
+ fields.clear();\r
+ String::split(line, fields);\r
+ assert(fields.size() == 3);\r
+ assert(fields[0] == "one");\r
+ result = fields[1] == "two \"three\" four";\r
+ assert(result);\r
+ assert(fields[2] == "five");\r
+ }\r
+\r
+ {\r
+ Array<String> fields;\r
+ fields.append("./associations.txt");\r
+ fields.append("A.left=\"x.key=\\\"one\\\"\",right=\"y.key=\\\"two\\\"\"");\r
+ fields.append("A");\r
+ fields.append("X.key=\"one\"");\r
+ fields.append("X");\r
+ fields.append("left");\r
+ fields.append("Y");\r
+ fields.append("right");\r
+ fields.append("Y.key=\"two\"");\r
+\r
+ String line;\r
+ String::join(fields, line);\r
+\r
+ Array<String> tmpFields;\r
+ String::split(line, tmpFields);\r
+\r
+ assert(tmpFields.size() == fields.size());\r
+ for (Uint32 i = 0; i < fields.size(); i++)\r
+ assert(fields[i] == tmpFields[i]);\r
+ }\r
+}\r
+\r
+int main()\r
+{\r
+ String s1 = "Hello World";\r
+ String s2 = s1;\r
+ String s3(s2);\r
+\r
+ assert(String::equal(s1, s3));\r
+\r
+ // Test append characters to String\r
+ String s4 = "Hello";\r
+ s4.append(Char16(0x0000));\r
+ s4.append(Char16(0x1234));\r
+ s4.append(Char16(0x5678));\r
+ s4.append(Char16(0x9cde));\r
+ s4.append(Char16(0xffff));\r
+\r
+ {\r
+ ostrstream os;\r
+ os << s4;\r
+ os.put('\0');\r
+ const char EXPECTED[] = "Hello\\x0000\\x1234\\x5678\\x9CDE\\xFFFF";\r
+ char* tmp = os.str();\r
+ assert(strcmp(EXPECTED, tmp) == 0);\r
+ delete [] tmp;\r
+ }\r
+\r
+ {\r
+ // Test allocateCString\r
+ const char STR0[] = "one two three four";\r
+ String s = STR0;\r
+ char* tmp = s.allocateCString();\r
+ assert(strcmp(tmp, STR0) == 0);\r
+ const char STR1[] = "zero ";\r
+ delete [] tmp;\r
+ }\r
+\r
+ {\r
+ // Test appendToCString \r
+ const char STR0[] = "one two three four";\r
+ String s = STR0;\r
+ const char STR1[] = "zero ";\r
+ char* tmp = new char[strlen(STR1) + s.size() + 1];\r
+ strcpy(tmp, STR1);\r
+ s.appendToCString(tmp);\r
+ assert(strcmp(tmp, "zero one two three four") == 0);\r
+ delete [] tmp;\r
+ }\r
+\r
+ {\r
+ // Test appendToCString with length parameter\r
+ const char STR0[] = "one two three four";\r
+ String s = STR0;\r
+ const char STR1[] = "zero ";\r
+ char* tmp = new char[strlen(STR1) + s.size() + 1];\r
+ strcpy(tmp, STR1);\r
+ s.appendToCString(tmp, 7);\r
+ assert(strcmp(tmp, "zero one two") == 0);\r
+ delete [] tmp;\r
+ }\r
+\r
+ {\r
+ // Test remove\r
+ String s = "abcdefg";\r
+ s.remove(3, 3);\r
+ assert(String::equal(s, "abcg"));\r
+ assert(s.size() == 4);\r
+\r
+ s = "abcdefg";\r
+ s.remove(3, 4);\r
+ assert(String::equal(s, "abc"));\r
+ assert(s.size() == 3);\r
+\r
+ s = "abcdefg";\r
+ s.remove(3);\r
+ assert(String::equal(s, "abc"));\r
+ assert(s.size() == 3);\r
+\r
+ s = "abc";\r
+ s.remove(3);\r
+ assert(String::equal(s, "abc"));\r
+ assert(s.size() == 3);\r
+\r
+ s = "abc";\r
+ s.remove(0);\r
+ assert(String::equal(s, ""));\r
+ assert(s.size() == 0);\r
+\r
+ s = "abc";\r
+ s.remove(0, 1);\r
+ assert(String::equal(s, "bc"));\r
+ assert(s.size() == 2);\r
+\r
+ String t1 = "HELLO";\r
+ String t2 = ToLower(t1);\r
+ assert(String::equal(t1, "HELLO"));\r
+ assert(String::equal(t2, "hello"));\r
+ }\r
+\r
+ // Test of the different overload operators\r
+ {\r
+ // test the append overload operator +=;\r
+ String t1 = "one";\r
+ t1 += " two";\r
+ assert(String::equal(t1, "one two"));\r
+ t1 += ' ';\r
+ t1 += 't';\r
+ t1 += 'h';\r
+ t1 += 'r';\r
+ t1 += "ee";\r
+ assert(String::equal(t1,"one two three"));\r
+ \r
+ // used as example in Doc.\r
+ String test = "abc";\r
+ test += "def";\r
+ assert(test == "abcdef");\r
+ }\r
+\r
+ {\r
+ // Test the == overload operator\r
+ String t1 = "one";\r
+ String t2 = "one";\r
+ assert(t1 == "one");\r
+ assert("one" == t1);\r
+ assert(t1 == t2);\r
+ assert(t2 == t1);\r
+ assert(String("one") == "one");\r
+\r
+ const char STR0[] = "one two three four";\r
+ String s = STR0;\r
+ char* tmp = s.allocateCString();\r
+ assert(tmp == s);\r
+ assert(s == tmp);\r
+ delete [] tmp;\r
+ }\r
+\r
+ {\r
+ // Tests of the + Overload operator\r
+ String t1 = "abc";\r
+ String t2 = t1 + t1;\r
+ assert(t2 == "abcabc");\r
+ t1 = "abc";\r
+ t2 = t1 + "def";\r
+ assert(t2 == "abcdef");\r
+\r
+ t1 = "ghi";\r
+ assert(t1 == "ghi");\r
+\r
+ // ATTN: the following fails because there\r
+ // is no single character overload operator\r
+ // KS: Apr 2001\r
+ // t2 = t1 + 'k' + 'l' + 'm' + "nop";\r
+ t2 = t1 + "k" + "l" + "m" + "nop";\r
+ assert(t2 == "ghiklmnop");\r
+ assert(String::equal(t2,"ghiklmnop"));\r
+\r
+ // add tests for != operator.\r
+\r
+ t1 = "abc";\r
+ assert(t1 != "ghi");\r
+ assert(t1 != t2);\r
+\r
+ // add tests for other compare operators\r
+\r
+ // Operater <\r
+ t1 = "ab";\r
+ t2 = "cde";\r
+ assert(t1 < t2);\r
+ assert(t1 <= t2);\r
+ assert(t2 > t1);\r
+ assert(t2 >=t1);\r
+ t2 = t1;\r
+ assert(t1 <= t2);\r
+ assert(t1 >= t2);\r
+\r
+ // comparison and equals\r
+ // the compare is for null term strings.\r
+ // Therefore following does not work\r
+ // the compare operators cover the problem\r
+ // for String objects.\r
+ // assert(String::compare(t1,t2) == -1);\r
+\r
+\r
+ // Tests for compare with same length\r
+ t1 = "abc";\r
+ t2 = "def";\r
+ assert(t1 < t2);\r
+\r
+ // comparison and equals\r
+ // compare is for null term strings\r
+ // therefore following does not work.\r
+ //assert(String::compare(t1,t2) == -1); \r
+ }\r
+\r
+ {\r
+ // Test of the [] operator\r
+ String t1 = "abc";\r
+ Char16 c = t1[1];\r
+ // note c is Char16\r
+ assert(c == 'b');\r
+\r
+ //ATTN: test for outofbounds exception\r
+ try\r
+ {\r
+ c = t1[200];\r
+ }\r
+ catch (OutOfBounds&)\r
+ {\r
+ assert(true);\r
+ }\r
+ }\r
+\r
+ {\r
+ // Test the find function\r
+ String t1 = "abcdef";\r
+ String t2 = "cde";\r
+ String t3 = "xyz";\r
+ String t4 = "abc";\r
+ String t5 = "abd";\r
+ String t6 = "defg";\r
+ assert(t1.find('c') == 2);\r
+ assert(t1.find(t2)==2);\r
+ assert(t1.find(t3)==(Uint32)-1);\r
+ assert(t1.find(t4)==0);\r
+ assert(t1.find(t5)==(Uint32)-1);\r
+ assert(t1.find(t6)==(Uint32)-1);\r
+ assert(t1.find("cde")==2);\r
+ assert(t1.find("def")==3);\r
+ assert(t1.find("xyz")==(Uint32)-1);\r
+ assert(t1.find("a") ==0);\r
+\r
+ // test for the case where string\r
+ // partly occurs and then later\r
+ // completely occurs\r
+ String s = "this is an apple";\r
+ assert(s.find("apple")==11);\r
+ assert(s.find("appld")==(Uint32)-1);\r
+ assert(s.find("this")==0);\r
+ assert(s.find("t")==0);\r
+ assert(s.find("e")==15);\r
+ s = "a";\r
+ assert(s.find("b")==(Uint32)-1);\r
+ assert(s.find("a")==0);\r
+ assert(s.find(s)==0);\r
+ s = "aaaapple";\r
+ assert(s.find("apple")==3);\r
+\r
+ {\r
+ String nameSpace = "a#b#c";\r
+ nameSpace.translate('#', '/');\r
+ assert(nameSpace == "a/b/c");\r
+ }\r
+\r
+ TestSplit();\r
+ }\r
+\r
+\r
+ cout << "+++++ passed all tests" << endl;\r
+\r
+ return 0;\r
+}\r