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 ); } }