public void Trim()
        {
            AString ms= new AString();

            // ------------------ TrimAt ------------------
            {
                for (int i= -2; i < 6; i++ )
                {
                    ms.Clear()._("abc").TrimAt( i );
                    UT_EQ( "abc", ms );
                }

                ms.Clear()._(" abc").TrimAt( -1 );        UT_EQ( " abc"        , ms );
                ms.Clear()._(" abc").TrimAt(  0 );        UT_EQ( "abc"         , ms );
                ms.Clear()._(" abc").TrimAt(  1 );        UT_EQ( " abc"        , ms );

                ms.Clear()._("abc ").TrimAt( -1 );        UT_EQ( "abc "        , ms );
                ms.Clear()._("abc ").TrimAt(  0 );        UT_EQ( "abc "        , ms );
                ms.Clear()._("abc ").TrimAt(  2 );        UT_EQ( "abc "        , ms );
                ms.Clear()._("abc ").TrimAt(  3 );        UT_EQ( "abc"         , ms );
                ms.Clear()._("abc ").TrimAt(  4 );        UT_EQ( "abc "        , ms );

                ms.Clear()._("a bc").TrimAt( -1 );        UT_EQ( "a bc"        , ms );
                ms.Clear()._("a bc").TrimAt(  0 );        UT_EQ( "a bc"        , ms );
                ms.Clear()._("a bc").TrimAt(  1 );        UT_EQ( "abc"         , ms );
                ms.Clear()._("a bc").TrimAt(  2 );        UT_EQ( "a bc"        , ms );
                ms.Clear()._("a bc").TrimAt(  3 );        UT_EQ( "a bc"        , ms );

                ms.Clear()._("a  c").TrimAt( -1 );        UT_EQ( "a  c"        , ms );
                ms.Clear()._("a  c").TrimAt(  0 );        UT_EQ( "a  c"        , ms );
                ms.Clear()._("a  c").TrimAt(  1 );        UT_EQ( "ac"          , ms );
                ms.Clear()._("a  c").TrimAt(  2 );        UT_EQ( "ac"          , ms );
                ms.Clear()._("a  c").TrimAt(  3 );        UT_EQ( "a  c"        , ms );

                ms.Clear()._(" \t abc \t ").TrimStart();  UT_EQ( "abc \t "     , ms );
                                         ms.TrimEnd();    UT_EQ( "abc"         , ms );

            }

            // ------------------ Trim ------------------
            {
                ms.Clear()._(""          ).Trim();        UT_EQ( ""            , ms );
                ms.Clear()._(" "         ).Trim();        UT_EQ( ""            , ms );
                ms.Clear()._("  "        ).Trim();        UT_EQ( ""            , ms );
                ms.Clear()._("abc"       ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._("abc"       ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._(" abc"      ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._("  abc"     ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._(" \tabc"    ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._("\t abc"    ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._("abc\r\n"   ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._("\tabc\r\n" ).Trim();        UT_EQ( "abc"         , ms );
                ms.Clear()._("\tabc\rx\n" ).Trim();       UT_EQ( "abc\rx"      , ms );
            }

        }