diff --git a/harbour/ChangeLog b/harbour/ChangeLog index dabda9e79c..6ce3897198 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,23 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +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 diff --git a/harbour/source/debug/debugger.prg b/harbour/source/debug/debugger.prg index f540655fbd..59966b0efa 100644 --- a/harbour/source/debug/debugger.prg +++ b/harbour/source/debug/debugger.prg @@ -567,35 +567,35 @@ METHOD CallStackProcessKey( nKey ) CLASS HBDebugger DO CASE CASE nKey == K_HOME .OR. nKey == K_CTRL_PGUP .OR. nKey == K_CTRL_HOME - if ::oBrwStack:Cargo > 1 + IF ::oBrwStack:Cargo > 1 ::oBrwStack:GoTop() ::oBrwStack:ForceStable() lUpdate := .T. - endif + ENDIF CASE nKey == K_END .OR. nKey == K_CTRL_PGDN .OR. nKey == K_CTRL_END - if ::oBrwStack:Cargo < Len( ::aProcStack ) + IF ::oBrwStack:Cargo < Len( ::aProcStack ) ::oBrwStack:GoBottom() ::oBrwStack:ForceStable() lUpdate := .T. - endif + ENDIF CASE nKey == K_UP - if ::oBrwStack:Cargo > 1 + IF ::oBrwStack:Cargo > 1 ::oBrwStack:Up() ::oBrwStack:ForceStable() lUpdate := .T. - endif + ENDIF CASE nKey == K_DOWN - if ::oBrwStack:Cargo < Len( ::aProcStack ) + IF ::oBrwStack:Cargo < Len( ::aProcStack ) ::oBrwStack:Down() ::oBrwStack:ForceStable() lUpdate := .T. - endif + ENDIF CASE nKey == K_PGUP @@ -611,38 +611,42 @@ METHOD CallStackProcessKey( nKey ) CLASS HBDebugger CASE nKey == K_LBUTTONDOWN - if ( nSkip := MRow() - ::oWndStack:nTop - ::oBrwStack:RowPos ) != 0 - if nSkip > 0 - for n := 1 to nSkip + IF ( nSkip := MRow() - ::oWndStack:nTop - ::oBrwStack:RowPos ) != 0 + IF nSkip > 0 + FOR n := 1 TO nSkip ::oBrwStack:Down() ::oBrwStack:Stabilize() - next - else - for n := 1 to nSkip + 2 step -1 + NEXT + ELSE + FOR n := 1 TO nSkip + 2 STEP -1 ::oBrwStack:Up() ::oBrwStack:Stabilize() - next - endif + NEXT + ENDIF ::oBrwStack:ForceStable() - endif + ENDIF lUpdate := .T. ENDCASE - if lUpdate - if ::oWndVars != NIL .AND. ::oWndVars:lVisible + IF lUpdate + IF ::oWndVars != NIL .AND. ::oWndVars:lVisible ::LoadVars() ::ShowVars() - endif + ENDIF // jump to source line for a function - /*if ::aCallStack[ ::oBrwStack:Cargo ][ CSTACK_LINE ] != NIL + + /* + IF ::aCallStack[ ::oBrwStack:Cargo ][ CSTACK_LINE ] != NIL ::ShowCodeLine( ::aCallStack[ ::oBrwStack:Cargo ][ CSTACK_LINE ], ::aCallStack[ ::oBrwStack:Cargo ][ CSTACK_MODULE ] ) - else + ELSE ::GotoLine( 1 ) - endif*/ + ENDIF + */ + ::ShowCodeLine( ::oBrwStack:Cargo ) - endif + ENDIF RETURN NIL @@ -663,17 +667,17 @@ METHOD CodeWindowProcessKey( nKey ) CLASS HBDebugger CASE nKey == K_HOME .OR. nKey == K_CTRL_PGUP .OR. nKey == K_CTRL_HOME ::oBrwText:GoTop() - if ::oWndCode:lFocused + IF ::oWndCode:lFocused SetCursor( SC_SPECIAL1 ) - endif + ENDIF CASE nKey == K_END .OR. nKey == K_CTRL_PGDN .OR. nKey == K_CTRL_END ::oBrwText:GoBottom() ::oBrwText:End() - if ::oWndCode:lFocused + IF ::oWndCode:lFocused SetCursor( SC_SPECIAL1 ) - endif + ENDIF CASE nKey == K_LEFT ::oBrwText:Left() @@ -712,29 +716,29 @@ METHOD Colors() CLASS HBDebugger LOCAL nWidth := oWndColors:nRight - oWndColors:nLeft - 1 LOCAL oCol - if ::lMonoDisplay + IF ::lMonoDisplay Alert( "Monochrome display" ) RETURN NIL - endif + ENDIF oBrwColors:Cargo := { 1, {} } // Actual highligthed row oBrwColors:ColorSpec := ::ClrModal() - oBrwColors:goTopBlock := { || oBrwColors:cargo[ 1 ]:= 1 } - oBrwColors:goBottomBlock := { || oBrwColors:cargo[ 1 ]:= Len(oBrwColors:cargo[ 2 ][ 1 ])} - oBrwColors:skipBlock := { |nPos| ( nPos:= ArrayBrowseSkip(nPos, oBrwColors), oBrwColors:cargo[ 1 ]:= ; - oBrwColors:cargo[ 1 ] + nPos,nPos ) } + oBrwColors:goTopBlock := { || oBrwColors:cargo[ 1 ] := 1 } + oBrwColors:goBottomBlock := { || oBrwColors:cargo[ 1 ] := Len( oBrwColors:cargo[ 2 ][ 1 ] ) } + oBrwColors:skipBlock := { | nPos | ( nPos := ArrayBrowseSkip( nPos, oBrwColors ), oBrwColors:cargo[ 1 ] := ; + oBrwColors:cargo[ 1 ] + nPos, nPos ) } oBrwColors:AddColumn( oCol := TBColumnNew( "", { || PadR( aColors[ oBrwColors:Cargo[ 1 ] ], 14 ) } ) ) - oCol:DefColor := { 1, 2 } - AAdd( oBrwColors:Cargo[ 2 ],acolors) + oCol:defColor := { 1, 2 } + AAdd( oBrwColors:Cargo[ 2 ], aColors ) oBrwColors:AddColumn( oCol := TBColumnNew( "",; { || PadR( '"' + ::aColors[ oBrwColors:Cargo[ 1 ] ] + '"', nWidth - 15 ) } ) ) - AAdd( oBrwColors:Cargo[ 2 ],acolors) - oCol:DefColor := { 1, 3 } + AAdd( oBrwColors:Cargo[ 2 ], aColors ) + oCol:defColor := { 1, 3 } ocol:width := 50 - oBrwColors:autolite:=.F. + oBrwColors:autolite := .F. - oWndColors:bPainted := { || oBrwColors:ForceStable(),RefreshVarsS(oBrwColors)} + oWndColors:bPainted := { || oBrwColors:ForceStable(), RefreshVarsS( oBrwColors ) } oWndColors:bKeyPressed := { | nKey | SetsKeyPressed( nKey, oBrwColors,; Len( aColors ), oWndColors, "Debugger Colors",; @@ -755,7 +759,7 @@ METHOD CommandWindowProcessKey( nKey ) CLASS HBDebugger DO CASE CASE nKey == K_UP .OR. nKey == K_F3 - if ::nCommand > 1 + IF ::nCommand > 1 ::oGetListCommand:oGet:Assign() ::aLastCommands[ ::nCommand ] := Trim( ::oGetListCommand:oGet:VarGet() ) ::nCommand-- @@ -764,11 +768,11 @@ METHOD CommandWindowProcessKey( nKey ) CLASS HBDebugger ::oGetListCommand:oGet:Buffer := cCommand ::oGetListCommand:oGet:Pos := Len( ::aLastCommands[ ::nCommand ] ) + 1 ::oGetListCommand:oGet:Display() - endif + ENDIF CASE nKey == K_DOWN - if ::nCommand < Len( ::aLastCommands ) + IF ::nCommand < Len( ::aLastCommands ) ::oGetListCommand:oGet:Assign() ::aLastCommands[ ::nCommand ] := Trim( ::oGetListCommand:oGet:VarGet() ) ::nCommand++ @@ -777,7 +781,7 @@ METHOD CommandWindowProcessKey( nKey ) CLASS HBDebugger ::oGetListCommand:oGet:Buffer := cCommand ::oGetListCommand:oGet:Pos := Len( ::aLastCommands[ ::nCommand ] ) + 1 ::oGetListCommand:oGet:Display() - endif + ENDIF CASE nKey == K_ENTER @@ -786,7 +790,7 @@ METHOD CommandWindowProcessKey( nKey ) CLASS HBDebugger ::oGetListCommand:oGet:Assign() cCommand := Trim( ::oGetListCommand:oGet:VarGet() ) - if ! Empty( cCommand ) + IF ! Empty( cCommand ) IF ( n := AScan( ::aLastCommands, cCommand ) ) > 0 .AND. n < Len( ::aLastCommands ) ADel( ::aLastCommands, n, .T. ) ENDIF @@ -796,7 +800,7 @@ METHOD CommandWindowProcessKey( nKey ) CLASS HBDebugger ::nCommand := Len( ::aLastCommands ) ::oWndCommand:ScrollUp( 1 ) ::DoCommand( cCommand ) - endif + ENDIF DispOutAt( ::oWndCommand:nBottom - 1, ::oWndCommand:nLeft + 1, "> ",; __DbgColors()[ 2 ] ) @@ -1087,10 +1091,10 @@ METHOD DoScript( cFileName ) CLASS HBDebugger IF File( cFileName ) cInfo := MemoRead( cFileName ) nLen := MLCount( cInfo, NIL, NIL, .F. ) - for n := 1 to nLen + FOR n := 1 TO nLen cLine := MemoLine( cInfo, 16384, n, NIL, .F., .T. ) ::DoCommand( cLine ) - next + NEXT ENDIF RETURN NIL @@ -1115,7 +1119,7 @@ METHOD EditColor( nColor, oBrwColors ) CLASS HBDebugger READ SetCursor( SC_NONE ) #else - cColor := getdbginput( Row(), Col() + 15, cColor, {| cColor | iif( Type( cColor ) != "C", ( Alert( "Must be string" ), .F. ), .T. ) }, SubStr( ::ClrModal(), 5 ) ) + cColor := getdbginput( Row(), Col() + 15, cColor, { | cColor | iif( Type( cColor ) != "C", ( Alert( "Must be string" ), .F. ), .T. ) }, SubStr( ::ClrModal(), 5 ) ) #endif Set( _SET_SCOREBOARD, lPrevScore ) @@ -1218,10 +1222,10 @@ METHOD GetExprValue( xExpr, lValid ) CLASS HBDebugger LOCAL xResult LOCAL oErr - LOCAL bOldErrorBlock + LOCAL bOldErrorBlock := ErrorBlock( { | oErr | Break( oErr ) } ) lValid := .F. - bOldErrorBlock := ErrorBlock( {|oErr| Break( oErr ) } ) + BEGIN SEQUENCE xResult := hb_DBG_GetExprValue( ::pInfo, xExpr, @lValid ) IF !lValid @@ -1231,11 +1235,13 @@ METHOD GetExprValue( xExpr, lValid ) CLASS HBDebugger xResult := oErr:operation + ": " + oErr:description IF ISARRAY( oErr:args ) xResult += "; arguments:" - AEval( oErr:args, {| x | xResult += " " + AllTrim( hb_CStr( x ) ) } ) + AEval( oErr:args, { | x | xResult += " " + AllTrim( hb_CStr( x ) ) } ) ENDIF lValid := .F. END SEQUENCE + ErrorBlock( bOldErrorBlock ) + RETURN xResult @@ -1267,28 +1273,33 @@ METHOD GotoLine( nLine ) CLASS HBDebugger LOCAL nRow LOCAL nCol - /*if ::oBrwVars != NIL + /* + IF ::oBrwVars != NIL ::ShowVars() - endif*/ + ENDIF + */ ::oBrwText:GotoLine( nLine ) nRow := Row() nCol := Col() // no source code line stored yet - /*if ::oBrwStack != NIL .AND. Len( ::aCallStack ) > 0 .AND. ; + + /* + IF ::oBrwStack != NIL .AND. Len( ::aCallStack ) > 0 .AND. ; ::aCallStack[ ::oBrwStack:Cargo ][ CSTACK_LINE ] == NIL ::aCallStack[ ::oBrwStack:Cargo ][ CSTACK_LINE ] := nLine - endif*/ + ENDIF + */ - if ::oWndStack != NIL .AND. ! ::oBrwStack:Stable + IF ::oWndStack != NIL .AND. ! ::oBrwStack:Stable ::oBrwStack:ForceStable() - endif + ENDIF - if ::oWndCode:lFocused .AND. SetCursor() != SC_SPECIAL1 + IF ::oWndCode:lFocused .AND. SetCursor() != SC_SPECIAL1 SetPos( nRow, nCol ) SetCursor( SC_SPECIAL1 ) - endif + ENDIF SetPos( nRow, nCol ) // Store cursor position to be restored by ::oWndCode:bGotFocus @@ -1307,21 +1318,21 @@ METHOD HandleEvent() CLASS HBDebugger LOCAL nMCol LOCAL n - if ::lAnimate - if ::nSpeed != 0 + IF ::lAnimate + IF ::nSpeed != 0 Inkey( ::nSpeed / 10 ) - endif - if hb_DBG_INVOKEDEBUG() //NextKey() == K_ALT_D + ENDIF + IF hb_DBG_INVOKEDEBUG() //NextKey() == K_ALT_D ::lAnimate := .F. - else + ELSE ::Step() RETURN NIL - endif - endif + ENDIF + ENDIF ::lEnd := .F. - do while ! ::lEnd + DO WHILE ! ::lEnd nKey := Inkey( 0, INKEY_ALL ) @@ -1331,59 +1342,59 @@ METHOD HandleEvent() CLASS HBDebugger CASE ::oPullDown:IsOpen() ::oPullDown:ProcessKey( nKey ) - if ::oPullDown:nOpenPopup == 0 // Closed + IF ::oPullDown:nOpenPopup == 0 // Closed ::aWindows[ ::nCurrentWindow ]:Show( .T. ) - endif + ENDIF CASE nKey == K_LDBLCLK - if MRow() != 0 .AND. MRow() != ::nMaxRow + IF MRow() != 0 .AND. MRow() != ::nMaxRow nMRow := MRow() nMCol := MCol() - for n := 1 to Len( ::aWindows ) - if ::aWindows[ n ]:IsOver( nMRow, nMCol ) - if ! ::aWindows[ n ]:lFocused + FOR n := 1 TO Len( ::aWindows ) + IF ::aWindows[ n ]:IsOver( nMRow, nMCol ) + IF ! ::aWindows[ n ]:lFocused ::aWindows[ ::nCurrentWindow ]:Show( .F. ) ::nCurrentWindow := n ::aWindows[ n ]:Show( .T. ) - endif + ENDIF ::aWindows[ n ]:LDblClick( nMRow, nMCol ) exit - endif - next - endif + ENDIF + NEXT + ENDIF CASE nKey == K_LBUTTONDOWN - if MRow() == 0 + IF MRow() == 0 - if ( nPopup := ::oPullDown:GetItemOrdByCoors( 0, MCol() ) ) != 0 - if ! ::oPullDown:IsOpen() - if ::oWndCode:lFocused + IF ( nPopup := ::oPullDown:GetItemOrdByCoors( 0, MCol() ) ) != 0 + IF ! ::oPullDown:IsOpen() + IF ::oWndCode:lFocused Eval( ::oWndCode:bLostFocus ) - endif + ENDIF SetCursor( SC_NONE ) - endif + ENDIF ::oPullDown:ShowPopup( nPopup ) - endif + ENDIF - elseif MRow() != ::nMaxRow + ELSEIF MRow() != ::nMaxRow nMRow := MRow() nMCol := MCol() - for n := 1 to Len( ::aWindows ) - if ::aWindows[ n ]:IsOver( nMRow, nMCol ) - if ! ::aWindows[ n ]:lFocused + FOR n := 1 TO Len( ::aWindows ) + IF ::aWindows[ n ]:IsOver( nMRow, nMCol ) + IF ! ::aWindows[ n ]:lFocused ::aWindows[ ::nCurrentWindow ]:Show( .F. ) ::nCurrentWindow := n ::aWindows[ n ]:Show( .T. ) - endif + ENDIF ::aWindows[ n ]:LButtonDown( nMRow, nMCol ) exit - endif - next - endif + ENDIF + NEXT + ENDIF CASE nKey == K_RBUTTONDOWN /* @@ -1440,17 +1451,17 @@ METHOD HandleEvent() CLASS HBDebugger ::oWndCommand:KeyPressed( nKey ) OTHERWISE - if ( nPopup := ::oPullDown:GetHotKeyPos( __dbgAltToKey( nKey ) ) ) != 0 - if ::oPullDown:nOpenPopup != nPopup - if ::oWndCode:lFocused + IF ( nPopup := ::oPullDown:GetHotKeyPos( __dbgAltToKey( nKey ) ) ) != 0 + IF ::oPullDown:nOpenPopup != nPopup + IF ::oWndCode:lFocused Eval( ::oWndCode:bLostFocus ) - endif + ENDIF SetCursor( SC_NONE ) ::oPullDown:ShowPopup( nPopup ) - endif - endif + ENDIF + ENDIF ENDCASE - enddo + ENDDO RETURN NIL @@ -1463,24 +1474,24 @@ METHOD HideCallStack() CLASS HBDebugger ::lShowCallStack := .F. - if ::oWndStack != NIL + IF ::oWndStack != NIL DispBegin() ::oWndStack:Hide() - if ::aWindows[ ::nCurrentWindow ] == ::oWndStack + IF ::aWindows[ ::nCurrentWindow ] == ::oWndStack ::NextWindow() - endif + ENDIF ::RemoveWindow( ::oWndStack ) ::oWndStack := NIL ::oWndCode:Resize(,,, ::oWndCode:nRight + 16 ) - if ::oWndVars != NIL + IF ::oWndVars != NIL ::oWndVars:Resize(,,, ::oWndVars:nRight + 16 ) - endif - if ::oWndPnt != NIL + ENDIF + IF ::oWndPnt != NIL ::oWndPnt:Resize(,,, ::oWndPnt:nRight + 16 ) - endif + ENDIF DispEnd() - endif + ENDIF RETURN NIL @@ -1507,7 +1518,7 @@ METHOD HideVars() CLASS HBDebugger ::oWndCode:cargo[ 2 ] := Col() ENDIF - if ::aWindows[ ::nCurrentWindow ] == ::oWndVars + IF ::aWindows[ ::nCurrentWindow ] == ::oWndVars ::NextWindow() ENDIF @@ -1537,28 +1548,28 @@ METHOD InputBox( cMsg, uValue, bValid, lEditable ) CLASS HBDebugger DEFAULT lEditable TO .T. - if cType == "C" .AND. Len( uValue ) > nWidth + IF cType == "C" .AND. Len( uValue ) > nWidth uTemp := uValue cPicture := "@s" + LTrim( Str( nWidth ) ) - else + ELSE uTemp := PadR( uValue, nWidth ) - endif + ENDIF oWndInput:lShadow := .T. oWndInput:Show() - if lEditable + IF lEditable #ifndef HB_NO_READDBG - if bValid == NIL + IF bValid == NIL @ nTop + 1, nLeft + 1 GET uTemp PICTURE cPicture COLOR "," + __DbgColors()[ 5 ] - else + ELSE @ nTop + 1, nLeft + 1 GET uTemp PICTURE cPicture VALID Eval( bValid, uTemp ) ; COLOR "," + __DbgColors()[ 5 ] - endif + ENDIF nOldCursor := SetCursor( SC_NORMAL ) oGet := ATail( GetList ) - bMouseSave := SetKey( K_LBUTTONDOWN, {|| iif( MRow() == nTop .AND. MCol() == nLeft + 2,; + bMouseSave := SetKey( K_LBUTTONDOWN, { || iif( MRow() == nTop .AND. MCol() == nLeft + 2,; ( oGet:undo(), oGet:exitState := GE_ESCAPE, .T. ), .F. ) } ) READ SetKey( K_LBUTTONDOWN, bMouseSave) @@ -1566,14 +1577,14 @@ METHOD InputBox( cMsg, uValue, bValid, lEditable ) CLASS HBDebugger #else uTemp := getdbginput( nTop + 1, nLeft + 1, uTemp, bValid, __DbgColors()[ 5 ] ) #endif - else + ELSE DispOutAt( nTop + 1, nLeft + 1, __dbgValToStr( uValue ), "," + __DbgColors()[ 5 ] ) SetPos( nTop + 1, nLeft + 1 ) nOldCursor := SetCursor( SC_NONE ) lExit := .F. - do while ! lExit + DO WHILE ! lExit Inkey( 0 ) DO CASE @@ -1581,34 +1592,34 @@ METHOD InputBox( cMsg, uValue, bValid, lEditable ) CLASS HBDebugger lExit := .T. CASE LastKey() == K_ENTER - if cType == "A" - if Len( uValue ) == 0 + IF cType == "A" + IF Len( uValue ) == 0 Alert( "Array is empty" ) - else + ELSE __DbgArrays( uValue, cMsg ) - endif + ENDIF - elseif cType == "H" - if Len( uValue ) == 0 + ELSEIF cType == "H" + IF Len( uValue ) == 0 Alert( "Hash is empty" ) - else + ELSE __DbgHashes( uValue, cMsg ) - endif + ENDIF - elseif cType == "O" + ELSEIF cType == "O" __DbgObject( uValue, cMsg ) - else + ELSE Alert( "Value cannot be edited" ) - endif + ENDIF OTHERWISE Alert( "Value cannot be edited" ) ENDCASE - enddo + ENDDO SetCursor( nOldCursor ) - endif + ENDIF #ifndef HB_NO_READDBG nOldCursor := SetCursor( SC_NORMAL ) @@ -1669,7 +1680,7 @@ METHOD ListBox( cCaption, aItems ) CLASS HBDebugger nItems := Len( aItems ) nMaxWid := Len( cCaption ) + 2 - AEval( aItems, {|x| nMaxWid := Max( Len( x ), nMaxWid ) } ) + AEval( aItems, { | x | nMaxWid := Max( Len( x ), nMaxWid ) } ) nMaxWid += 2 nTop := ( ::nMaxRow / 2 ) - Min( nItems, ::nMaxRow - 5 ) / 2 @@ -1725,12 +1736,12 @@ METHOD LoadColors() CLASS HBDebugger ::oPullDown:Refresh() ::BarDisplay() ENDIF - for n := 1 to Len( ::aWindows ) + FOR n := 1 TO Len( ::aWindows ) ::aWindows[ n ]:LoadColors() IF ::lActive ::aWindows[ n ]:Refresh() ENDIF - next + NEXT RETURN NIL @@ -1752,21 +1763,21 @@ METHOD LoadVars() CLASS HBDebugger // updates monitored variables aBVars := {} - if ::lShowPublics + IF ::lShowPublics nCount := __mvDbgInfo( HB_MV_PUBLIC ) - for n := nCount to 1 step -1 + FOR n := nCount TO 1 STEP -1 xValue := __mvDbgInfo( HB_MV_PUBLIC, n, @cName ) AAdd( aBVars, { cName, xValue, "Public" } ) - next - endif + NEXT + ENDIF - if ::lShowPrivates + IF ::lShowPrivates nCount := __mvDbgInfo( HB_MV_PRIVATE ) - for n := nCount to 1 step -1 + FOR n := nCount TO 1 STEP -1 xValue := __mvDbgInfo( HB_MV_PRIVATE, n, @cName ) AAdd( aBVars, { cName, xValue, "Private" } ) - next - endif + NEXT + ENDIF IF ::aProcStack[ ::oBrwStack:Cargo ][ CSTACK_LINE ] != NIL IF ::lShowGlobals @@ -1790,24 +1801,24 @@ METHOD LoadVars() CLASS HBDebugger // updates monitored variables NEXT ENDIF - if ::lShowStatics + IF ::lShowStatics cName := ::aProcStack[ ::oBrwStack:Cargo ][ CSTACK_MODULE ] - n := AScan( ::aModules, {|a| FILENAME_EQUAL( a[ MODULE_NAME ], cName ) } ) + n := AScan( ::aModules, { | a | FILENAME_EQUAL( a[ MODULE_NAME ], cName ) } ) IF n > 0 aVars := ::aModules[ n ][ MODULE_STATICS ] - for m := 1 to Len( aVars ) + FOR m := 1 TO Len( aVars ) AAdd( aBVars, aVars[ m ] ) - next + NEXT ENDIF aVars := ::aProcStack[ ::oBrwStack:Cargo ][ CSTACK_STATICS ] - for n := 1 to Len( aVars ) + FOR n := 1 TO Len( aVars ) AAdd( aBVars, aVars[ n ] ) - next - endif + NEXT + ENDIF - if ::lShowLocals + IF ::lShowLocals aVars := ::aProcStack[ ::oBrwStack:Cargo ][ CSTACK_LOCALS ] - for n := 1 to Len( aVars ) + FOR n := 1 TO Len( aVars ) cName := aVars[ n ][ VAR_NAME ] m := AScan( aBVars,; // Is there another var with this name ? { | aVar | aVar[ VAR_NAME ] == cName .AND. Left( aVar[ VAR_TYPE ], 1 ) == "S" } ) @@ -1816,17 +1827,17 @@ METHOD LoadVars() CLASS HBDebugger // updates monitored variables ELSE AAdd( aBVars, aVars[ n ] ) ENDIF - next - endif + NEXT + ENDIF ENDIF IF ::oBrwVars != NIL .AND. ::oBrwVars:cargo[ 1 ] > Len( aBVars ) ::oBrwVars:GoTop() ENDIF ::aVars := aBVars - if ::lSortVars + IF ::lSortVars ::Sort() - endif + ENDIF RETURN NIL @@ -1865,7 +1876,7 @@ METHOD LocatePrgPath( cPrgName ) CLASS HBDebugger LOCAL aPaths := ::aPathDirs LOCAL iMax := Len( aPaths ) - LOCAL cSep := hb_OsPathSeparator() + LOCAL cSep := hb_OSPathSeparator() LOCAL cRetPrgName LOCAL i @@ -1900,21 +1911,21 @@ METHOD NextWindow() CLASS HBDebugger LOCAL oWnd - if Len( ::aWindows ) > 0 + IF Len( ::aWindows ) > 0 oWnd := ::aWindows[ ::nCurrentWindow++ ] oWnd:Show( .F. ) - if ::nCurrentWindow > Len( ::aWindows ) + IF ::nCurrentWindow > Len( ::aWindows ) ::nCurrentWindow := 1 - endif - do while ! ::aWindows[ ::nCurrentWindow ]:lVisible + ENDIF + DO WHILE ! ::aWindows[ ::nCurrentWindow ]:lVisible ::nCurrentWindow++ - if ::nCurrentWindow > Len( ::aWindows ) + IF ::nCurrentWindow > Len( ::aWindows ) ::nCurrentWindow := 1 - endif - enddo + ENDIF + ENDDO oWnd := ::aWindows[ ::nCurrentWindow ] oWnd:Show( .T. ) - endif + ENDIF RETURN NIL @@ -1944,14 +1955,14 @@ METHOD Open() CLASS HBDebugger IF !Empty( cFileName ) ; .AND. ( ValType( ::cPrgName ) == "U" .OR. !FILENAME_EQUAL( cFileName, ::cPrgName ) ) - if ! File( cFileName ) .AND. ! Empty( ::cPathForFiles ) + IF ! File( cFileName ) .AND. ! Empty( ::cPathForFiles ) cRealName := ::LocatePrgPath( cFileName ) - if Empty( cRealName ) + IF Empty( cRealName ) Alert( "File '" + cFileName + "' not found!" ) RETURN NIL - endif + ENDIF cFileName := cRealName - endif + ENDIF ::cPrgName := cFileName hb_FNameSplit( cFileName, NIL, NIL, @cExt ) ::lPPO := ( Lower( cExt ) == ".ppo" ) @@ -1965,7 +1976,7 @@ METHOD Open() CLASS HBDebugger ::RedisplayBreakpoints() // check for breakpoints in this file and display them ::oWndCode:SetCaption( ::cPrgName ) ::oWndCode:Refresh() // to force the window caption to update - endif + ENDIF RETURN NIL @@ -2000,8 +2011,8 @@ METHOD OpenPPO() CLASS HBDebugger ::oWndCode:Browser := ::oBrwText ::RedisplayBreakpoints() // check for breakpoints in this file and display them ::oWndCode:SetCaption( ::cPrgName ) - ::oWndCode:Refresh()// to force the window caption to update - endif + ::oWndCode:Refresh() // to force the window caption to update + ENDIF ::oPullDown:GetItemByIdent( "PPO" ):checked := ::lPPO @@ -2081,15 +2092,15 @@ METHOD PrevWindow() CLASS HBDebugger oWnd := ::aWindows[ ::nCurrentWindow-- ] oWnd:Show( .F. ) - if ::nCurrentWindow < 1 + IF ::nCurrentWindow < 1 ::nCurrentWindow := Len( ::aWindows ) - endif - do while ! ::aWindows[ ::nCurrentWindow ]:lVisible + ENDIF + DO WHILE ! ::aWindows[ ::nCurrentWindow ]:lVisible ::nCurrentWindow-- - if ::nCurrentWindow < 1 + IF ::nCurrentWindow < 1 ::nCurrentWindow := Len( ::aWindows ) - endif - enddo + ENDIF + ENDDO oWnd := ::aWindows[ ::nCurrentWindow ] oWnd:Show( .T. ) @@ -2184,12 +2195,12 @@ METHOD ResizeWindows( oWindow ) CLASS HBDebugger IF oWindow2:lVisible IF oWindow:nTop < oWindow2:nTop nTop := oWindow2:nBottom - oWindow2:nTop + 1 - oWindow2:Resize( oWindow:nBottom + 1,, oWindow:nBottom+nTop) + oWindow2:Resize( oWindow:nBottom + 1,, oWindow:nBottom + nTop ) ELSE nTop := oWindow:nBottom - oWindow:nTop + 1 - oWindow:Resize( oWindow2:nBottom + 1,, oWindow2:nBottom+nTop) + oWindow:Resize( oWindow2:nBottom + 1,, oWindow2:nBottom + nTop ) ENDIF - nTop := MAX( oWindow:nBottom, oWindow2:nBottom ) + 1 + nTop := Max( oWindow:nBottom, oWindow2:nBottom ) + 1 ELSE IF oWindow:nTop > 1 nTop := oWindow:nBottom - oWindow:nTop + 1 @@ -2250,10 +2261,10 @@ METHOD RestoreSettings() CLASS HBDebugger ::cSettingsFileName := ::InputBox( "File name", ::cSettingsFileName ) - if LastKey() != K_ESC + IF LastKey() != K_ESC ::LoadSettings() ::ShowVars() - endif + ENDIF RETURN NIL @@ -2326,88 +2337,88 @@ METHOD SaveSettings() CLASS HBDebugger ::cSettingsFileName := ::InputBox( "File name", ::cSettingsFileName ) - if LastKey() != K_ESC + IF LastKey() != K_ESC - if ! Empty( ::cPathForFiles ) - cInfo += "Options Path " + ::cPathForFiles + hb_OsNewLine() - endif + IF ! Empty( ::cPathForFiles ) + cInfo += "Options Path " + ::cPathForFiles + hb_OSNewLine() + ENDIF cInfo += "Options Colors {" - for n := 1 to Len( ::aColors ) + FOR n := 1 TO Len( ::aColors ) cInfo += '"' + ::aColors[ n ] + '"' - if n < Len( ::aColors ) + IF n < Len( ::aColors ) cInfo += "," - endif - next - cInfo += "}" + hb_OsNewLine() + ENDIF + NEXT + cInfo += "}" + hb_OSNewLine() - if ::lMonoDisplay - cInfo += "Options mono " + hb_OsNewLine() - endif + IF ::lMonoDisplay + cInfo += "Options mono " + hb_OSNewLine() + ENDIF - if !::lRunAtStartup - cInfo += "Options NoRunAtStartup " + hb_OsNewLine() - endif + IF !::lRunAtStartup + cInfo += "Options NoRunAtStartup " + hb_OSNewLine() + ENDIF - if ::nSpeed != 0 - cInfo += "Run Speed " + LTrim( Str( ::nSpeed ) ) + hb_OsNewLine() - endif + IF ::nSpeed != 0 + cInfo += "Run Speed " + LTrim( Str( ::nSpeed ) ) + hb_OSNewLine() + ENDIF - if ::nTabWidth != 4 - cInfo += "Options Tab " + LTrim( Str( ::nTabWidth ) ) + hb_OsNewLine() - endif + IF ::nTabWidth != 4 + cInfo += "Options Tab " + LTrim( Str( ::nTabWidth ) ) + hb_OSNewLine() + ENDIF - if ::lShowStatics - cInfo += "Monitor Static" + hb_OsNewLine() - endif + IF ::lShowStatics + cInfo += "Monitor Static" + hb_OSNewLine() + ENDIF - if ::lShowPublics - cInfo += "Monitor Public" + hb_OsNewLine() - endif + IF ::lShowPublics + cInfo += "Monitor Public" + hb_OSNewLine() + ENDIF - if ::lShowLocals - cInfo += "Monitor Local" + hb_OsNewLine() - endif + IF ::lShowLocals + cInfo += "Monitor Local" + hb_OSNewLine() + ENDIF - if ::lShowPrivates - cInfo += "Monitor Private" + hb_OsNewLine() - endif + IF ::lShowPrivates + cInfo += "Monitor Private" + hb_OSNewLine() + ENDIF - if ::lShowGlobals - cInfo += "Monitor Global" + hb_OsNewLine() - endif + IF ::lShowGlobals + cInfo += "Monitor Global" + hb_OSNewLine() + ENDIF - if ::lSortVars - cInfo += "Monitor Sort" + hb_OsNewLine() - endif + IF ::lSortVars + cInfo += "Monitor Sort" + hb_OSNewLine() + ENDIF - if ::lShowCallStack - cInfo += "View CallStack" + hb_OsNewLine() - endif + IF ::lShowCallStack + cInfo += "View CallStack" + hb_OSNewLine() + ENDIF - if ! ::lLineNumbers - cInfo += "Num Off" + hb_OsNewLine() - endif + IF ! ::lLineNumbers + cInfo += "Num Off" + hb_OSNewLine() + ENDIF - if ! Empty( ::aBreakPoints ) - for n := 1 to Len( ::aBreakPoints ) + IF ! Empty( ::aBreakPoints ) + FOR n := 1 TO Len( ::aBreakPoints ) cInfo += "BP " + LTrim( Str( ::aBreakPoints[ n ][ 1 ] ) ) + " " + ; - AllTrim( ::aBreakPoints[ n ][ 2 ] ) + hb_OsNewLine() - next - endif + AllTrim( ::aBreakPoints[ n ][ 2 ] ) + hb_OSNewLine() + NEXT + ENDIF /* This part of the script must be executed after all windows are created */ - for n := 1 to Len( ::aWindows ) + FOR n := 1 TO Len( ::aWindows ) oWnd := ::aWindows[ n ] cInfo += "Window Size " + LTrim( Str( oWnd:nBottom - oWnd:nTop + 1 ) ) + " " - cInfo += LTrim( Str( oWnd:nRight - oWnd:nLeft + 1 ) ) + hb_OsNewLine() + cInfo += LTrim( Str( oWnd:nRight - oWnd:nLeft + 1 ) ) + hb_OSNewLine() cInfo += "Window Move " + LTrim( Str( oWnd:nTop ) ) + " " - cInfo += LTrim( Str( oWnd:nLeft ) ) + hb_OsNewLine() - cInfo += "Window Next" + hb_OsNewLine() - next + cInfo += LTrim( Str( oWnd:nLeft ) ) + hb_OSNewLine() + cInfo += "Window Next" + hb_OSNewLine() + NEXT MemoWrit( ::cSettingsFileName, cInfo ) - endif + ENDIF RETURN NIL @@ -2416,9 +2427,9 @@ METHOD SearchLine() CLASS HBDebugger LOCAL cLine := ::InputBox( "Line number", "1" ) - if Val( cLine ) > 0 + IF Val( cLine ) > 0 ::GotoLine ( Val( cLine ) ) - endif + ENDIF RETURN NIL @@ -2448,11 +2459,11 @@ METHOD ShowAppScreen() CLASS HBDebugger ::CloseDebuggerWindow() - if LastKey() == K_LBUTTONDOWN + IF LastKey() == K_LBUTTONDOWN Inkey( 0, INKEY_ALL ) - endif - do while Inkey( 0, INKEY_ALL ) == K_MOUSEMOVE - enddo + ENDIF + DO WHILE Inkey( 0, INKEY_ALL ) == K_MOUSEMOVE + ENDDO ::OpenDebuggerWindow() @@ -2463,7 +2474,7 @@ METHOD ShowCallStack() CLASS HBDebugger ::lShowCallStack := .T. - if ::oWndStack == NIL + IF ::oWndStack == NIL SetCursor( SC_NONE ) @@ -2471,18 +2482,18 @@ METHOD ShowCallStack() CLASS HBDebugger // Resize code window ::oWndCode:Resize(,,, ::oWndCode:nRight - 16 ) // Resize vars window - if ::oWndVars != NIL + IF ::oWndVars != NIL ::oWndVars:Resize(,,, ::oWndVars:nRight - 16 ) - endif + ENDIF // Resize watchpoints window - if ::oWndPnt != NIL + IF ::oWndPnt != NIL ::oWndPnt:Resize(,,, ::oWndPnt:nRight - 16) - endif + ENDIF DispEnd() - if ::aWindows[ ::nCurrentWindow ]:lFocused + IF ::aWindows[ ::nCurrentWindow ]:lFocused ::aWindows[ ::nCurrentWindow ]:Show( .F. ) - endif + ENDIF ::oWndStack := HBDbWindow():New( 1, ::nMaxCol - 15, ::nMaxRow - 6, ::nMaxCol,; "Calls" ) @@ -2492,9 +2503,9 @@ METHOD ShowCallStack() CLASS HBDebugger AAdd( ::aWindows, ::oWndStack ) //::nCurrentWindow := Len( ::aWindows ) - if ::oBrwStack == NIL + IF ::oBrwStack == NIL ::BuildBrowseStack() - endif + ENDIF ::oWndStack:bPainted := { || ::oBrwStack:ColorSpec := __DbgColors()[ 2 ] + "," + ; __DbgColors()[ 5 ] + "," + __DbgColors()[ 4 ],; @@ -2502,7 +2513,7 @@ METHOD ShowCallStack() CLASS HBDebugger ::oWndStack:bGotFocus := { || SetCursor( SC_NONE ) } ::oWndStack:Show( .F. ) - endif + ENDIF RETURN NIL @@ -2516,10 +2527,10 @@ METHOD ShowCodeLine( nProc ) CLASS HBDebugger // we only update the stack window and up a new browse // to view the code if we have just broken execution - if !::lGo - if ::oWndStack != NIL + IF !::lGo + IF ::oWndStack != NIL ::oBrwStack:RefreshAll() - endif + ENDIF nLine := ::aProcStack[ nProc ][ CSTACK_LINE ] cPrgName := ::aProcStack[ nProc ][ CSTACK_MODULE ] @@ -2528,23 +2539,23 @@ METHOD ShowCodeLine( nProc ) CLASS HBDebugger ::oWndCode:Browser := NIL ::oWndCode:SetCaption( ::aProcStack[ nProc ][ CSTACK_FUNCTION ] +; ": Code not available" ) - ::oWndCode:Refresh()// to force the window caption to update + ::oWndCode:Refresh() // to force the window caption to update RETURN NIL ENDIF - if ::lPPO + IF ::lPPO hb_FNameSplit( cPrgName, @cDir, @cName, NIL ) cPrgName := hb_FNameMerge( cDir, cName, ".ppo" ) - endif + ENDIF - if ! Empty( cPrgName ) + IF ! Empty( cPrgName ) - if !FILENAME_EQUAL( strip_path( cPrgName ), strip_path( ::cPrgName ) ) ; + IF !FILENAME_EQUAL( strip_path( cPrgName ), strip_path( ::cPrgName ) ) ; .OR. ::oBrwText == NIL - if ! File( cPrgName ) .AND. !Empty( ::cPathForFiles ) + IF ! File( cPrgName ) .AND. !Empty( ::cPathForFiles ) cPrgName := ::LocatePrgPath( cPrgName ) - endif + ENDIF ::cPrgName := cPrgName @@ -2557,7 +2568,7 @@ METHOD ShowCodeLine( nProc ) CLASS HBDebugger RETURN NIL ENDIF - if ::oBrwText == NIL + IF ::oBrwText == NIL ::oBrwText := HBBrwText():New( ::oWndCode:nTop + 1, ::oWndCode:nLeft + 1,; ::oWndCode:nBottom - 1, ::oWndCode:nRight - 1, cPrgName,; __DbgColors()[ 2 ] + "," + __DbgColors()[ 5 ] + "," + ; @@ -2566,20 +2577,20 @@ METHOD ShowCodeLine( nProc ) CLASS HBDebugger ::oWndCode:Browser := ::oBrwText - else + ELSE ::oBrwText:LoadFile(cPrgName) - endif + ENDIF - ::oWndCode:bPainted := {|| iif( ::oBrwText != NIL, ::oBrwText:RefreshAll():ForceStable(), ::oWndCode:Clear() ) } + ::oWndCode:bPainted := { || iif( ::oBrwText != NIL, ::oBrwText:RefreshAll():ForceStable(), ::oWndCode:Clear() ) } ::RedisplayBreakpoints() // check for breakpoints in this file and display them ::oWndCode:SetCaption( ::cPrgName ) ::oWndCode:Refresh() // to force the window caption to update - endif + ENDIF ::oBrwText:SetActiveLine( nLine ) ::GotoLine( nLine ) - endif + ENDIF - endif + ENDIF RETURN NIL @@ -2911,7 +2922,7 @@ METHOD VarSetValue( aVar, uValue ) CLASS HBDebugger hb_dbg_vmVarSSet( aVar[ VAR_LEVEL ], aVar[ VAR_POS ], uValue ) ELSE - //Public or Private + // Public or Private aVar[ VAR_POS ] := uValue &( aVar[ VAR_NAME ] ) := uValue @@ -2953,7 +2964,7 @@ METHOD ViewSets() CLASS HBDebugger { || PadR( __dbgValToStr( Set( oBrwSets:cargo[ 1 ] ) ), nWidth - 13 ) } ) ) ocol:defcolor := { 1, 3 } ocol:width := 40 - oWndSets:bPainted := { || oBrwSets:ForceStable(), RefreshVarsS( oBrwSets ) } + oWndSets:bPainted := { || oBrwSets:ForceStable(), RefreshVarsS( oBrwSets ) } oWndSets:bKeyPressed := { | nKey | SetsKeyPressed( nKey, oBrwSets, Len( aSets ),; oWndSets, "System Settings",; { || ::EditSet( oBrwSets:Cargo[ 1 ], oBrwSets ) } ) } @@ -2979,9 +2990,9 @@ METHOD WatchGetInfo( nWatch ) CLASS HBDebugger cType := ValType( xVal ) xVal := __dbgValToStr( xVal ) ELSE - //xVal contains error description + // xVal contains error description cType := "U" - //xVal := "Undefined" + // xVal := "Undefined" ENDIF RETURN aWatch[ WP_EXPR ] + " <" + aWatch[ WP_TYPE ] + ", " + cType + ">: " + xVal @@ -3019,7 +3030,7 @@ METHOD WatchpointDel( nPos ) CLASS HBDebugger IF ::oWndPnt != NIL .AND. ::oWndPnt:lVisible IF nPos == NIL - //called from the menu + // called from the menu nPos := ::InputBox( "Enter item number to delete", ::oBrwPnt:cargo[ 1 ] - 1 ) ELSE nPos-- @@ -3121,11 +3132,11 @@ METHOD WatchpointsShow() CLASS HBDebugger ::nMaxCol - iif( ::oWndStack != NIL, ::oWndStack:nWidth(), 0 ),; "Watch" ) - //::oBrwText:Resize( ::oWndPnt:nBottom + 1 ) - //::oWndCode:nTop := ::oWndPnt:nBottom + 1 - //::oBrwText:Resize( ::oWndCode:nTop + 1 ) - //::oBrwText:RefreshAll() - //::oWndCode:SetFocus( .T. ) +// ::oBrwText:Resize( ::oWndPnt:nBottom + 1 ) +// ::oWndCode:nTop := ::oWndPnt:nBottom + 1 +// ::oBrwText:Resize( ::oWndCode:nTop + 1 ) +// ::oBrwText:RefreshAll() +// ::oWndCode:SetFocus( .T. ) // ::oWndPnt:bLButtonDown := { | nMRow, nMCol | ::WndVarsLButtonDown( nMRow, nMCol ) } // ::oWndPnt:bLDblClick := { | nMRow, nMCol | ::EditVar( ::oBrwPnt:Cargo[ 1 ] ) } @@ -3173,26 +3184,26 @@ METHOD WatchpointsShow() CLASS HBDebugger AAdd( ::aWindows, ::oWndPnt ) ::oWndPnt:Show() ::ResizeWindows( ::oWndPnt ) - else - if ::oBrwPnt:cargo[ 1 ] <= 0 + ELSE + IF ::oBrwPnt:cargo[ 1 ] <= 0 ::oBrwPnt:cargo[ 1 ] := 1 - endif + ENDIF DispBegin() - if Len( ::aWatch ) > ::oWndPnt:nBottom - ::oWndPnt:nTop - 1 + IF Len( ::aWatch ) > ::oWndPnt:nBottom - ::oWndPnt:nTop - 1 //Resize( top, left, bottom, right ) ::oWndPnt:Resize( ,, ::oWndPnt:nTop + Min( Len( ::aWatch ) + 1, 4 ) ) lRepaint := .T. - elseif Len( ::aWatch ) < ::oWndPnt:nBottom - ::oWndPnt:nTop - 1 + ELSEIF Len( ::aWatch ) < ::oWndPnt:nBottom - ::oWndPnt:nTop - 1 ::oWndPnt:Resize( ,, ::oWndPnt:nTop + Len( ::aWatch ) + 1 ) lRepaint := .T. - else + ELSE ::oBrwPnt:RefreshAll():ForceStable() - endif - if ! ::oWndPnt:lVisible .OR. lRepaint + ENDIF + IF ! ::oWndPnt:lVisible .OR. lRepaint ::ResizeWindows( ::oWndPnt ) - endif + ENDIF DispEnd() - endif + ENDIF RETURN NIL @@ -3324,8 +3335,8 @@ STATIC FUNCTION ArrayBrowseSkip( nPos, oBrwSets ) STATIC FUNCTION PathToArray( cList ) LOCAL aList := {} - LOCAL cSep := hb_OsPathListSeparator() - LOCAL cDirSep := hb_OsPathDelimiters() + LOCAL cSep := hb_OSPathListSeparator() + LOCAL cDirSep := hb_OSPathDelimiters() LOCAL nPos IF cList != NIL @@ -3338,7 +3349,7 @@ STATIC FUNCTION PathToArray( cList ) AAdd( aList, cList ) // Add final element /* Strip ending delimiters */ - //AEval( aList, { | x, i | iif( x[ -1 ] $ cDirSep, aList[ i ] := Left( x, Len( x ) - 1 ), ) } ) + //AEval( aList, { | x, i | iif( Right( x, 1 ) $ cDirSep, aList[ i ] := Left( x, Len( x ) - 1 ), ) } ) ENDIF RETURN aList diff --git a/harbour/source/rtl/achoice.prg b/harbour/source/rtl/achoice.prg index 58c984a44f..5249ae7f9d 100644 --- a/harbour/source/rtl/achoice.prg +++ b/harbour/source/rtl/achoice.prg @@ -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 - diff --git a/harbour/source/rtl/hbgtcore.c b/harbour/source/rtl/hbgtcore.c index 495166177f..0fcea52835 100644 --- a/harbour/source/rtl/hbgtcore.c +++ b/harbour/source/rtl/hbgtcore.c @@ -382,8 +382,6 @@ static int hb_gt_def_ColorNum( const char * szColorString ) iColor <<= 4; nColor |= iColor & 0xff; } - else - return 0; } } diff --git a/harbour/utils/hbtest/hbtest.prg b/harbour/utils/hbtest/hbtest.prg index dac0451dfc..7329cf1b5a 100644 --- a/harbour/utils/hbtest/hbtest.prg +++ b/harbour/utils/hbtest/hbtest.prg @@ -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() diff --git a/harbour/utils/hbtest/rt_array.prg b/harbour/utils/hbtest/rt_array.prg index bf5eb903d9..be245756d3 100644 --- a/harbour/utils/hbtest/rt_array.prg +++ b/harbour/utils/hbtest/rt_array.prg @@ -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 diff --git a/harbour/utils/hbtest/rt_misc.prg b/harbour/utils/hbtest/rt_misc.prg index f52f156752..f08061cdce 100644 --- a/harbour/utils/hbtest/rt_misc.prg +++ b/harbour/utils/hbtest/rt_misc.prg @@ -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" )