public void CompareTo() { // null string comparison String nullString= null; AString aString= new AString(0); UT_TRUE( aString.CompareTo( nullString) == 0 ); UT_TRUE( aString.Equals( nullString) ); aString._( "" ); UT_TRUE( aString.CompareTo( nullString) != 0 ); UT_TRUE( !aString.Equals( nullString) ); aString.SetBuffer( 0 ); UT_TRUE( aString.CompareTo( nullString) == 0 ); UT_TRUE( aString.Equals( nullString) ); AString ms= new AString(); int result; String t= "abcde"; ms._( t ); result= ms.CompareTo( t ); UT_EQ( t.CompareTo( t ), result ); result= ms.CompareTo( t + "x" ); UT_EQ( t.CompareTo( t + "x" ), result ); result= ms.CompareTo( t.Substring (0, t.Length -1 ) ); UT_EQ( t.CompareTo( t.Substring (0, t.Length -1 ) ), result ); result= ms.CompareTo( "pad" + t, Case.Sensitive, 3 ); UT_EQ( 0, result ); result= ms.CompareTo( "pad" + t, Case.Sensitive, 3, 2 ); UT_EQ( 1, result ); result= ms.CompareTo( "pad" + t, Case.Sensitive, 3, 100, 0, 4 ); UT_EQ( -1, result ); result= ms.CompareTo( "pad" + t, Case.Sensitive, 3, 100, 0, 5 ); UT_EQ( 0, result ); result= ms.CompareTo( t, Case.Sensitive, 2, 2, 2, 2 ); UT_EQ( 0, result ); result= ms.CompareTo( t, Case.Sensitive, 2, 2, 2, 1 ); UT_EQ( -1, result ); result= ms.CompareTo( t, Case.Sensitive, 2, 2, 2, 3 ); UT_EQ( 1, result ); result= ms.CompareTo( t, Case.Sensitive, -2, 5,-2, 5 ); UT_EQ( 0, result ); result= ms.CompareTo( t, Case.Sensitive, 2, int.MaxValue, 2, int.MaxValue ); UT_EQ( 0, result ); result= ms.CompareTo( t, Case.Sensitive, -2, int.MaxValue, -2, int.MaxValue ); UT_EQ( 0, result ); result= ms.CompareTo( t, Case.Sensitive, -2, 100, -2, 99 ); UT_EQ( 0, result ); result= ms.CompareTo( t, Case.Sensitive, -2, 5, -2, int.MaxValue ); UT_EQ( 1, result ); result= ms.CompareTo( t, Case.Sensitive, -2, int.MaxValue, -2, 5 ); UT_EQ(-1, result ); // greater/smaller strings int scRes; String greater= "x"; String greater2= "abcdef"; String smaller= "aaa"; String smaller2= "abcd"; result= ms.CompareTo( greater ); scRes= t.CompareTo( greater ); UT_TRUE( (result==0 && scRes==0) || (result<0 && scRes<0) ||(result>0 && scRes>0) ); result= ms.CompareTo( greater2 ); scRes= t.CompareTo( greater2 ); UT_TRUE( (result==0 && scRes==0) || (result<0 && scRes<0) ||(result>0 && scRes>0) ); result= ms.CompareTo( smaller ); scRes= t.CompareTo( smaller ); UT_TRUE( (result==0 && scRes==0) || (result<0 && scRes<0) ||(result>0 && scRes>0) ); result= ms.CompareTo( smaller2 ); scRes= t.CompareTo( smaller2 ); UT_TRUE( (result==0 && scRes==0) || (result<0 && scRes<0) ||(result>0 && scRes>0) ); // ignore case String ut= t.ToUpperInvariant(); result= ms.CompareTo( ut ); UT_TRUE( result > 0 ); result= ms.CompareTo( ut, Case.Sensitive ); UT_TRUE( result > 0 ); result= ms.CompareTo( ut, Case.Ignore ); UT_TRUE( result == 0 ); result= ms.CompareTo( ut, Case.Sensitive, 2,2, 2,2 ); UT_TRUE( result > 0 ); result= ms.CompareTo( ut, Case.Ignore, 2,2, 2,2 ); UT_TRUE( result == 0 ); AString tMS= new AString(); tMS._( t ); result= ms.CompareTo( tMS ); UT_EQ( 0, result ); result= ms.CompareTo( tMS, Case.Sensitive, -5, 100, -10, 100 ); UT_EQ( 0, result ); result= ms.CompareTo( tMS, Case.Sensitive, 2, 3, 2, 3 ); UT_EQ( 0, result ); // different ranges String r1= "*ABCDEF*"; String r2= "##*ABCDEF*##"; ms.Clear()._( r1 ); result= ms.CompareTo( r2, Case.Sensitive, 2,8 ); UT_EQ( 0, result ); result= ms.CompareTo( r2, Case.Sensitive, 3,6, 1,6 ); UT_EQ( 0, result ); }
public void IsNull() { AString ms = new AString(); UT_TRUE( ms.Capacity() == 0 ); UT_TRUE( ms.IsNull() ); UT_TRUE( !ms.IsNotNull() ); UT_TRUE( ms.IsEmpty() ); UT_TRUE( !ms.IsNotEmpty() ); ms._(""); UT_TRUE( ms.Capacity() != 0 ); UT_TRUE( !ms.IsNull() ); UT_TRUE( ms.IsNotNull() ); UT_TRUE( ms.IsEmpty() ); UT_TRUE( !ms.IsNotEmpty() ); ms._("x"); UT_TRUE( ms.Capacity() != 0 ); UT_TRUE( !ms.IsNull() ); UT_TRUE( ms.IsNotNull() ); UT_TRUE( !ms.IsEmpty() ); UT_TRUE( ms.IsNotEmpty() ); ms.SetNull(); UT_TRUE( ms.Capacity() == 0 ); UT_TRUE( ms.IsNull() ); UT_TRUE( !ms.IsNotNull() ); UT_TRUE( ms.IsEmpty() ); UT_TRUE( !ms.IsNotEmpty() ); ms._(""); UT_TRUE( ms.Capacity() != 0 ); UT_TRUE( !ms.IsNull() ); UT_TRUE( ms.IsNotNull() ); UT_TRUE( ms.IsEmpty() ); UT_TRUE( !ms.IsNotEmpty() ); ms._("x"); UT_TRUE( ms.Capacity() != 0 ); UT_TRUE( !ms.IsNull() ); UT_TRUE( ms.IsNotNull() ); UT_TRUE( !ms.IsEmpty() ); UT_TRUE( ms.IsNotEmpty() ); ms.SetNull(); UT_TRUE( ms.Capacity() == 0 ); UT_TRUE( ms.IsNull() ); UT_TRUE( !ms.IsNotNull() ); UT_TRUE( ms.IsEmpty() ); UT_TRUE( !ms.IsNotEmpty() ); ms.SetBuffer(5); UT_TRUE( ms.Capacity() != 0 ); UT_TRUE( !ms.IsNull() ); UT_TRUE( ms.IsNotNull() ); UT_TRUE( ms.IsEmpty() ); UT_TRUE( !ms.IsNotEmpty() ); ms._("x"); UT_TRUE( ms.Capacity() != 0 ); UT_TRUE( !ms.IsNull() ); UT_TRUE( ms.IsNotNull() ); UT_TRUE( !ms.IsEmpty() ); UT_TRUE( ms.IsNotEmpty() ); }
public void CapacityLength() { // null-allocated { String nullString= null; AString ms= new AString(); UT_EQ( ms.Capacity(), 0 ); ms= new AString( 0 ); UT_EQ( ms.Capacity(), 0 ); ms= new AString( nullString ); UT_EQ( ms.Capacity(), 0 ); ms._( "" ); UT_TRUE( ms.Capacity() > 0 ); } { AString ms= new AString( 5 ); ms._( 'a' ); UT_TRUE ( ms.Capacity() == 5 ); ms._( 'b' ); UT_TRUE ( ms.Capacity() == 5 ); ms._( 'c' ); UT_TRUE ( ms.Capacity() == 5 ); ms._( 'd' ); UT_TRUE ( ms.Capacity() == 5 ); ms._( 'e' ); UT_TRUE ( ms.Capacity() == 5 ); ms._( 'x' ); UT_TRUE ( ms.Capacity() >= 6 ); UT_EQ( "abcdex", ms ); ms.EnsureRemainingCapacity( 2000 ); UT_TRUE ( ms.Capacity() >= 2000 ); } { AString ms= new AString(); int asize; ms._( "0123456789" ); UT_EQ ( ms.Length(), 10 ); UT_TRUE ( ms.Capacity() >= 10 ); asize= ms.Capacity(); Report.GetDefault().PushHaltFlags( false, false ); Console.WriteLine( "A warning should follow" ); ms.SetLength(20); UT_EQ ( ms.Length(), 10 ); UT_EQ ( ms.Capacity(), asize ); UT_EQ( ms, "0123456789" ); ms.SetLength(5); UT_EQ ( ms.Length(), 5 ); UT_EQ ( ms.Capacity(), asize ); UT_EQ( ms, "01234" ); ms.SetBuffer(3); UT_EQ ( ms.Length(), 3 ); UT_EQ ( ms.Capacity(), 3 ); UT_EQ( ms, "012" ); ms._("ABC"); UT_EQ ( ms.Length(), 6 ); UT_TRUE( ms.Capacity() >= 6); UT_EQ( ms, "012ABC" ); Report.GetDefault().PopHaltFlags(); } }
public void ConvertIntegers() { AString a= new AString(); int pos; int posOrig; // parse on empty a.Clear(); { posOrig= pos= 0; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); posOrig= pos= -5; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); } // parse on non number a.Clear()._( "Hello"); { posOrig= pos= 0; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); posOrig= pos= -5; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); posOrig= pos= 2; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); } // check that leading whitespaces do not move pointer a.Clear()._( " Hello"); { posOrig= pos= 0; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); posOrig= pos= -5; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); posOrig= pos= 2; UT_EQ( 0, a.ToInt( posOrig, out pos ) ); UT_EQ( pos, posOrig ); } // parse integers { a.Clear()._( "123456789"); UT_EQ( 123456789, a.ToInt ( 0, out pos ) ); UT_EQ( 0 + a.Length() , pos ); a.Clear()._( " 123"); UT_EQ( 123, a.ToInt ( 0, out pos ) ); UT_EQ( 0 + a.Length() , pos ); a.Clear()._( " -23 "); UT_EQ( -23, a.ToInt ( 0, out pos ) ); UT_EQ( -2 + a.Length() , pos ); a.Clear()._( "123 "); UT_EQ( 123, a.ToInt ( 0, out pos ) ); UT_EQ( -2 + a.Length() , pos ); a.Clear()._( "xxx123456789"); UT_EQ( 123456789, a.ToInt ( 3, out pos ) ); UT_EQ( 0 + a.Length() , pos ); a.Clear()._( "xxx 123"); UT_EQ( 123, a.ToInt ( 3, out pos ) ); UT_EQ( 0 + a.Length() , pos ); a.Clear()._( "xxx 123 "); UT_EQ( 123, a.ToInt ( 3, out pos ) ); UT_EQ( -2 + a.Length() , pos ); a.Clear()._( "xxx123 "); UT_EQ( 123, a.ToInt ( 3, out pos ) ); UT_EQ( -2 + a.Length() , pos ); } // append int32 { AString ms= new AString(); uint ui; int i; ms.Clear(); ui= 0; ms._( ui ); UT_EQ( "0", ms ); ms.Clear(); ui= 0; ms._( ui, 1 ); UT_EQ( "0", ms ); ms.Clear(); ui= 0; ms._( ui, 3 ); UT_EQ( "000", ms ); ms.Clear(); ui= 10; ms._( ui ); UT_EQ( "10", ms ); ms.Clear(); ui= 100; ms._( ui, 1 ); UT_EQ( "100", ms ); ms.Clear(); ui= 100; ms._( ui, 3 ); UT_EQ( "100", ms ); ms.Clear(); ui= 100; ms._( ui, 4 ); UT_EQ( "0100", ms ); ms.Clear(); ui= 23; ms._( ui ); UT_EQ( "23", ms ); ms.Clear(); ui= 99; ms._( ui, 5 ); UT_EQ( "00099", ms ); ms.Clear(); i= 49; ms._( i ); UT_EQ( "49", ms ); ms.Clear(); i= -5; ms._( i, 5 ); UT_EQ( "-00005", ms ); ms.Clear(); i= -5324; ms._( i, 2 ); UT_EQ( "-5324", ms ); ms.Clear(); ui= uint.MaxValue; ms._( ui ); UT_EQ( "4294967295", ms ); ms.Clear(); ui= uint.MinValue; ms._( ui ); UT_EQ( "0", ms ); ms.Clear(); i= int.MaxValue; ms._( i ); UT_EQ( "2147483647", ms ); ms.Clear(); i= int.MinValue; ms._( i ); UT_EQ( "-2147483648", ms ); ms.Clear(); ui= uint.MaxValue; ms._( ui, 12 ); UT_EQ( "004294967295", ms ); ms.Clear(); ui= uint.MinValue; ms._( ui, 12 ); UT_EQ( "000000000000", ms ); ms.Clear(); i= int.MaxValue; ms._( i , 12 ); UT_EQ( "002147483647", ms ); ms.Clear(); i= int.MinValue; ms._( i , 12 ); UT_EQ( "-002147483648", ms ); } // append int64 { AString ms= new AString(); ulong ui; long i; ms.Clear(); ui= 0; ms._( ui ); UT_EQ( "0", ms ); ms.Clear(); ui= 0; ms._( ui, 1 ); UT_EQ( "0", ms ); ms.Clear(); ui= 0; ms._( ui, 3 ); UT_EQ( "000", ms ); ms.Clear(); ui= 10; ms._( ui ); UT_EQ( "10", ms ); ms.Clear(); ui= 100; ms._( ui, 1 ); UT_EQ( "100", ms ); ms.Clear(); ui= 100; ms._( ui, 3 ); UT_EQ( "100", ms ); ms.Clear(); ui= 100; ms._( ui, 4 ); UT_EQ( "0100", ms ); ms.Clear(); ui= 23; ms._( ui ); UT_EQ( "23", ms ); ms.Clear(); ui= 99; ms._( ui, 5 ); UT_EQ( "00099", ms ); ms.Clear(); i= 49; ms._( i ); UT_EQ( "49", ms ); ms.Clear(); i= -5; ms._( i, 5 ); UT_EQ( "-00005", ms ); ms.Clear(); i= -5324; ms._( i, 2 ); UT_EQ( "-5324", ms ); ms.Clear(); ui= uint.MaxValue; ms._( ui ); UT_EQ( "4294967295", ms ); ms.Clear(); ui= uint.MinValue; ms._( ui ); UT_EQ( "0", ms ); ms.Clear(); i= int.MaxValue; ms._( i ); UT_EQ( "2147483647", ms ); ms.Clear(); i= int.MinValue; ms._( i ); UT_EQ( "-2147483648", ms ); ms.Clear(); ui= uint.MaxValue; ms._( ui, 12 ); UT_EQ( "004294967295", ms ); ms.Clear(); ui= uint.MinValue; ms._( ui, 12 ); UT_EQ( "000000000000", ms ); ms.Clear(); i= int.MaxValue; ms._( i , 12 ); UT_EQ( "002147483647", ms ); ms.Clear(); i= int.MinValue; ms._( i , 12 ); UT_EQ( "-002147483648", ms ); ms.Clear(); ui= ulong.MaxValue; ms._( ui ); UT_EQ( "18446744073709551615", ms ); ms.Clear(); ui= ulong.MinValue; ms._( ui ); UT_EQ( "0", ms ); ms.Clear(); i= long.MaxValue; ms._( i ); UT_EQ( "9223372036854775807", ms ); ms.Clear(); ms.SetBuffer(20); i= long.MinValue; ms._( i ); UT_EQ( "-9223372036854775808", ms ); ms.Clear(); i= long.MinValue + 75008; ms._( i ); UT_EQ( "-9223372036854700800", ms ); } }