2007-09-11 23:34 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)

* source/rtl/hbgtcore.c
     ! Fixed handling of some strangely formatted colorstrings
       mainly inside TGet(). The low-level functionality 
       modified is the colorstring to number conversion. The 
       only change is to continue (and not exit) on a non-std 
       char.

   * utils/hbtest/rt_misc.prg
     + Added some color string parsing tests. Some of them fail.

   * source/rtl/achoice.prg
   * source/debug/debugger.prg
   * utils/hbtest/hbtest.prg
   * utils/hbtest/rt_array.prg
     * Formatting.
This commit is contained in:
Viktor Szakats
2007-09-11 21:36:00 +00:00
parent d4711a8f83
commit 709de529ef
7 changed files with 703 additions and 533 deletions

View File

@@ -8,6 +8,23 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2007-09-11 23:34 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* source/rtl/hbgtcore.c
! Fixed handling of some strangely formatted colorstrings
mainly inside TGet(). The low-level functionality
modified is the colorstring to number conversion. The
only change is to continue (and not exit) on a non-std
char.
* utils/hbtest/rt_misc.prg
+ Added some color string parsing tests. Some of them fail.
* source/rtl/achoice.prg
* source/debug/debugger.prg
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_array.prg
* Formatting.
2007-09-11 15:34 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* tests/rto_get.prg
* source/rtl/tget.prg
@@ -17,7 +34,7 @@
* source/rtl/tbrowse.prg
+ Some scattered logic moved inside :Configure()
! Some TOFIX-es added.
+ Some TOFIXes added.
! ::ColorSpec() to call Configure().
* source/debug/dbgtobj.prg

File diff suppressed because it is too large Load Diff

View File

@@ -45,7 +45,7 @@ FUNCTION AChoice( nTop, nLeft, nBottom, nRight, acItems, xSelect, xUserFunc, nPo
LOCAL bAction
LOCAL cKey
LOCAL bSelect := {|x,y| if(ISLOGICAL(x), x, if(!Empty( x ), (y := &( x ),if(ISLOGICAL(y), y, .T.)), .T.)) }
LOCAL bSelect := { | x, y | iif( ISLOGICAL( x ), x, iif( !Empty( x ), ( y := &( x ), iif( ISLOGICAL( y ), y, .T. ) ), .T.) ) }
ColorSelect( CLR_STANDARD )
@@ -535,17 +535,12 @@ STATIC PROCEDURE DispLine( cLine, nRow, nCol, lSelect, lHiLite, nNumCols )
ColorSelect( iif( lSelect .AND. ISCHARACTER( cLine ), ;
iif( lHiLite, CLR_ENHANCED, CLR_STANDARD ), CLR_UNSELECTED ) )
IF ISCHARACTER( cLine )
DispOutAt( nRow, nCol, PadR( cLine, nNumCols ) )
ELSE
DispOutAt( nRow, nCol, Space( nNumCols ) )
ENDIF
DispOutAt( nRow, nCol, iif( ISCHARACTER( cLine ), PadR( cLine, nNumCols ), Space( nNumCols ) ) )
ColorSelect( CLR_STANDARD )
RETURN
STATIC FUNCTION Ach_Limits( nFrstItem, nLastItem, nItems, bSelect, alSelect, acItems )
LOCAL nMode, nCntr
@@ -577,6 +572,4 @@ STATIC FUNCTION Ach_Limits( nFrstItem, nLastItem, nItems, bSelect, alSelect, acI
nLastItem := nItems
ENDIF
RETURN nMode

View File

@@ -382,8 +382,6 @@ static int hb_gt_def_ColorNum( const char * szColorString )
iColor <<= 4;
nColor |= iColor & 0xff;
}
else
return 0;
}
}

View File

@@ -407,8 +407,8 @@ STATIC FUNCTION TEST_END()
dbSelectArea( "w_TEST" )
dbCloseArea()
fErase( "!TEMP!.dbf" )
fErase( "!TEMP!.dbt" )
FErase( "!TEMP!.dbf" )
FErase( "!TEMP!.dbt" )
s_nEndTime := Seconds()

View File

@@ -60,134 +60,134 @@ FUNCTION Main_ARRAY()
/* ARRAY function error conditions. */
#ifndef __XPP__
TEST_LINE( aCopy() , NIL )
TEST_LINE( ACopy() , NIL )
#endif
TEST_LINE( aCopy({}, "C") , NIL )
TEST_LINE( aCopy("C", {}) , NIL )
TEST_LINE( aCopy({}, {}) , "{.[0].}" )
TEST_LINE( aCopy({}, ErrorNew()) , "ERROR Object" )
TEST_LINE( aCopy(ErrorNew(), {}) , "{.[0].}" )
TEST_LINE( ACopy({}, "C") , NIL )
TEST_LINE( ACopy("C", {}) , NIL )
TEST_LINE( ACopy({}, {}) , "{.[0].}" )
TEST_LINE( ACopy({}, ErrorNew()) , "ERROR Object" )
TEST_LINE( ACopy(ErrorNew(), {}) , "{.[0].}" )
#ifndef __XPP__
TEST_LINE( aClone() , NIL )
TEST_LINE( AClone() , NIL )
#endif
TEST_LINE( aClone( NIL ) , NIL )
TEST_LINE( aClone( {} ) , "{.[0].}" )
TEST_LINE( aClone( ErrorNew() ) , NIL )
TEST_LINE( AClone( NIL ) , NIL )
TEST_LINE( AClone( {} ) , "{.[0].}" )
TEST_LINE( AClone( ErrorNew() ) , NIL )
#ifndef __XPP__
TEST_LINE( aEval() , "E BASE 2017 Argument error AEVAL " )
TEST_LINE( aEval( NIL ) , "E BASE 2017 Argument error AEVAL A:1:U:NIL " )
TEST_LINE( aEval( {} ) , "E BASE 2017 Argument error AEVAL A:1:A:{.[0].} " )
TEST_LINE( AEval() , "E BASE 2017 Argument error AEVAL " )
TEST_LINE( AEval( NIL ) , "E BASE 2017 Argument error AEVAL A:1:U:NIL " )
TEST_LINE( AEval( {} ) , "E BASE 2017 Argument error AEVAL A:1:A:{.[0].} " )
#endif
TEST_LINE( aEval( {}, NIL ) , "E BASE 2017 Argument error AEVAL A:2:A:{.[0].};U:NIL " )
TEST_LINE( aEval( {}, {|| NIL } ) , "{.[0].}" )
TEST_LINE( aEval( ErrorNew(), {|| NIL } ) , "ERROR Object" )
TEST_LINE( AEval( {}, NIL ) , "E BASE 2017 Argument error AEVAL A:2:A:{.[0].};U:NIL " )
TEST_LINE( AEval( {}, {|| NIL } ) , "{.[0].}" )
TEST_LINE( AEval( ErrorNew(), {|| NIL } ) , "ERROR Object" )
#ifndef __XPP__
TEST_LINE( aScan() , 0 )
TEST_LINE( aScan( NIL ) , 0 )
TEST_LINE( aScan( "A" ) , 0 )
TEST_LINE( aScan( {} ) , 0 )
TEST_LINE( AScan() , 0 )
TEST_LINE( AScan( NIL ) , 0 )
TEST_LINE( AScan( "A" ) , 0 )
TEST_LINE( AScan( {} ) , 0 )
#endif
TEST_LINE( aScan( {}, "" ) , 0 )
TEST_LINE( aScan( ErrorNew(), "NOT_FOUND") , 0 )
TEST_LINE( AScan( {}, "" ) , 0 )
TEST_LINE( AScan( ErrorNew(), "NOT_FOUND") , 0 )
#ifndef __XPP__
TEST_LINE( aSort() , NIL )
TEST_LINE( ASort() , NIL )
#endif
TEST_LINE( aSort(10) , NIL )
TEST_LINE( aSort({}) , "{.[0].}" )
TEST_LINE( aSort(ErrorNew()) , NIL )
TEST_LINE( ASort(10) , NIL )
TEST_LINE( ASort({}) , "{.[0].}" )
TEST_LINE( ASort(ErrorNew()) , NIL )
#ifdef HB_C52_STRICT
#ifndef __XPP__
TEST_LINE( aFill() , "E BASE 2017 Argument error AEVAL A:4:U:NIL;B:{||...};U:NIL;U:NIL " )
TEST_LINE( AFill() , "E BASE 2017 Argument error AEVAL A:4:U:NIL;B:{||...};U:NIL;U:NIL " )
#endif
TEST_LINE( aFill( NIL ) , "E BASE 2017 Argument error AEVAL A:4:U:NIL;B:{||...};U:NIL;U:NIL " )
TEST_LINE( AFill( NIL ) , "E BASE 2017 Argument error AEVAL A:4:U:NIL;B:{||...};U:NIL;U:NIL " )
#else
#ifndef __XPP__
TEST_LINE( aFill() , "E BASE 9999 Argument error AFILL " )
TEST_LINE( AFill() , "E BASE 9999 Argument error AFILL " )
#endif
TEST_LINE( aFill( NIL ) , "E BASE 9999 Argument error AFILL " )
TEST_LINE( AFill( NIL ) , "E BASE 9999 Argument error AFILL " )
#endif
TEST_LINE( aFill( {} ) , "{.[0].}" )
TEST_LINE( aFill( {}, 1 ) , "{.[0].}" )
TEST_LINE( aFill( ErrorNew() ) , "ERROR Object" )
TEST_LINE( aFill( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( AFill( {} ) , "{.[0].}" )
TEST_LINE( AFill( {}, 1 ) , "{.[0].}" )
TEST_LINE( AFill( ErrorNew() ) , "ERROR Object" )
TEST_LINE( AFill( ErrorNew(), 1 ) , "ERROR Object" )
#ifndef __XPP__
TEST_LINE( aDel() , NIL )
TEST_LINE( aDel( NIL ) , NIL )
TEST_LINE( aDel( { 1 } ) , "{.[1].}" )
TEST_LINE( ADel() , NIL )
TEST_LINE( ADel( NIL ) , NIL )
TEST_LINE( ADel( { 1 } ) , "{.[1].}" )
#endif
TEST_LINE( aDel( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( aDel( { 1 }, 100 ) , "{.[1].}" )
TEST_LINE( aDel( { 1 }, 1 ) , "{.[1].}" )
TEST_LINE( aDel( { 1 }, -1 ) , "{.[1].}" )
TEST_LINE( aDel( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( aDel( { 1 }, NIL ) , "{.[1].}" )
TEST_LINE( ADel( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( ADel( { 1 }, 100 ) , "{.[1].}" )
TEST_LINE( ADel( { 1 }, 1 ) , "{.[1].}" )
TEST_LINE( ADel( { 1 }, -1 ) , "{.[1].}" )
TEST_LINE( ADel( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( ADel( { 1 }, NIL ) , "{.[1].}" )
#ifndef __XPP__
TEST_LINE( aDel( ErrorNew() ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew() ) , "ERROR Object" )
#endif
TEST_LINE( aDel( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( aDel( ErrorNew(), 100 ) , "ERROR Object" )
TEST_LINE( aDel( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( aDel( ErrorNew(), -1 ) , "ERROR Object" )
TEST_LINE( aDel( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( aDel( ErrorNew(), NIL ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew(), 100 ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew(), -1 ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( ADel( ErrorNew(), NIL ) , "ERROR Object" )
#ifndef __XPP__
TEST_LINE( aIns() , NIL )
TEST_LINE( aIns( NIL ) , NIL )
TEST_LINE( aIns( { 1 } ) , "{.[1].}" )
TEST_LINE( AIns() , NIL )
TEST_LINE( AIns( NIL ) , NIL )
TEST_LINE( AIns( { 1 } ) , "{.[1].}" )
#endif
TEST_LINE( aIns( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( aIns( { 1 }, 100 ) , "{.[1].}" )
TEST_LINE( aIns( { 1 }, 1 ) , "{.[1].}" )
TEST_LINE( aIns( { 1 }, -1 ) , "{.[1].}" )
TEST_LINE( aIns( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( aIns( { 1 }, NIL ) , "{.[1].}" )
TEST_LINE( AIns( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( AIns( { 1 }, 100 ) , "{.[1].}" )
TEST_LINE( AIns( { 1 }, 1 ) , "{.[1].}" )
TEST_LINE( AIns( { 1 }, -1 ) , "{.[1].}" )
TEST_LINE( AIns( { 1 }, 0 ) , "{.[1].}" )
TEST_LINE( AIns( { 1 }, NIL ) , "{.[1].}" )
#ifndef __XPP__
TEST_LINE( aIns( ErrorNew() ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew() ) , "ERROR Object" )
#endif
TEST_LINE( aIns( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( aIns( ErrorNew(), 100 ) , "ERROR Object" )
TEST_LINE( aIns( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( aIns( ErrorNew(), -1 ) , "ERROR Object" )
TEST_LINE( aIns( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( aIns( ErrorNew(), NIL ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew(), 100 ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew(), -1 ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( AIns( ErrorNew(), NIL ) , "ERROR Object" )
#ifndef __XPP__
TEST_LINE( aTail() , NIL )
TEST_LINE( ATail() , NIL )
#endif
TEST_LINE( aTail( NIL ) , NIL )
TEST_LINE( aTail( "" ) , NIL )
TEST_LINE( aTail( {} ) , NIL )
TEST_LINE( aTail( { 1, 2 } ) , 2 )
TEST_LINE( aTail( ErrorNew() ) , NIL )
TEST_LINE( ATail( NIL ) , NIL )
TEST_LINE( ATail( "" ) , NIL )
TEST_LINE( ATail( {} ) , NIL )
TEST_LINE( ATail( { 1, 2 } ) , 2 )
TEST_LINE( ATail( ErrorNew() ) , NIL )
#ifndef __XPP__
TEST_LINE( aSize() , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( aSize( NIL ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( aSize( {} ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( aSize( ErrorNew() ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize() , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize( NIL ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize( {} ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize( ErrorNew() ) , "E BASE 2023 Argument error ASIZE " )
#endif
TEST_LINE( aSize( NIL, 0 ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( aSize( {}, 0 ) , "{.[0].}" )
TEST_LINE( aSize( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( aSize( NIL, 1 ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( aSize( {}, 1 ) , "{.[1].}" )
TEST_LINE( aSize( { 1, 2 }, 1 ) , "{.[1].}" )
TEST_LINE( aSize( { 1, "AAAA" }, 1 ) , "{.[1].}" )
TEST_LINE( aSize( { "BBB", "AAAA" }, 0 ) , "{.[0].}" )
TEST_LINE( aSize( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( aSize( NIL, -1 ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( aSize( {}, -1 ) , "{.[0].}" )
TEST_LINE( aSize( { 1 }, -1 ) , "{.[0].}" )
TEST_LINE( ASize( NIL, 0 ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize( {}, 0 ) , "{.[0].}" )
TEST_LINE( ASize( ErrorNew(), 0 ) , "ERROR Object" )
TEST_LINE( ASize( NIL, 1 ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize( {}, 1 ) , "{.[1].}" )
TEST_LINE( ASize( { 1, 2 }, 1 ) , "{.[1].}" )
TEST_LINE( ASize( { 1, "AAAA" }, 1 ) , "{.[1].}" )
TEST_LINE( ASize( { "BBB", "AAAA" }, 0 ) , "{.[0].}" )
TEST_LINE( ASize( ErrorNew(), 1 ) , "ERROR Object" )
TEST_LINE( ASize( NIL, -1 ) , "E BASE 2023 Argument error ASIZE " )
TEST_LINE( ASize( {}, -1 ) , "{.[0].}" )
TEST_LINE( ASize( { 1 }, -1 ) , "{.[0].}" )
#ifdef __HARBOUR__
TEST_LINE( aSize( { 1 }, 5000 ) , "{.[5000].}" )
TEST_LINE( ASize( { 1 }, 5000 ) , "{.[5000].}" )
#else
TEST_LINE( aSize( { 1 }, 5000 ) , "{.[1].}" )
TEST_LINE( ASize( { 1 }, 5000 ) , "{.[1].}" )
#endif
TEST_LINE( aSize( ErrorNew(), -1 ) , "ERROR Object" )
TEST_LINE( aSize( ErrorNew(), 100 ) , "ERROR Object" )
TEST_LINE( aAdd( NIL, NIL ) , "E BASE 1123 Argument error AADD A:2:U:NIL;U:NIL F:S" )
TEST_LINE( aAdd( {}, NIL ) , NIL )
TEST_LINE( aAdd( {}, "A" ) , "A" )
TEST_LINE( aAdd( ErrorNew(), NIL ) , NIL )
TEST_LINE( aAdd( ErrorNew(), "A" ) , "A" )
TEST_LINE( ASize( ErrorNew(), -1 ) , "ERROR Object" )
TEST_LINE( ASize( ErrorNew(), 100 ) , "ERROR Object" )
TEST_LINE( AAdd( NIL, NIL ) , "E BASE 1123 Argument error AADD A:2:U:NIL;U:NIL F:S" )
TEST_LINE( AAdd( {}, NIL ) , NIL )
TEST_LINE( AAdd( {}, "A" ) , "A" )
TEST_LINE( AAdd( ErrorNew(), NIL ) , NIL )
TEST_LINE( AAdd( ErrorNew(), "A" ) , "A" )
#ifndef __XPP__
TEST_LINE( Array() , NIL )
#endif
@@ -205,145 +205,145 @@ FUNCTION Main_ARRAY()
TEST_LINE( Array( 4, 3, 2 ) , "{.[4].}" )
TEST_LINE( Array( 0, 3, 2 ) , "{.[0].}" )
/* AFILL() */
/* AFill() */
TEST_LINE( TAStr(aFill(TANew(),"X") ) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X",NIL,-2)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X",NIL, 0)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X",NIL, 3)) , "XXX......." )
TEST_LINE( TAStr(aFill(TANew(),"X",NIL,20)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 0) ) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 0,-2)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 0, 0)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 0, 3)) , "XXX......." )
TEST_LINE( TAStr(aFill(TANew(),"X", 0,20)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 1) ) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 1,-2)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 1, 0)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 1, 3)) , "XXX......." )
TEST_LINE( TAStr(aFill(TANew(),"X", 1,20)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 3) ) , "..XXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", 3,-2)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 3, 0)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 3, 3)) , "..XXX....." )
TEST_LINE( TAStr(aFill(TANew(),"X", 3,20)) , "..XXXXXXXX" )
TEST_LINE( TAStr(aFill(TANew(),"X", -1) ) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", -1,-2)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", -1, 0)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", -1, 3)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", -1,20)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 21) ) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 21,-2)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 21, 0)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 21, 3)) , ".........." )
TEST_LINE( TAStr(aFill(TANew(),"X", 21,20)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X") ) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X",NIL,-2)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X",NIL, 0)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X",NIL, 3)) , "XXX......." )
TEST_LINE( TAStr(AFill(TANew(),"X",NIL,20)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 0) ) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 0,-2)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 0, 0)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 0, 3)) , "XXX......." )
TEST_LINE( TAStr(AFill(TANew(),"X", 0,20)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 1) ) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 1,-2)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 1, 0)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 1, 3)) , "XXX......." )
TEST_LINE( TAStr(AFill(TANew(),"X", 1,20)) , "XXXXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 3) ) , "..XXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", 3,-2)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 3, 0)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 3, 3)) , "..XXX....." )
TEST_LINE( TAStr(AFill(TANew(),"X", 3,20)) , "..XXXXXXXX" )
TEST_LINE( TAStr(AFill(TANew(),"X", -1) ) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", -1,-2)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", -1, 0)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", -1, 3)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", -1,20)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 21) ) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 21,-2)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 21, 0)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 21, 3)) , ".........." )
TEST_LINE( TAStr(AFill(TANew(),"X", 21,20)) , ".........." )
/* ACOPY() */
/* ACopy() */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1 )) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 0 )) , ".........." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 3 )) , "ABC......." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 20 )) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3 )) , "CDEFGHIJ.." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 0 )) , ".........." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 3 )) , "CDE......." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 20 )) , "CDEFGHIJ.." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21 )) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 0 )) , ".........." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 3 )) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 20 )) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1,NIL, 1)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 0, 1)) , ".........." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 3, 0)) , "ABC......." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 3, 2)) , ".ABC......" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 3, 8)) , ".......ABC" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 3, 20)) , ".........A" ) /* Strange in CA-Cl*pper, it should return: ".........." */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 1, 20, 1)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3,NIL, 3)) , "..CDEFGHIJ" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 0, 3)) , ".........." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 3, 0)) , "CDE......." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 3, 2)) , ".CDE......" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 3, 8)) , ".......CDE" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 3, 20)) , ".........C" ) /* Strange in CA-Cl*pper, it should return: ".........." */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 3, 20, 3)) , "..CDEFGHIJ" )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21,NIL, 21)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".........J", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 0, 21)) , ".........." )
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 3, 0)) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 3, 2)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".J........", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 3, 8)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".......J..", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 3, 20)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".........J", fixed in 5.3a */
TEST_LINE( TAStr(aCopy(TARng(),TANew(), 21, 20, 21)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".........J", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1 )) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 0 )) , ".........." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 3 )) , "ABC......." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 20 )) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3 )) , "CDEFGHIJ.." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 0 )) , ".........." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 3 )) , "CDE......." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 20 )) , "CDEFGHIJ.." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21 )) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 0 )) , ".........." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 3 )) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 20 )) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1,NIL, 1)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 0, 1)) , ".........." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 3, 0)) , "ABC......." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 3, 2)) , ".ABC......" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 3, 8)) , ".......ABC" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 3, 20)) , ".........A" ) /* Strange in CA-Cl*pper, it should return: ".........." */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 1, 20, 1)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3,NIL, 3)) , "..CDEFGHIJ" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 0, 3)) , ".........." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 3, 0)) , "CDE......." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 3, 2)) , ".CDE......" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 3, 8)) , ".......CDE" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 3, 20)) , ".........C" ) /* Strange in CA-Cl*pper, it should return: ".........." */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 3, 20, 3)) , "..CDEFGHIJ" )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21,NIL, 21)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".........J", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 0, 21)) , ".........." )
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 3, 0)) , ".........." ) /* Bug in CA-Cl*pper, it will return: "J.........", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 3, 2)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".J........", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 3, 8)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".......J..", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 3, 20)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".........J", fixed in 5.3a */
TEST_LINE( TAStr(ACopy(TARng(),TANew(), 21, 20, 21)) , ".........." ) /* Bug in CA-Cl*pper, it will return: ".........J", fixed in 5.3a */
/* ASORT() */
/* ASort() */
TEST_LINE( TAStr(aSort(TARRv(),,,{||NIL})) , "ABCDEFGHIJ" ) /* Bug/Feature in CA-Cl*pper, it will return: "IHGFEDCBAJ" */
TEST_LINE( TAStr(aSort(TARRv())) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(),NIL,NIL)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(),NIL, -2)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(),NIL, 0)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(),NIL, 3)) , "HIJGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(),NIL, 20)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(), -5 )) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), -5, -2)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), -5, 0)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), -5, 3)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), -5, 20)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 0 )) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(), 0, -2)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(), 0, 0)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(), 0, 3)) , "HIJGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 0, 20)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(aSort(TARRv(), 5 )) , "JIHGABCDEF" )
TEST_LINE( TAStr(ASort(TARRv(),,,{||NIL})) , "ABCDEFGHIJ" ) /* Bug/Feature in CA-Cl*pper, it will return: "IHGFEDCBAJ" */
TEST_LINE( TAStr(ASort(TARRv())) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(),NIL,NIL)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(),NIL, -2)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(),NIL, 0)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(),NIL, 3)) , "HIJGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(),NIL, 20)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(), -5 )) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), -5, -2)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), -5, 0)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), -5, 3)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), -5, 20)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 0 )) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(), 0, -2)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(), 0, 0)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(), 0, 3)) , "HIJGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 0, 20)) , "ABCDEFGHIJ" )
TEST_LINE( TAStr(ASort(TARRv(), 5 )) , "JIHGABCDEF" )
#ifdef __HARBOUR__
TEST_LINE( TAStr(aSort(TARRv(), 5, -2)) , "JIHGABCDEF" ) /* CA-Cl*pper will crash or GPF on that line. */
TEST_LINE( TAStr(ASort(TARRv(), 5, -2)) , "JIHGABCDEF" ) /* CA-Cl*pper will crash or GPF on that line. */
#endif
TEST_LINE( TAStr(aSort(TARRv(), 5, 0)) , "JIHGABCDEF" )
TEST_LINE( TAStr(aSort(TARRv(), 5, 3)) , "JIHGDEFCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 5, 20)) , "JIHGABCDEF" )
TEST_LINE( TAStr(aSort(TARRv(), 20 )) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 20, -2)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 20, 0)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 20, 3)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(aSort(TARRv(), 20, 20)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 5, 0)) , "JIHGABCDEF" )
TEST_LINE( TAStr(ASort(TARRv(), 5, 3)) , "JIHGDEFCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 5, 20)) , "JIHGABCDEF" )
TEST_LINE( TAStr(ASort(TARRv(), 20 )) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 20, -2)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 20, 0)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 20, 3)) , "JIHGFEDCBA" )
TEST_LINE( TAStr(ASort(TARRv(), 20, 20)) , "JIHGFEDCBA" )
/* ASCAN() */
/* AScan() */
#ifndef __XPP__
TEST_LINE( aScan() , 0 )
TEST_LINE( aScan( NIL ) , 0 )
TEST_LINE( aScan( "A" ) , 0 )
TEST_LINE( AScan() , 0 )
TEST_LINE( AScan( NIL ) , 0 )
TEST_LINE( AScan( "A" ) , 0 )
#endif
TEST_LINE( aScan( "A", "A" ) , 0 )
TEST_LINE( aScan( "A", {|| .F. } ) , 0 )
TEST_LINE( aScan( {1,2,3}, {|| NIL } ) , 0 )
TEST_LINE( aScan( saAllTypes, scString ) , 1 )
TEST_LINE( AScan( "A", "A" ) , 0 )
TEST_LINE( AScan( "A", {|| .F. } ) , 0 )
TEST_LINE( AScan( {1,2,3}, {|| NIL } ) , 0 )
TEST_LINE( AScan( saAllTypes, scString ) , 1 )
#ifdef __HARBOUR__
TEST_LINE( aScan( @saAllTypes, scString ) , 1 ) /* Bug in CA-Cl*pper, it will return 0 */
TEST_LINE( aScan( saAllTypes, @scString ) , 1 ) /* Bug in CA-Cl*pper, it will return 0 */
TEST_LINE( AScan( @saAllTypes, scString ) , 1 ) /* Bug in CA-Cl*pper, it will return 0 */
TEST_LINE( AScan( saAllTypes, @scString ) , 1 ) /* Bug in CA-Cl*pper, it will return 0 */
#endif
TEST_LINE( aScan( saAllTypes, scStringE ) , 1 )
TEST_LINE( aScan( saAllTypes, scStringZ ) , 3 )
TEST_LINE( aScan( saAllTypes, snIntZ ) , 4 )
TEST_LINE( aScan( saAllTypes, snDoubleZ ) , 4 )
TEST_LINE( aScan( saAllTypes, snIntP ) , 6 )
TEST_LINE( aScan( saAllTypes, snLongP ) , 7 )
TEST_LINE( aScan( saAllTypes, snDoubleP ) , 8 )
TEST_LINE( aScan( saAllTypes, snIntN ) , 9 )
TEST_LINE( aScan( saAllTypes, snLongN ) , 10 )
TEST_LINE( aScan( saAllTypes, snDoubleN ) , 11 )
TEST_LINE( aScan( saAllTypes, snDoubleI ) , 4 )
TEST_LINE( aScan( saAllTypes, sdDateE ) , 13 )
TEST_LINE( aScan( saAllTypes, slFalse ) , 14 )
TEST_LINE( aScan( saAllTypes, slTrue ) , 15 )
TEST_LINE( aScan( saAllTypes, soObject ) , 0 )
TEST_LINE( aScan( saAllTypes, suNIL ) , 17 )
TEST_LINE( aScan( saAllTypes, sbBlock ) , 0 )
TEST_LINE( aScan( saAllTypes, sbBlockC ) , 0 )
TEST_LINE( aScan( saAllTypes, saArray ) , 0 )
TEST_LINE( AScan( saAllTypes, scStringE ) , 1 )
TEST_LINE( AScan( saAllTypes, scStringZ ) , 3 )
TEST_LINE( AScan( saAllTypes, snIntZ ) , 4 )
TEST_LINE( AScan( saAllTypes, snDoubleZ ) , 4 )
TEST_LINE( AScan( saAllTypes, snIntP ) , 6 )
TEST_LINE( AScan( saAllTypes, snLongP ) , 7 )
TEST_LINE( AScan( saAllTypes, snDoubleP ) , 8 )
TEST_LINE( AScan( saAllTypes, snIntN ) , 9 )
TEST_LINE( AScan( saAllTypes, snLongN ) , 10 )
TEST_LINE( AScan( saAllTypes, snDoubleN ) , 11 )
TEST_LINE( AScan( saAllTypes, snDoubleI ) , 4 )
TEST_LINE( AScan( saAllTypes, sdDateE ) , 13 )
TEST_LINE( AScan( saAllTypes, slFalse ) , 14 )
TEST_LINE( AScan( saAllTypes, slTrue ) , 15 )
TEST_LINE( AScan( saAllTypes, soObject ) , 0 )
TEST_LINE( AScan( saAllTypes, suNIL ) , 17 )
TEST_LINE( AScan( saAllTypes, sbBlock ) , 0 )
TEST_LINE( AScan( saAllTypes, sbBlockC ) , 0 )
TEST_LINE( AScan( saAllTypes, saArray ) , 0 )
SET EXACT ON
TEST_LINE( aScan( saAllTypes, scString ) , 1 )
TEST_LINE( aScan( saAllTypes, scStringE ) , 2 )
TEST_LINE( aScan( saAllTypes, scStringZ ) , 3 )
TEST_LINE( AScan( saAllTypes, scString ) , 1 )
TEST_LINE( AScan( saAllTypes, scStringE ) , 2 )
TEST_LINE( AScan( saAllTypes, scStringZ ) , 3 )
SET EXACT OFF
RETURN NIL
@@ -362,8 +362,8 @@ STATIC FUNCTION TANew( cChar, nLen )
aArray := Array( nLen )
/* Intentionally not using aFill() here, since this function is
involved in testing aFill() itself. */
/* Intentionally not using AFill() here, since this function is
involved in testing AFill() itself. */
FOR tmp := 1 TO nLen
aArray[ tmp ] := cChar
NEXT

View File

@@ -62,6 +62,7 @@ FUNCTION Main_MISC()
#ifdef __HARBOUR__
LOCAL cEOL
#endif
LOCAL o, tmp := 0
/* Some random error object tests taken from the separate test source */
@@ -76,6 +77,156 @@ FUNCTION Main_MISC()
TEST_LINE( Len( oError ) , 12 )
#endif
/* Some color handling tests */
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "T" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "A" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "B" ), SetColor() ) , "B/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "C" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "D" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "E" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "F" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "G" ), SetColor() ) , "G/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "H" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "I" ), SetColor() ) , "N/W,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "J" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "K" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "L" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "M" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "N" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "O" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "P" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "Q" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "R" ), SetColor() ) , "R/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "S" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "T" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "U" ), SetColor() ) , "U/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "V" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "W" ), SetColor() ) , "W/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "X" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "Y" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "Z" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "0" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "1" ), SetColor() ) , "B/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "2" ), SetColor() ) , "G/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "3" ), SetColor() ) , "BG/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "4" ), SetColor() ) , "R/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "5" ), SetColor() ) , "BR/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "6" ), SetColor() ) , "GR/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "7" ), SetColor() ) , "W/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "8" ), SetColor() ) , "N+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "9" ), SetColor() ) , "B+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "10" ), SetColor() ) , "G+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "11" ), SetColor() ) , "BG+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "12" ), SetColor() ) , "R+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "13" ), SetColor() ) , "BR+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "14" ), SetColor() ) , "GR+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "15" ), SetColor() ) , "W+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "16" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "@" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "!" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "-" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "/" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "//" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "," ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( ",," ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "+" ), SetColor() ) , "N+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "+*" ), SetColor() ) , "N*+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "*" ), SetColor() ) , "N*/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "*+" ), SetColor() ) , "N*+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "BR/W+" ), SetColor() ) , "BR+/W,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "BR/W+" ), SetColor() ) , "BR+/W,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "RB/W+" ), SetColor() ) , "BR+/W,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "0123456789" ), SetColor() ) , "BR/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "1234567890" ), SetColor() ) , "G/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "1" ), SetColor() ) , "B/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "11" ), SetColor() ) , "BG+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "1111111111" ), SetColor() ) , "W/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "2" ), SetColor() ) , "G/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "22" ), SetColor() ) , "GR/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "2222222222" ), SetColor() ) , "GR+/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ), SetColor() ) , "N/N,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "ABCDEFGHIJKLMNOPQRSTUVW" ), SetColor() ) , "N/U,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "N/W+" ), SetColor() ) , "N+/W,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( '"W"'+"/"+'"R"' ), SetColor() ) , "W/R,N/N,N/N,N/N,N/N" )
TEST_LINE( ( SetColor( "N/N,N/N,N/N,N/N,N/N" ), SetColor( "'W'"+"/"+"'R'" ), SetColor() ) , "W/R,N/N,N/N,N/N,N/N" )
SetColor( "" ) /* Reset color to default */
o := _GET_( tmp, "tmp" )
TEST_LINE( ( o:colorSpec := "T" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "A" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "B" , o:colorSpec ) , "B/N,B/N" )
TEST_LINE( ( o:colorSpec := "C" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "D" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "E" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "F" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "G" , o:colorSpec ) , "G/N,G/N" )
TEST_LINE( ( o:colorSpec := "H" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "I" , o:colorSpec ) , "N/W,N/W" )
TEST_LINE( ( o:colorSpec := "J" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "K" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "L" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "M" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "N" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "O" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "P" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "Q" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "R" , o:colorSpec ) , "R/N,R/N" )
TEST_LINE( ( o:colorSpec := "S" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "T" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "U" , o:colorSpec ) , "U/N,U/N" )
TEST_LINE( ( o:colorSpec := "V" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "W" , o:colorSpec ) , "W/N,W/N" )
TEST_LINE( ( o:colorSpec := "X" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "Y" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "Z" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "0" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "1" , o:colorSpec ) , "B/N,B/N" )
TEST_LINE( ( o:colorSpec := "2" , o:colorSpec ) , "G/N,G/N" )
TEST_LINE( ( o:colorSpec := "3" , o:colorSpec ) , "BG/N,BG/N" )
TEST_LINE( ( o:colorSpec := "4" , o:colorSpec ) , "R/N,R/N" )
TEST_LINE( ( o:colorSpec := "5" , o:colorSpec ) , "BR/N,BR/N" )
TEST_LINE( ( o:colorSpec := "6" , o:colorSpec ) , "GR/N,GR/N" )
TEST_LINE( ( o:colorSpec := "7" , o:colorSpec ) , "W/N,W/N" )
TEST_LINE( ( o:colorSpec := "8" , o:colorSpec ) , "N+/N,N+/N" )
TEST_LINE( ( o:colorSpec := "9" , o:colorSpec ) , "B+/N,B+/N" )
TEST_LINE( ( o:colorSpec := "10" , o:colorSpec ) , "G+/N,G+/N" )
TEST_LINE( ( o:colorSpec := "11" , o:colorSpec ) , "BG+/N,BG+/N" )
TEST_LINE( ( o:colorSpec := "12" , o:colorSpec ) , "R+/N,R+/N" )
TEST_LINE( ( o:colorSpec := "13" , o:colorSpec ) , "BR+/N,BR+/N" )
TEST_LINE( ( o:colorSpec := "14" , o:colorSpec ) , "GR+/N,GR+/N" )
TEST_LINE( ( o:colorSpec := "15" , o:colorSpec ) , "W+/N,W+/N" )
TEST_LINE( ( o:colorSpec := "16" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "@" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "!" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "-" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "/" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "//" , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "," , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := ",," , o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "+" , o:colorSpec ) , "N+/N,N+/N" )
TEST_LINE( ( o:colorSpec := "+*" , o:colorSpec ) , "N*+/N,N*+/N" )
TEST_LINE( ( o:colorSpec := "*" , o:colorSpec ) , "N*/N,N*/N" )
TEST_LINE( ( o:colorSpec := "*+" , o:colorSpec ) , "N*+/N,N*+/N" )
TEST_LINE( ( o:colorSpec := "BR/W+" , o:colorSpec ) , "BR+/W,BR+/W" )
TEST_LINE( ( o:colorSpec := "BR/W+" , o:colorSpec ) , "BR+/W,BR+/W" )
TEST_LINE( ( o:colorSpec := "RB/W+" , o:colorSpec ) , "BR+/W,BR+/W" )
TEST_LINE( ( o:colorSpec := "0123456789" , o:colorSpec ) , "BR/N,BR/N" )
TEST_LINE( ( o:colorSpec := "1234567890" , o:colorSpec ) , "G/N,G/N" )
TEST_LINE( ( o:colorSpec := "1" , o:colorSpec ) , "B/N,B/N" )
TEST_LINE( ( o:colorSpec := "11" , o:colorSpec ) , "BG+/N,BG+/N" )
TEST_LINE( ( o:colorSpec := "1111111111" , o:colorSpec ) , "W/N,W/N" )
TEST_LINE( ( o:colorSpec := "2" , o:colorSpec ) , "G/N,G/N" )
TEST_LINE( ( o:colorSpec := "22" , o:colorSpec ) , "GR/N,GR/N" )
TEST_LINE( ( o:colorSpec := "2222222222" , o:colorSpec ) , "GR+/N,GR+/N" )
TEST_LINE( ( o:colorSpec := "ABCDEFGHIJKLMNOPQRSTUVWXYZ", o:colorSpec ) , "N/N,N/N" )
TEST_LINE( ( o:colorSpec := "ABCDEFGHIJKLMNOPQRSTUVW" , o:colorSpec ) , "N/U,N/U" )
TEST_LINE( ( o:colorSpec := "N/W+" , o:colorSpec ) , "N+/W,N+/W" )
TEST_LINE( ( o:colorSpec := '"W"'+"/"+'"R"' , o:colorSpec ) , "W/R,W/R" )
TEST_LINE( ( o:colorSpec := "'W'"+"/"+"'R'" , o:colorSpec ) , "W/R,W/R" )
/* "Samples" function tests (AMPM(), DAYS(), ELAPTIME(), ... ) */
TEST_LINE( AMPM( "" ) , "12 am" )