// @topic W040508 substring class with overloaded operators // @brief main() -- test for overloaded substring operators // main.cpp #include <cassert> #include <iostream> #include "substring.h" int main() { using std::string; using std::cout; //------------------------------ string str = "Hello"; // 012345... substring sub( str ); cout << sub.str() << '\n'; sub.clear(); cout << sub.str() << '\n'; //------------------------------ string str2 = "Goodbye"; // 012345678901234567890123456789 // 0 1 2 substring sub2( str2, 4, 7 ); cout << sub2.str() << '\n'; sub2.replace( " job" ); cout << sub2.str() << '\n'; sub2.fill( '@' ); cout << str2 << '\n'; cout << "operator<< test: " << sub2 << '\n'; if ( sub2 == sub2 ) { cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator== test: sub2 == sub2 is true: " << sub2 << '\n'; } string str3 = "hello"; substring sub3( str3 ); if ( str3 == sub3 ) { cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator== test: str == sub is true: " << sub3 << '\n'; } if ( sub3 == str3 ) { cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator== test: str == sub is true: " << sub3 << '\n'; } if ( sub3 == "hello" ) { cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator== test: str == sub is true: " << sub3 << '\n'; } sub3 = "bye"; cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator= test: sub3 is: " << sub3 << '\n'; sub3 = sub2; cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator= test: sub3 is: " << sub3 << '\n'; sub3 = sub3; sub2 = "abc"; sub3 = "xyz"; if ( sub3 > sub2 ) { cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator>: " << sub3 << ">" << sub2 << '\n'; } sub2 = "x"; sub3 = "xyz"; if ( sub3 > sub2 ) { cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator>: " << sub3 << ">" << sub2 << '\n'; } sub3[ 0 ] = toupper( sub3[ 0 ] ); sub3[ 1 ] = toupper( sub3[ 1 ] ); sub3[ 2 ] = toupper( sub3[ 2 ] ); cout << '\n' << __FILE__ << ":" << __LINE__ << '\n'; cout << "operator[] test: " << sub3 << '\n'; return 0; }