Files
harbour-core/utils/hbtest/rt_hvm.prg
Viktor Szakats 58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00

593 lines
33 KiB
Plaintext

/*
* Regression tests for the runtime library (HVM)
*
* Copyright 1999-2001 Viktor Szakats (vszakats.net/harbour)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING.txt. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site https://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#include "rt_main.ch"
/* Don't change the position of this #include. */
#include "rt_vars.ch"
PROCEDURE Main_HVM()
/* ValType() */
HBTEST ValType( scString ) IS "C"
HBTEST ValType( scStringE ) IS "C"
HBTEST ValType( scStringZ ) IS "C"
HBTEST ValType( snIntZ ) IS "N"
HBTEST ValType( snDoubleZ ) IS "N"
HBTEST ValType( snIntP ) IS "N"
HBTEST ValType( snLongP ) IS "N"
HBTEST ValType( snDoubleP ) IS "N"
HBTEST ValType( snIntN ) IS "N"
HBTEST ValType( snLongN ) IS "N"
HBTEST ValType( snDoubleN ) IS "N"
HBTEST ValType( snDoubleI ) IS "N"
HBTEST ValType( sdDateE ) IS "D"
HBTEST ValType( slFalse ) IS "L"
HBTEST ValType( slTrue ) IS "L"
HBTEST ValType( soObject ) IS "O"
HBTEST ValType( suNIL ) IS "U"
HBTEST ValType( sbBlock ) IS "B"
HBTEST ValType( saArray ) IS "A"
HBTEST ValType( { 1, 2, 3 } ) IS "A"
IF TEST_DBFAvail()
HBTEST ValType( w_TEST->TYPE_C ) IS "C"
HBTEST ValType( w_TEST->TYPE_D ) IS "D"
HBTEST ValType( w_TEST->TYPE_M ) IS "M"
HBTEST ValType( w_TEST->TYPE_N_I ) IS "N"
HBTEST ValType( w_TEST->TYPE_N_D ) IS "N"
HBTEST ValType( w_TEST->TYPE_L ) IS "L"
ENDIF
#ifdef __HARBOUR__
HBTEST ValType( @scString ) IS "C" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @scStringE ) IS "C" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @scStringZ ) IS "C" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snIntZ ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snDoubleZ ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snIntP ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snLongP ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snDoubleP ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snIntN ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snLongN ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snDoubleN ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @snDoubleI ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @sdDateE ) IS "D" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @slFalse ) IS "L" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @slTrue ) IS "L" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @soObject ) IS "O" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @suNIL ) IS "U" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @sbBlock ) IS "B" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @saArray ) IS "A" /* Bug in CA-Cl*pper, it will return "U" */
#endif
HBTEST ValType( mcString ) IS "C"
HBTEST ValType( mcStringE ) IS "C"
HBTEST ValType( mcStringZ ) IS "C"
HBTEST ValType( mnIntZ ) IS "N"
HBTEST ValType( mnDoubleZ ) IS "N"
HBTEST ValType( mnIntP ) IS "N"
HBTEST ValType( mnLongP ) IS "N"
HBTEST ValType( mnDoubleP ) IS "N"
HBTEST ValType( mnIntN ) IS "N"
HBTEST ValType( mnLongN ) IS "N"
HBTEST ValType( mnDoubleN ) IS "N"
HBTEST ValType( mnDoubleI ) IS "N"
HBTEST ValType( mdDateE ) IS "D"
HBTEST ValType( mlFalse ) IS "L"
HBTEST ValType( mlTrue ) IS "L"
HBTEST ValType( moObject ) IS "O"
HBTEST ValType( muNIL ) IS "U"
HBTEST ValType( mbBlock ) IS "B"
HBTEST ValType( maArray ) IS "A"
#ifdef __HARBOUR__
HBTEST ValType( @mcString ) IS "C" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mcStringE ) IS "C" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mcStringZ ) IS "C" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnIntZ ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnDoubleZ ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnIntP ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnLongP ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnDoubleP ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnIntN ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnLongN ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnDoubleN ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mnDoubleI ) IS "N" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mdDateE ) IS "D" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mlFalse ) IS "L" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mlTrue ) IS "L" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @moObject ) IS "O" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @muNIL ) IS "U" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @mbBlock ) IS "B" /* Bug in CA-Cl*pper, it will return "U" */
HBTEST ValType( @maArray ) IS "A" /* Bug in CA-Cl*pper, it will return "U" */
#endif
/* Type() */
#ifndef __XPP__
HBTEST Type( NIL ) IS "E 1 BASE 1121 Argument error (TYPE) OS:0 #:0 A:1:U:NIL F:S"
HBTEST Type( 100 ) IS "E 1 BASE 1121 Argument error (TYPE) OS:0 #:0 A:1:N:100 F:S"
HBTEST Type( {} ) IS "E 1 BASE 1121 Argument error (TYPE) OS:0 #:0 A:1:A:{.[0].} F:S"
#endif
IF TEST_DBFAvail()
HBTEST Type( "w_TEST->TYPE_C" ) IS "C"
HBTEST Type( "w_TEST->TYPE_D" ) IS "D"
HBTEST Type( "w_TEST->TYPE_M" ) IS "M"
HBTEST Type( "w_TEST->TYPE_N_I" ) IS "N"
HBTEST Type( "w_TEST->TYPE_N_D" ) IS "N"
HBTEST Type( "w_TEST->TYPE_L" ) IS "L"
ENDIF
HBTEST Type( "mxNotHere" ) IS "U"
HBTEST Type( "mcString" ) IS "C"
HBTEST Type( "mcStringE" ) IS "C"
HBTEST Type( "mcStringZ" ) IS "C"
HBTEST Type( "mnIntZ" ) IS "N"
HBTEST Type( "mnDoubleZ" ) IS "N"
HBTEST Type( "mnIntP" ) IS "N"
HBTEST Type( "mnLongP" ) IS "N"
HBTEST Type( "mnDoubleP" ) IS "N"
HBTEST Type( "mnIntN" ) IS "N"
HBTEST Type( "mnLongN" ) IS "N"
HBTEST Type( "mnDoubleN" ) IS "N"
HBTEST Type( "mnDoubleI" ) IS "N"
HBTEST Type( "mdDateE" ) IS "D"
HBTEST Type( "mlFalse" ) IS "L"
HBTEST Type( "mlTrue" ) IS "L"
HBTEST Type( "moObject" ) IS "O"
HBTEST Type( "muNIL" ) IS "U"
HBTEST Type( "mbBlock" ) IS "B"
HBTEST Type( "maArray" ) IS "A"
/* Special internal messages */
/* Harbour compiler not yet handles these */
#ifndef __HARBOUR__
#ifndef __XPP__
HBTEST NIL:className() IS "NIL"
#endif
#endif
#ifndef __XPP__
HBTEST "":className() IS "CHARACTER"
HBTEST 0:className() IS "NUMERIC"
HBTEST hb_SToD( "" ):className() IS "DATE"
HBTEST .F.:className() IS "LOGICAL"
HBTEST {|| NIL }:className() IS "BLOCK"
HBTEST {}:className() IS "ARRAY"
#endif
HBTEST ErrorNew():className() IS "ERROR"
HBTEST ErrorNew():className IS "ERROR"
/* Harbour compiler not yet handles these */
#ifndef __HARBOUR__
#ifndef __XPP__
HBTEST NIL:classH() IS 0
#endif
#endif
#ifndef __XPP__
HBTEST "":classH() IS 0
HBTEST 0:classH() IS 0
HBTEST hb_SToD( "" ):classH() IS 0
HBTEST .F.:classH() IS 0
HBTEST {|| NIL }:classH() IS 0
HBTEST {}:classH() IS 0
#endif
HBTEST ErrorNew():classH() > 0 IS .T.
HBTEST ErrorNew():classH > 0 IS .T.
/* Harbour compiler not yet handles these */
#ifndef __HARBOUR__
#ifndef __XPP__
HBTEST suNIL:className() IS "NIL"
#endif
#endif
#ifndef __XPP__
HBTEST scString:className() IS "CHARACTER"
HBTEST snIntP:className() IS "NUMERIC"
HBTEST sdDateE:className() IS "DATE"
HBTEST slFalse:className() IS "LOGICAL"
HBTEST sbBlock:className() IS "BLOCK"
HBTEST saArray:className() IS "ARRAY"
#endif
HBTEST soObject:className() IS "ERROR"
HBTEST soObject:className IS "ERROR"
/* Harbour compiler not yet handles these */
#ifndef __HARBOUR__
#ifndef __XPP__
HBTEST suNIL:classH() IS 0
#endif
#endif
#ifndef __XPP__
HBTEST scString:classH() IS 0
HBTEST snIntP:classH() IS 0
HBTEST sdDateE:classH() IS 0
HBTEST slFalse:classH() IS 0
HBTEST sbBlock:classH() IS 0
HBTEST saArray:classH() IS 0
#endif
HBTEST soObject:classH() > 0 IS .T.
HBTEST soObject:classH > 0 IS .T.
/* (operators) */
/* <= */
HBTEST 2 <= 1 IS .F.
HBTEST 1 <= 2 IS .T.
HBTEST 2.0 <= 2 IS .T.
HBTEST 2 <= 2.0 IS .T.
HBTEST 2.5 <= 3.7 IS .T.
HBTEST 3.7 <= 2.5 IS .F.
HBTEST 10 <= 10.50 IS .T.
HBTEST .F. <= .F. IS .T.
HBTEST .T. <= .F. IS .F.
HBTEST .F. <= .T. IS .T.
HBTEST hb_SToD( "" ) <= hb_SToD( "" ) IS .T.
HBTEST hb_SToD( "" ) <= hb_SToD( "19800101" ) IS .T.
HBTEST hb_SToD( "19800101" ) <= hb_SToD( "" ) IS .F.
HBTEST "" <= "AAA" IS .T.
HBTEST "AAA" <= "" IS .T.
HBTEST "AAA" <= "AA" IS .T.
HBTEST "AAA" <= Chr( 255 ) IS .T.
HBTEST Chr( 150 ) <= Chr( 255 ) IS .T.
HBTEST "A" <= "a" IS .T.
HBTEST "A" <= "Z" IS .T.
HBTEST "Z" <= " " IS .F.
HBTEST Chr( 0 ) <= " " IS .T.
HBTEST "Hallo" <= "Hello" IS .T.
HBTEST "Hello" <= "Hello" IS .T.
HBTEST "Hell" <= "Hello" IS .T.
HBTEST "Hellow" <= "Hello" IS .T.
HBTEST "J" <= "Hello" IS .F.
HBTEST "" <= "Hello" IS .T.
HBTEST "J" <= "" IS .T.
HBTEST "" <= "" IS .T.
/* < */
HBTEST 2 < 1 IS .F.
HBTEST 1 < 2 IS .T.
HBTEST 2.0 < 2 IS .F.
HBTEST 2 < 2.0 IS .F.
HBTEST 2.5 < 3.7 IS .T.
HBTEST 3.7 < 2.5 IS .F.
HBTEST 10.50 < 10 IS .F.
HBTEST .F. < .F. IS .F.
HBTEST .T. < .F. IS .F.
HBTEST .F. < .T. IS .T.
HBTEST hb_SToD( "" ) < hb_SToD( "" ) IS .F.
HBTEST hb_SToD( "" ) < hb_SToD( "19800101" ) IS .T.
HBTEST hb_SToD( "19800101" ) < hb_SToD( "" ) IS .F.
HBTEST "" < "AAA" IS .T.
HBTEST "AAA" < "" IS .F.
HBTEST "AAA" < "AA" IS .F.
HBTEST "AAA" < Chr( 255 ) IS .T.
HBTEST Chr( 150 ) < Chr( 255 ) IS .T.
HBTEST "A" < "a" IS .T.
HBTEST "A" < "Z" IS .T.
HBTEST "Z" < "A" IS .F.
HBTEST Chr( 0 ) < " " IS .T.
HBTEST "Hallo" < "Hello" IS .T.
HBTEST "Hello" < "Hello" IS .F.
HBTEST "Hell" < "Hello" IS .T.
HBTEST "Hellow" < "Hello" IS .F.
HBTEST "J" < "Hello" IS .F.
HBTEST "" < "Hello" IS .T.
HBTEST "J" < "" IS .F.
HBTEST "" < "" IS .F.
/* >= */
HBTEST 2 >= 1 IS .T.
HBTEST 1 >= 2 IS .F.
HBTEST 2.0 >= 2 IS .T.
HBTEST 2 >= 2.0 IS .T.
HBTEST 2.5 >= 3.7 IS .F.
HBTEST 3.7 >= 2.5 IS .T.
HBTEST 10.50 >= 10 IS .T.
HBTEST .F. >= .F. IS .T.
HBTEST .T. >= .F. IS .T.
HBTEST .F. >= .T. IS .F.
HBTEST hb_SToD( "" ) >= hb_SToD( "" ) IS .T.
HBTEST hb_SToD( "" ) >= hb_SToD( "19800101" ) IS .F.
HBTEST hb_SToD( "19800101" ) >= hb_SToD( "" ) IS .T.
HBTEST "" >= "AAA" IS .F.
HBTEST "AAA" >= "" IS .T.
HBTEST "AAA" >= "AA" IS .T.
HBTEST "AAA" >= Chr( 255 ) IS .F.
HBTEST Chr( 150 ) >= Chr( 255 ) IS .F.
HBTEST "A" >= "a" IS .F.
HBTEST "A" >= "Z" IS .F.
HBTEST "Z" >= "A" IS .T.
HBTEST Chr( 0 ) >= " " IS .F.
HBTEST "Hallo" >= "Hello" IS .F.
HBTEST "Hello" >= "Hello" IS .T.
HBTEST "Hell" >= "Hello" IS .F.
HBTEST "Hellow" >= "Hello" IS .T.
HBTEST "J" >= "Hello" IS .T.
HBTEST "" >= "Hello" IS .F.
HBTEST "J" >= "" IS .T.
HBTEST "" >= "" IS .T.
/* > */
HBTEST 2 > 1 IS .T.
HBTEST 1 > 2 IS .F.
HBTEST 2.0 > 2 IS .F.
HBTEST 2 > 2.0 IS .F.
HBTEST 2.5 > 3.7 IS .F.
HBTEST 3.7 > 2.5 IS .T.
HBTEST 10.50 > 10 IS .T.
HBTEST .F. > .F. IS .F.
HBTEST .T. > .F. IS .T.
HBTEST .F. > .T. IS .F.
HBTEST hb_SToD( "" ) > hb_SToD( "" ) IS .F.
HBTEST hb_SToD( "" ) > hb_SToD( "19800101" ) IS .F.
HBTEST hb_SToD( "19800101" ) > hb_SToD( "" ) IS .T.
HBTEST "" > "AAA" IS .F.
HBTEST "AAA" > "" IS .F.
HBTEST "AAA" > "AA" IS .F.
HBTEST "AAA" > Chr( 255 ) IS .F.
HBTEST Chr( 150 ) > Chr( 255 ) IS .F.
HBTEST "A" > "a" IS .F.
HBTEST "A" > "Z" IS .F.
HBTEST "Z" > "A" IS .T.
HBTEST Chr( 0 ) > " " IS .F.
HBTEST "Hallo" > "Hello" IS .F.
HBTEST "Hello" > "Hello" IS .F.
HBTEST "Hell" > "Hello" IS .F.
HBTEST "Hellow" > "Hello" IS .F.
HBTEST "J" > "Hello" IS .T.
HBTEST "" > "Hello" IS .F.
HBTEST "J" > "" IS .F.
HBTEST "" > "" IS .F.
/* =, == */
SET EXACT ON
HBTEST "123" = "123 " IS .T.
HBTEST " 123" = "123" IS .F.
HBTEST "123" = "12345" IS .F.
HBTEST "12345" = "123" IS .F.
HBTEST "123" = "" IS .F.
HBTEST "" = "123" IS .F.
HBTEST "A" == "A" IS .T.
HBTEST "Z" == "A" IS .F.
HBTEST "A" == "A " IS .F.
HBTEST "AA" == "A" IS .F.
SET EXACT OFF
HBTEST "123" = "123 " IS .F.
HBTEST " 123" = "123" IS .F.
HBTEST "123" = "12345" IS .F.
HBTEST "12345" = "123" IS .T.
HBTEST "123" = "" IS .T.
HBTEST "" = "123" IS .F.
HBTEST "A" == "A" IS .T.
HBTEST "Z" == "A" IS .F.
HBTEST "A" == "A " IS .F.
HBTEST "AA" == "A" IS .F.
HBTEST "Hallo" == "Hello" IS .F.
HBTEST "Hello" == "Hello" IS .T.
HBTEST "Hell" == "Hello" IS .F.
HBTEST "Hellow" == "Hello" IS .F.
HBTEST "J" == "Hello" IS .F.
HBTEST "" == "Hello" IS .F.
HBTEST "J" == "" IS .F.
HBTEST "" == "" IS .T.
HBTEST scString = scString IS .T.
HBTEST scString = scStringE IS .T.
HBTEST scString = scStringZ IS .F.
HBTEST scStringE = scString IS .F.
HBTEST scStringE = scStringE IS .T.
HBTEST scStringE = scStringZ IS .F.
HBTEST scStringZ = scString IS .F.
HBTEST scStringZ = scStringE IS .T.
HBTEST scStringZ = scStringZ IS .T.
/* != */
SET EXACT ON
HBTEST "123" != "123 " IS .F.
HBTEST " 123" != "123" IS .T.
HBTEST "123" != "12345" IS .T.
HBTEST "12345" != "123" IS .T.
HBTEST "123" != "" IS .T.
HBTEST "" != "123" IS .T.
HBTEST "A" != "A" IS .F.
HBTEST "Z" != "A" IS .T.
HBTEST "A" != "A " IS .F.
HBTEST "AA" != "A" IS .T.
SET EXACT OFF
HBTEST "123" != "123 " IS .T.
HBTEST " 123" != "123" IS .T.
HBTEST "123" != "12345" IS .T.
HBTEST "12345" != "123" IS .F.
HBTEST "123" != "" IS .F.
HBTEST "" != "123" IS .T.
HBTEST "A" != "A" IS .F.
HBTEST "Z" != "A" IS .T.
HBTEST "A" != "A " IS .T.
HBTEST "AA" != "A" IS .F.
HBTEST "Hallo" != "Hello" IS .T.
HBTEST "Hello" != "Hello" IS .F.
HBTEST "Hell" != "Hello" IS .T.
HBTEST "Hellow" != "Hello" IS .F.
HBTEST "J" != "Hello" IS .T.
HBTEST "" != "Hello" IS .T.
HBTEST "J" != "" IS .F.
HBTEST "" != "" IS .F.
HBTEST scString != scString IS .F.
HBTEST scString != scStringE IS .F.
HBTEST scString != scStringZ IS .T.
HBTEST scStringE != scString IS .T.
HBTEST scStringE != scStringE IS .F.
HBTEST scStringE != scStringZ IS .T.
HBTEST scStringZ != scString IS .T.
HBTEST scStringZ != scStringE IS .F.
HBTEST scStringZ != scStringZ IS .F.
/* == special */
HBTEST NIL == NIL IS .T.
HBTEST 1 == NIL IS .F.
HBTEST NIL == 1 IS .F.
HBTEST "" == NIL IS .F.
HBTEST NIL == "" IS .F.
HBTEST 1 == suNIL IS .F.
HBTEST suNIL == 1 IS .F.
HBTEST "" == suNIL IS .F.
HBTEST suNIL == "" IS .F.
HBTEST scString == NIL IS .F.
HBTEST "A" == 1 IS "E 1 BASE 1070 Argument error (==) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString == 1 IS "E 1 BASE 1070 Argument error (==) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject == "" IS "E 1 BASE 1070 Argument error (==) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject == soObject IS .T.
HBTEST soObject == ErrorNew() IS .F.
HBTEST ErrorNew() == ErrorNew() IS .F.
HBTEST soObject == TBColumnNew() IS .F.
HBTEST saArray == saArray IS .T.
HBTEST {} == {} IS .F.
#ifdef __CLIPPER__
HBTEST {|| NIL } == {|| NIL } IS "E 1 BASE 1070 Argument error (==) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
HBTEST sbBlock == sbBlock IS "E 1 BASE 1070 Argument error (==) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
#else
HBTEST {|| NIL } == {|| NIL } IS .F.
HBTEST sbBlock == sbBlock IS .T.
#endif
/* = special */
HBTEST NIL = NIL IS .T.
HBTEST scString = NIL IS .F.
HBTEST "A" = 1 IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString = 1 IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject = "" IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject = soObject IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject = ErrorNew() IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST ErrorNew() = ErrorNew() IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject = TBColumnNew() IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:O:ERROR Object;O:TBCOLUMN Object F:S"
HBTEST saArray = saArray IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:A:{.[1].};A:{.[1].} F:S"
HBTEST {} = {} IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:A:{.[0].};A:{.[0].} F:S"
HBTEST {|| NIL } = {|| NIL } IS "E 1 BASE 1071 Argument error (=) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
/* != special */
HBTEST NIL != NIL IS .F.
HBTEST scString != NIL IS .T.
HBTEST "A" != 1 IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString != 1 IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject != "" IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject != soObject IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject != ErrorNew() IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST ErrorNew() != ErrorNew() IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject != TBColumnNew() IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:O:ERROR Object;O:TBCOLUMN Object F:S"
HBTEST saArray != saArray IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:A:{.[1].};A:{.[1].} F:S"
HBTEST {} != {} IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:A:{.[0].};A:{.[0].} F:S"
HBTEST {|| NIL } != {|| NIL } IS "E 1 BASE 1072 Argument error (<>) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
/* < special */
HBTEST NIL < NIL IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:U:NIL;U:NIL F:S"
HBTEST scString < NIL IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:C:HELLO;U:NIL F:S"
HBTEST "A" < 1 IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString < 1 IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject < "" IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject < soObject IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject < ErrorNew() IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST ErrorNew() < ErrorNew() IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject < TBColumnNew() IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:O:ERROR Object;O:TBCOLUMN Object F:S"
HBTEST saArray < saArray IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:A:{.[1].};A:{.[1].} F:S"
HBTEST {} < {} IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:A:{.[0].};A:{.[0].} F:S"
HBTEST {|| NIL } < {|| NIL } IS "E 1 BASE 1073 Argument error (<) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
/* <= special */
HBTEST NIL <= NIL IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:U:NIL;U:NIL F:S"
HBTEST scString <= NIL IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:C:HELLO;U:NIL F:S"
HBTEST "A" <= 1 IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString <= 1 IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject <= "" IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject <= soObject IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject <= ErrorNew() IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST ErrorNew() <= ErrorNew() IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject <= TBColumnNew() IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:O:ERROR Object;O:TBCOLUMN Object F:S"
HBTEST saArray <= saArray IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:A:{.[1].};A:{.[1].} F:S"
HBTEST {} <= {} IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:A:{.[0].};A:{.[0].} F:S"
HBTEST {|| NIL } <= {|| NIL } IS "E 1 BASE 1074 Argument error (<=) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
/* > special */
HBTEST NIL > NIL IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:U:NIL;U:NIL F:S"
HBTEST scString > NIL IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:C:HELLO;U:NIL F:S"
HBTEST "A" > 1 IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString > 1 IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject > "" IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject > soObject IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject > ErrorNew() IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST ErrorNew() > ErrorNew() IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject > TBColumnNew() IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:O:ERROR Object;O:TBCOLUMN Object F:S"
HBTEST saArray > saArray IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:A:{.[1].};A:{.[1].} F:S"
HBTEST {} > {} IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:A:{.[0].};A:{.[0].} F:S"
HBTEST {|| NIL } > {|| NIL } IS "E 1 BASE 1075 Argument error (>) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
/* >= special */
HBTEST NIL >= NIL IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:U:NIL;U:NIL F:S"
HBTEST scString >= NIL IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:C:HELLO;U:NIL F:S"
HBTEST "A" >= 1 IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:C:A;N:1 F:S"
HBTEST scString >= 1 IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:C:HELLO;N:1 F:S"
HBTEST soObject >= "" IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:O:ERROR Object;C: F:S"
HBTEST soObject >= soObject IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject >= ErrorNew() IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST ErrorNew() >= ErrorNew() IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:O:ERROR Object;O:ERROR Object F:S"
HBTEST soObject >= TBColumnNew() IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:O:ERROR Object;O:TBCOLUMN Object F:S"
HBTEST saArray >= saArray IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:A:{.[1].};A:{.[1].} F:S"
HBTEST {} >= {} IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:A:{.[0].};A:{.[0].} F:S"
HBTEST {|| NIL } >= {|| NIL } IS "E 1 BASE 1076 Argument error (>=) OS:0 #:0 A:2:B:{||...};B:{||...} F:S"
RETURN
/* Don't change the position of this #include. */
#include "rt_init.ch"