From 7e25a863325dc3e9762397e700030969e093b087 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Thu, 20 Jan 2011 07:48:57 +0000 Subject: Heh, forgot to rename the two fstring tests. --- src/tests/fstring.cpp | 154 ---------------------- src/tests/string.cpp | 154 ++++++++++++++++++++++ src/unit/fstring.unit | 351 -------------------------------------------------- src/unit/string.unit | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 505 insertions(+), 505 deletions(-) delete mode 100644 src/tests/fstring.cpp create mode 100644 src/tests/string.cpp delete mode 100644 src/unit/fstring.unit create mode 100644 src/unit/string.unit diff --git a/src/tests/fstring.cpp b/src/tests/fstring.cpp deleted file mode 100644 index 12ce8a8..0000000 --- a/src/tests/fstring.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (C) 2007-2011 Xagasoft, All rights reserved. - * - * This file is part of the libbu++ library and is released under the - * terms of the license contained in the file LICENSE. - */ - -#include "bu/hash.h" -#include "bu/string.h" -#include -#include - -#ifndef WIN32 -inline double getTime() -{ - struct timeval tv; - gettimeofday( &tv, NULL ); - return ((double)tv.tv_sec) + ((double)tv.tv_usec/1000000.0); -} -#else -#include "windows.h" -#include "winbase.h" -inline double getTime() -{ - uint32_t t = (uint32_t) GetTickCount(); - return (double) t / 1000.0; -} -#endif - -Bu::String genThing() -{ - Bu::String bob; - bob.append("ab "); - bob += "cd "; - bob += "efg"; - - printf("---bob------\n%08tX: %s\n", (ptrdiff_t)bob.getStr(), - bob.getStr() ); - return bob; -} - -void thing( Bu::String str ) -{ - printf("Hey: %s\n", str.getStr() ); -} - -void copyfunc( std::string temp ) -{ - temp += "Hi"; -} - -void copyfunc( Bu::String temp ) -{ - temp += "Hi"; -} - -void doTimings() -{ - Bu::String fs1, fs2; - std::string ss1, ss2; - double dStart, dEnd, tfs1, tfs2, tfs3, tss1, tss2, tss3; - int nChars = 500000, nChunks=5000, nCopies=5000000, nChunkSize=1024*4; - char *buf = new char[nChunkSize]; - memset( buf, '!', nChunkSize ); - - printf("Timing Bu::String single chars...\n"); - dStart = getTime(); - for( int j = 0; j < nChars; j++ ) fs1 += (char)('a'+(j%26)); - fs1.getStr(); - dEnd = getTime(); - tfs1 = dEnd-dStart; - - printf("Timing std::string single chars...\n"); - dStart = getTime(); - for( int j = 0; j < nChars; j++ ) ss1 += (char)('a'+(j%26)); - ss1.c_str(); - dEnd = getTime(); - tss1 = dEnd-dStart; - - printf("Timing Bu::String %d char chunks...\n", nChunkSize); - dStart = getTime(); - for( int j = 0; j < nChunks; j++ ) fs2.append(buf, nChunkSize); - fs2.getStr(); - dEnd = getTime(); - tfs2 = dEnd-dStart; - - printf("Timing std::string %d char chunks...\n", nChunkSize); - dStart = getTime(); - for( int j = 0; j < nChunks; j++ ) ss2.append(buf, nChunkSize); - ss2.c_str(); - dEnd = getTime(); - tss2 = dEnd-dStart; - - fs2 = "Hello there."; - ss2 = "Hello there."; - printf("Timing Bu::String copies...\n"); - dStart = getTime(); - for( int j = 0; j < nCopies; j++ ) Bu::String stmp = fs2; - dEnd = getTime(); - tfs3 = dEnd-dStart; - - printf("Timing std::string copies...\n"); - dStart = getTime(); - for( int j = 0; j < nCopies; j++ ) std::string stpm = ss2; - dEnd = getTime(); - tss3 = dEnd-dStart; - - printf( - "Results: singles: chunks: copies:\n" - "Bu::String %10.2f/s %10.2f/s %10.2f/s\n" - "std::string %10.2f/s %10.2f/s %10.2f/s\n", - nChars/tfs1, nChunks/tfs2, nCopies/tfs3, - nChars/tss1, nChunks/tss2, nCopies/tss3 ); - - delete[] buf; -} - -#define pem printf("---------\n%08tX: %s\n%08tX: %s\n", (ptrdiff_t)str.getStr(), str.getStr(), (ptrdiff_t)str2.getStr(), str2.getStr() ); -int main( ) -{ - Bu::String fs1; - for( int j = 0; j < 500000; j++ ) fs1 += (char)('a'+(j%26)); - return 0; - - Bu::String str("th"); - - str.prepend("Hello "); - str.append("ere."); - - Bu::String str2( str ); - pem; - str += " What's up?"; - pem; - str2 += " How are you?"; - pem; - str = str2; - pem; - - str2 = genThing(); - pem; - - str = str2; - pem; - - thing( str2 ); - thing("test."); - - printf("%d == %d\n", Bu::__calcHashCode( str ), Bu::__calcHashCode( str.getStr() ) ); - - doTimings(); - - return 0; -} - diff --git a/src/tests/string.cpp b/src/tests/string.cpp new file mode 100644 index 0000000..12ce8a8 --- /dev/null +++ b/src/tests/string.cpp @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2007-2011 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#include "bu/hash.h" +#include "bu/string.h" +#include +#include + +#ifndef WIN32 +inline double getTime() +{ + struct timeval tv; + gettimeofday( &tv, NULL ); + return ((double)tv.tv_sec) + ((double)tv.tv_usec/1000000.0); +} +#else +#include "windows.h" +#include "winbase.h" +inline double getTime() +{ + uint32_t t = (uint32_t) GetTickCount(); + return (double) t / 1000.0; +} +#endif + +Bu::String genThing() +{ + Bu::String bob; + bob.append("ab "); + bob += "cd "; + bob += "efg"; + + printf("---bob------\n%08tX: %s\n", (ptrdiff_t)bob.getStr(), + bob.getStr() ); + return bob; +} + +void thing( Bu::String str ) +{ + printf("Hey: %s\n", str.getStr() ); +} + +void copyfunc( std::string temp ) +{ + temp += "Hi"; +} + +void copyfunc( Bu::String temp ) +{ + temp += "Hi"; +} + +void doTimings() +{ + Bu::String fs1, fs2; + std::string ss1, ss2; + double dStart, dEnd, tfs1, tfs2, tfs3, tss1, tss2, tss3; + int nChars = 500000, nChunks=5000, nCopies=5000000, nChunkSize=1024*4; + char *buf = new char[nChunkSize]; + memset( buf, '!', nChunkSize ); + + printf("Timing Bu::String single chars...\n"); + dStart = getTime(); + for( int j = 0; j < nChars; j++ ) fs1 += (char)('a'+(j%26)); + fs1.getStr(); + dEnd = getTime(); + tfs1 = dEnd-dStart; + + printf("Timing std::string single chars...\n"); + dStart = getTime(); + for( int j = 0; j < nChars; j++ ) ss1 += (char)('a'+(j%26)); + ss1.c_str(); + dEnd = getTime(); + tss1 = dEnd-dStart; + + printf("Timing Bu::String %d char chunks...\n", nChunkSize); + dStart = getTime(); + for( int j = 0; j < nChunks; j++ ) fs2.append(buf, nChunkSize); + fs2.getStr(); + dEnd = getTime(); + tfs2 = dEnd-dStart; + + printf("Timing std::string %d char chunks...\n", nChunkSize); + dStart = getTime(); + for( int j = 0; j < nChunks; j++ ) ss2.append(buf, nChunkSize); + ss2.c_str(); + dEnd = getTime(); + tss2 = dEnd-dStart; + + fs2 = "Hello there."; + ss2 = "Hello there."; + printf("Timing Bu::String copies...\n"); + dStart = getTime(); + for( int j = 0; j < nCopies; j++ ) Bu::String stmp = fs2; + dEnd = getTime(); + tfs3 = dEnd-dStart; + + printf("Timing std::string copies...\n"); + dStart = getTime(); + for( int j = 0; j < nCopies; j++ ) std::string stpm = ss2; + dEnd = getTime(); + tss3 = dEnd-dStart; + + printf( + "Results: singles: chunks: copies:\n" + "Bu::String %10.2f/s %10.2f/s %10.2f/s\n" + "std::string %10.2f/s %10.2f/s %10.2f/s\n", + nChars/tfs1, nChunks/tfs2, nCopies/tfs3, + nChars/tss1, nChunks/tss2, nCopies/tss3 ); + + delete[] buf; +} + +#define pem printf("---------\n%08tX: %s\n%08tX: %s\n", (ptrdiff_t)str.getStr(), str.getStr(), (ptrdiff_t)str2.getStr(), str2.getStr() ); +int main( ) +{ + Bu::String fs1; + for( int j = 0; j < 500000; j++ ) fs1 += (char)('a'+(j%26)); + return 0; + + Bu::String str("th"); + + str.prepend("Hello "); + str.append("ere."); + + Bu::String str2( str ); + pem; + str += " What's up?"; + pem; + str2 += " How are you?"; + pem; + str = str2; + pem; + + str2 = genThing(); + pem; + + str = str2; + pem; + + thing( str2 ); + thing("test."); + + printf("%d == %d\n", Bu::__calcHashCode( str ), Bu::__calcHashCode( str.getStr() ) ); + + doTimings(); + + return 0; +} + diff --git a/src/unit/fstring.unit b/src/unit/fstring.unit deleted file mode 100644 index f51e4de..0000000 --- a/src/unit/fstring.unit +++ /dev/null @@ -1,351 +0,0 @@ -// vim: syntax=cpp -/* - * Copyright (C) 2007-2011 Xagasoft, All rights reserved. - * - * This file is part of the libbu++ library and is released under the - * terms of the license contained in the file LICENSE. - */ - -#include "bu/string.h" - -#include - -suite String -{ - test compare1 - { - Bu::String b("Bob"); - unitTest( !(b == "Bobo") ); - unitTest( b == "Bob" ); - } - - test compare2 - { - Bu::String b("Bobo"); - unitTest( !(b == "Bob") ); - unitTest( b == "Bobo" ); - } - - test appendSingle - { - Bu::String b; - for( char l = 'a'; l < 'g'; l++ ) - b += l; - unitTest( b == "abcdef" ); - unitTest( strcmp( b.getStr(), "abcdef" ) == 0 ); - } - - test shared1 - { - Bu::String a("Hey there"); - Bu::String b( a ); - unitTest( a.getConstStr() == b.getConstStr() ); - b += " guy"; - unitTest( a.getConstStr() != b.getConstStr() ); - a = b; - unitTest( a.getConstStr() == b.getConstStr() ); - } - - test insert - { - Bu::String a("abcd"); - a.insert( 2, "-!-", 3 ); - unitTest( a == "ab-!-cd" ); - - a.insert( 0, "!!", 2 ); - unitTest( a == "!!ab-!-cd" ); - - a.insert( -10, "789", 3 ); - unitTest( a == "789!!ab-!-cd" ); - - a.insert( 12, "89", 2 ); - unitTest( a == "789!!ab-!-cd89" ); - - a.insert( 1203, "12", 2 ); - unitTest( a == "789!!ab-!-cd8912" ); - } - - test remove - { - Bu::String a("abHEYcd"); - a.remove( 2, 3 ); - unitTest( a == "abcd" ); - a.remove( 2, 5 ); - unitTest( a == "ab" ); - a += "cdefghijklmnop"; - a.remove( 5, 1 ); - unitTest( a == "abcdeghijklmnop" ); - } - - test add1 - { - Bu::String a("hi there"); - Bu::String b(", yeah!"); - Bu::String c = a + b; - - unitTest( c == "hi there, yeah!" ); - } - - test add2 - { - Bu::String a("hi there"); - Bu::String c = a + ", yeah!"; - - unitTest( c == "hi there, yeah!" ); - } - - test add3 - { - Bu::String a("hi there"); - Bu::String b(", yeah!"); - Bu::String c = a + ", Mr. Man" + b; - - unitTest( c == "hi there, Mr. Man, yeah!" ); - } - - test add4 - { - Bu::String b(", yeah!"); - Bu::String c = "hi there" + b; - - unitTest( c == "hi there, yeah!" ); - } - - test add5 - { - Bu::String b; - Bu::String c = "sup?"; - b += "hey, " + c; - - unitTest( b == "hey, sup?" ); - } - - test add6 - { - Bu::String a("Hello"); - char b[256] = {"Dude"}; - Bu::String c = a + "/" + b; - - unitTest( c == "Hello/Dude" ); - } - - test add7 - { - const Bu::String a("hello "); - Bu::String b(" how "); - unitTest( a == "hello " ); - unitTest( a + "dude" == "hello dude" ); - unitTest( a + "dude" + b + "are you?" == "hello dude how are you?" ); - } - - test subStr1 - { - Bu::String a("abcdefghijklmnop"); - Bu::String::iterator i = a.find('f'); - unitTest( a.getSubStr( i, Bu::String::iterator() ) == "fghijklmnop" ); - Bu::String::iterator j = i.find('l'); - unitTest( a.getSubStr( i, j ) == "fghijk" ); - } - - test compareSub1 - { - Bu::String a("just a string."); - unitTest( a.compareSub("a ", 5, 2) == true ); - unitTest( a.compareSub("string.aoeu", 7, 11 ) == false ); - unitTest( a.compareSub("string.aoeu", 7, 3 ) == true ); - } - - test compareSub2 - { - Bu::String a("just a string."); - unitTest( a.compareSub(Bu::String("a "), 5, 2) == true ); - unitTest( a.compareSub(Bu::String("string.aoeu"), 7, 11 ) == false ); - unitTest( a.compareSub(Bu::String("string.aoeu"), 7, 3 ) == true ); - } - - test iterator1 - { - Bu::String a("This is a test."); - Bu::String b; - for( Bu::String::iterator i = a.begin(); i; i++ ) - { - b += *i; - } - unitTest( a == b ); - } - - test iterator2 - { - Bu::String a("This is a test."); - Bu::String b("--This is a test."); - Bu::String::iterator ai = a.begin(); - Bu::String::iterator bi = b.begin(); - unitTest( ai.compare( bi ) == false ); - unitTest( bi.compare( ai ) == false ); - bi++; bi++; - unitTest( ai.compare( bi ) == true ); - unitTest( bi.compare( ai ) == true ); - } - - test iterator3 - { - Bu::String a("1234honour"); - Bu::String b("--1234ueje"); - Bu::String::iterator ai = a.begin(); - Bu::String::iterator bi = b.begin(); - unitTest( ai.compare( bi, 4 ) == false ); - unitTest( bi.compare( ai, 4 ) == false ); - bi++; bi++; - unitTest( ai.compare( bi, 4 ) == true ); - unitTest( bi.compare( ai, 4 ) == true ); - unitTest( ai.compare( bi, 5 ) == false ); - unitTest( bi.compare( ai, 5 ) == false ); - - } - - test iterator4 - { - Bu::String a("1234aoeu"); - Bu::String::iterator ai = a.begin(); - unitTest( ai.compare("1234") == false ); - unitTest( ai.compare("1234aoeu") == true ); - unitTest( ai.compare("1234aoeuee") == false ); - } - - test iterator5 - { - Bu::String a("1234aoeu"); - Bu::String::iterator ai = a.begin(); - unitTest( ai.compare("1234", 4) == true ); - unitTest( ai.compare("1234aoeu", 8) == true ); - unitTest( ai.compare("1234aoeuee", 10) == false ); - } - - test iterator6 - { - Bu::String a("just ->this part"); - Bu::String b; - Bu::String::iterator s = a.begin(); - for(; s; s++ ) - { - if( *s == '>' ) - { - s++; - b.set( s ); - break; - } - } - unitTest( b == "this part" ); - - b.append( s ); - - Bu::String c; - c.set( b.begin() ); - - // This is here because the comparison operator used to cause flattening. - unitTest( b == "this partthis part" ); - unitTest( c == b ); - } - - test iterator7 - { - Bu::String a("just [this] part"); - Bu::String b; - Bu::String::iterator s = a.begin(); - for(; s; s++ ) - { - if( *s == '[' ) - { - s++; - break; - } - } - Bu::String::iterator e = s; - for(; e; e++ ) - { - if( *e == ']' ) - { - b.set( s, e ); - break; - } - } - unitTest( b == "this" ); - - b.append( s, e ); - - for( Bu::String::iterator i = b.begin(); i;) - { - Bu::String::iterator k = i; - k++; - if( !k ) - { - b.append( b.begin(), i ); - break; - } - i = k; - } - Bu::String l; - l.set( b.begin() ); - unitTest( l == "thisthisthisthi" ); - for( Bu::String::iterator i = b.begin(); i;) - { - Bu::String::iterator k = i; - k++; - if( !k ) - { - b.append( b.begin(), i ); - break; - } - i = k; - } - l.set( b.begin() ); - unitTest( l == "thisthisthisthithisthisthisth" ); - } - - test isSet1 - { - Bu::String bob; - - unitTest( bob.isSet() == false ); - bob = "something"; - unitTest( bob.isSet() == true ); - bob = ""; - unitTest( bob.isSet() == false ); - } - - test swap1 - { - Bu::String a, b; - a = "Goodbye"; - b = "Hello"; - Bu::swap( a, b ); - unitTest( a == "Hello" ); - unitTest( b == "Goodbye" ); - } - - test swap2 - { - Bu::String a, b; - a = "Goodbye"; - b = "Hello"; - std::swap( a, b ); - unitTest( a == "Hello" ); - unitTest( b == "Goodbye" ); - } - - test replace1 - { - Bu::String a; - a = "This is a test."; - unitTest( a.replace("i", "ooo") == "Thooos ooos a test." ); - } - - test coreDerefBug1 - { - Bu::String a, b; - a = "bob"; - a.setSize( 0 ); - b = a; - b.getStr(); - } -} diff --git a/src/unit/string.unit b/src/unit/string.unit new file mode 100644 index 0000000..f51e4de --- /dev/null +++ b/src/unit/string.unit @@ -0,0 +1,351 @@ +// vim: syntax=cpp +/* + * Copyright (C) 2007-2011 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#include "bu/string.h" + +#include + +suite String +{ + test compare1 + { + Bu::String b("Bob"); + unitTest( !(b == "Bobo") ); + unitTest( b == "Bob" ); + } + + test compare2 + { + Bu::String b("Bobo"); + unitTest( !(b == "Bob") ); + unitTest( b == "Bobo" ); + } + + test appendSingle + { + Bu::String b; + for( char l = 'a'; l < 'g'; l++ ) + b += l; + unitTest( b == "abcdef" ); + unitTest( strcmp( b.getStr(), "abcdef" ) == 0 ); + } + + test shared1 + { + Bu::String a("Hey there"); + Bu::String b( a ); + unitTest( a.getConstStr() == b.getConstStr() ); + b += " guy"; + unitTest( a.getConstStr() != b.getConstStr() ); + a = b; + unitTest( a.getConstStr() == b.getConstStr() ); + } + + test insert + { + Bu::String a("abcd"); + a.insert( 2, "-!-", 3 ); + unitTest( a == "ab-!-cd" ); + + a.insert( 0, "!!", 2 ); + unitTest( a == "!!ab-!-cd" ); + + a.insert( -10, "789", 3 ); + unitTest( a == "789!!ab-!-cd" ); + + a.insert( 12, "89", 2 ); + unitTest( a == "789!!ab-!-cd89" ); + + a.insert( 1203, "12", 2 ); + unitTest( a == "789!!ab-!-cd8912" ); + } + + test remove + { + Bu::String a("abHEYcd"); + a.remove( 2, 3 ); + unitTest( a == "abcd" ); + a.remove( 2, 5 ); + unitTest( a == "ab" ); + a += "cdefghijklmnop"; + a.remove( 5, 1 ); + unitTest( a == "abcdeghijklmnop" ); + } + + test add1 + { + Bu::String a("hi there"); + Bu::String b(", yeah!"); + Bu::String c = a + b; + + unitTest( c == "hi there, yeah!" ); + } + + test add2 + { + Bu::String a("hi there"); + Bu::String c = a + ", yeah!"; + + unitTest( c == "hi there, yeah!" ); + } + + test add3 + { + Bu::String a("hi there"); + Bu::String b(", yeah!"); + Bu::String c = a + ", Mr. Man" + b; + + unitTest( c == "hi there, Mr. Man, yeah!" ); + } + + test add4 + { + Bu::String b(", yeah!"); + Bu::String c = "hi there" + b; + + unitTest( c == "hi there, yeah!" ); + } + + test add5 + { + Bu::String b; + Bu::String c = "sup?"; + b += "hey, " + c; + + unitTest( b == "hey, sup?" ); + } + + test add6 + { + Bu::String a("Hello"); + char b[256] = {"Dude"}; + Bu::String c = a + "/" + b; + + unitTest( c == "Hello/Dude" ); + } + + test add7 + { + const Bu::String a("hello "); + Bu::String b(" how "); + unitTest( a == "hello " ); + unitTest( a + "dude" == "hello dude" ); + unitTest( a + "dude" + b + "are you?" == "hello dude how are you?" ); + } + + test subStr1 + { + Bu::String a("abcdefghijklmnop"); + Bu::String::iterator i = a.find('f'); + unitTest( a.getSubStr( i, Bu::String::iterator() ) == "fghijklmnop" ); + Bu::String::iterator j = i.find('l'); + unitTest( a.getSubStr( i, j ) == "fghijk" ); + } + + test compareSub1 + { + Bu::String a("just a string."); + unitTest( a.compareSub("a ", 5, 2) == true ); + unitTest( a.compareSub("string.aoeu", 7, 11 ) == false ); + unitTest( a.compareSub("string.aoeu", 7, 3 ) == true ); + } + + test compareSub2 + { + Bu::String a("just a string."); + unitTest( a.compareSub(Bu::String("a "), 5, 2) == true ); + unitTest( a.compareSub(Bu::String("string.aoeu"), 7, 11 ) == false ); + unitTest( a.compareSub(Bu::String("string.aoeu"), 7, 3 ) == true ); + } + + test iterator1 + { + Bu::String a("This is a test."); + Bu::String b; + for( Bu::String::iterator i = a.begin(); i; i++ ) + { + b += *i; + } + unitTest( a == b ); + } + + test iterator2 + { + Bu::String a("This is a test."); + Bu::String b("--This is a test."); + Bu::String::iterator ai = a.begin(); + Bu::String::iterator bi = b.begin(); + unitTest( ai.compare( bi ) == false ); + unitTest( bi.compare( ai ) == false ); + bi++; bi++; + unitTest( ai.compare( bi ) == true ); + unitTest( bi.compare( ai ) == true ); + } + + test iterator3 + { + Bu::String a("1234honour"); + Bu::String b("--1234ueje"); + Bu::String::iterator ai = a.begin(); + Bu::String::iterator bi = b.begin(); + unitTest( ai.compare( bi, 4 ) == false ); + unitTest( bi.compare( ai, 4 ) == false ); + bi++; bi++; + unitTest( ai.compare( bi, 4 ) == true ); + unitTest( bi.compare( ai, 4 ) == true ); + unitTest( ai.compare( bi, 5 ) == false ); + unitTest( bi.compare( ai, 5 ) == false ); + + } + + test iterator4 + { + Bu::String a("1234aoeu"); + Bu::String::iterator ai = a.begin(); + unitTest( ai.compare("1234") == false ); + unitTest( ai.compare("1234aoeu") == true ); + unitTest( ai.compare("1234aoeuee") == false ); + } + + test iterator5 + { + Bu::String a("1234aoeu"); + Bu::String::iterator ai = a.begin(); + unitTest( ai.compare("1234", 4) == true ); + unitTest( ai.compare("1234aoeu", 8) == true ); + unitTest( ai.compare("1234aoeuee", 10) == false ); + } + + test iterator6 + { + Bu::String a("just ->this part"); + Bu::String b; + Bu::String::iterator s = a.begin(); + for(; s; s++ ) + { + if( *s == '>' ) + { + s++; + b.set( s ); + break; + } + } + unitTest( b == "this part" ); + + b.append( s ); + + Bu::String c; + c.set( b.begin() ); + + // This is here because the comparison operator used to cause flattening. + unitTest( b == "this partthis part" ); + unitTest( c == b ); + } + + test iterator7 + { + Bu::String a("just [this] part"); + Bu::String b; + Bu::String::iterator s = a.begin(); + for(; s; s++ ) + { + if( *s == '[' ) + { + s++; + break; + } + } + Bu::String::iterator e = s; + for(; e; e++ ) + { + if( *e == ']' ) + { + b.set( s, e ); + break; + } + } + unitTest( b == "this" ); + + b.append( s, e ); + + for( Bu::String::iterator i = b.begin(); i;) + { + Bu::String::iterator k = i; + k++; + if( !k ) + { + b.append( b.begin(), i ); + break; + } + i = k; + } + Bu::String l; + l.set( b.begin() ); + unitTest( l == "thisthisthisthi" ); + for( Bu::String::iterator i = b.begin(); i;) + { + Bu::String::iterator k = i; + k++; + if( !k ) + { + b.append( b.begin(), i ); + break; + } + i = k; + } + l.set( b.begin() ); + unitTest( l == "thisthisthisthithisthisthisth" ); + } + + test isSet1 + { + Bu::String bob; + + unitTest( bob.isSet() == false ); + bob = "something"; + unitTest( bob.isSet() == true ); + bob = ""; + unitTest( bob.isSet() == false ); + } + + test swap1 + { + Bu::String a, b; + a = "Goodbye"; + b = "Hello"; + Bu::swap( a, b ); + unitTest( a == "Hello" ); + unitTest( b == "Goodbye" ); + } + + test swap2 + { + Bu::String a, b; + a = "Goodbye"; + b = "Hello"; + std::swap( a, b ); + unitTest( a == "Hello" ); + unitTest( b == "Goodbye" ); + } + + test replace1 + { + Bu::String a; + a = "This is a test."; + unitTest( a.replace("i", "ooo") == "Thooos ooos a test." ); + } + + test coreDerefBug1 + { + Bu::String a, b; + a = "bob"; + a.setSize( 0 ); + b = a; + b.getStr(); + } +} -- cgit v1.2.3