Files
harbour-core/harbour/tests/tstmacro.prg
Viktor Szakats 986df3694e 2012-09-30 23:08 UTC+0200 Viktor Szakats (harbour syenar.net)
+ contrib/hbct/tests/dates4.prg
  - tests/dates4.prg
  * contrib/hbnf/byt2bit.prg
  * contrib/hbnf/dectobin.prg
  * contrib/hbnf/popadder.prg
  * tests/ac_test2.prg
  * tests/ainstest.prg
  * tests/and_or.prg
  * tests/array16.prg
  * tests/arrays.prg
  * tests/begin.prg
  * tests/byref.prg
  * tests/calling.prg
  * tests/clasinh.prg
  * tests/clasinit.prg
  * tests/classes.prg
  * tests/clsnv.prg
  * tests/codebloc.prg
  * tests/dates.prg
  * tests/debugtst.prg
  * tests/destruct.prg
  * tests/dirtest.prg
  * tests/dynobj.prg
  * tests/exittest.prg
  * tests/fib.prg
  * tests/files.prg
  * tests/fornext.prg
  * tests/fsplit.prg
  * tests/gtchars.prg
  * tests/ifelse.prg
  * tests/inherit.prg
  * tests/inifiles.prg
  * tests/initexit.prg
  * tests/inkeytst.prg
  * tests/inline.prg
  * tests/iotest.prg
  * tests/iotest2.prg
  * tests/longdev.prg
  * tests/longstr2.prg
  * tests/memvar.prg
  * tests/multiarg.prg
  * tests/newrdd.prg
  * tests/nums.prg
  * tests/objasign.prg
  * tests/objects.prg
  * tests/overload.prg
  * tests/passref.prg
  * tests/procname.prg
  * tests/readhrb.prg
  * tests/returns.prg
  * tests/rto_get.prg
  * tests/rto_tb.prg
  * tests/sbartest.prg
  * tests/setkeys.prg
  * tests/speed.prg
  * tests/statfun.prg
  * tests/statics.prg
  * tests/stripem.prg
  * tests/switch.prg
  * tests/tb1.prg
  * tests/test_all.prg
  * tests/testbrw.prg
  * tests/testcls.prg
  * tests/testerro.prg
  * tests/testfor.prg
  * tests/testmem.prg
  * tests/testntx.prg
  * tests/testop.prg
  * tests/testpp.prg
  * tests/testrdd2.prg
  * tests/teststr.prg
  * tests/testvars.prg
  * tests/testwarn.prg
  * tests/tstasort.prg
  * tests/tstdbi.prg
  * tests/tstmacro.prg
  * tests/varparam.prg
  * tests/vidtest.prg
    * various cleanups, fixes and formatting
      now most tests are warning and error free
2012-09-30 21:12:01 +00:00

177 lines
3.8 KiB
Plaintext

/*
* $Id$
*/
#include "hbclass.ch"
MEMVAR cStr, cStr_1, cVar_1, aVar, oVar, OtherVar, SomeVar, Private
MEMVAR cMainPrivate, GlobalPrivate, BornInRunTimeVar, Public
PROCEDURE Main()
PRIVATE cStr := "cVar", cStr_1 := "cVar_1", aVar := { "cVar_1" }, oVar
PRIVATE cVar_1, cMainPrivate := "cVar_1", GlobalPrivate := "BornInRunTimeVar"
// to avoid unused STATIC FUNCTION warnings
UDF_STATIC()
UDF2_STATIC()
&cStr_1 := "Simple "
? M->cVar_1
&( "cVar" + "_1" ) := "Macro"
?? M->cVar_1
M->&cStr_1 := "Aliased"
? M->cVar_1
MEMVAR->&( "cVar" + "_1" ) := " Macro"
?? M->cVar_1
cStr := "cVar_"
&cStr.1 := "Concatenated Macro (Numeric)"
? M->cVar_1
cStr := "cVar"
&cStr._1 := "Concatenated Macro (String)"
? M->cVar_1
&( aVar[1] ) := "Array Macro"
? M->cVar_1
oVar := TValue():New()
oVar:cVal := "cVar_1"
&( oVar:cVal ) := "Class Macro"
? M->cVar_1
SubFun()
? '"cVar_1" = [' + M->cVar_1 + '] AFTER SubFun() PRIVATE'
? M->NewPublicVar
TEST_TYPE()
RETURN
FUNCTION TValue
STATIC oClass
IF oClass == NIL
oClass := HBClass():New( "TValue" )
oClass:AddData( "cVal" )
oClass:AddMethod( "New", @New() ) // New Method
oClass:Create()
ENDIF
RETURN oClass:Instance()
STATIC FUNCTION New()
LOCAL Self := QSelf()
RETURN Self
FUNCTION SubFun()
? '"cVar_1" = [' + M->cVar_1 + '] BEFORE SubFun() PRIVATE'
// Testing conflict with KEY WORDS
PRIVATE PRIVATE := "I am a Var named PRIVATE ", &cMainPrivate, SomeVar, OtherVar := 1, &GlobalPrivate := "I was born in Run Time"
PUBLIC PUBLIC := "NewPublicVar"
PUBLIC &PUBLIC
? M->NewPublicVar
M->NewPublicVar := "Still Alive because I am PUBLIC"
? M->PRIVATE + PRIVATE
? PRIVATE + M->PRIVATE
? BornInRunTimeVar
&cMainPrivate := "In SubFun()"
? '"cVar_1" = [' + M->cVar_1 + '] in SubFun() PRIVATE'
RETURN NIL
STATIC PROCEDURE TEST_TYPE()
LOCAL v1, v2, v1a, v2a
LOCAL bErr := ErrorBlock( {| e | Break( e ) } ), oE
?
? "=========== TYPE() function ================="
v1 := "UDF()"
? "Test for TYPE('UDF()') - should be 'UI': ", Type( v1 )
v2 := "UDF_STATIC()"
? "Test for TYPE('UDF_STATIC()') - should be 'U': ", Type( v2 )
? "Test for &" + "'UDF()' - should print 'udf': ", &v1
? "Test for &" + "'UDF_STATIC()' - should print 'ERROR: undefined function': "
BEGIN SEQUENCE
?? &v2
RECOVER USING oE
? "ERROR: " + oE:Description
END SEQUENCE
ErrorBlock( bErr )
v1 := "UDF"
? "Test for TYPE('UDF') - should be 'U': ", Type( v1 )
v2 := "UDF_STATIC"
? "Test for TYPE('UDF_STATIC') - should be 'U': ", Type( v2 )
v1a := "UDF:=1"
? "Test for TYPE('UDF:=1') - should be 'N': ", Type( v1a )
v2a := "UDF_STATIC:=1"
? "Test for TYPE('UDF_STATIC:=1') - should be 'N': ", Type( v2a )
? "=== after the assignment ==="
v1 := "UDF"
? "Test for TYPE('UDF') - should be 'N': ", Type( v1 )
v2 := "UDF_STATIC"
? "Test for TYPE('UDF_STATIC') - should be 'N': ", Type( v2 )
v1 := "UDF()"
? "Test for TYPE('UDF()') - should be 'UI': ", Type( v1 )
v2 := "UDF_STATIC()"
? "Test for TYPE('UDF_STATIC()') - should be 'U': ", Type( v2 )
? "=== declared public variable ==="
PUBLIC UDF2, UDF2_STATIC
v1 := "UDF2()"
? "Test for TYPE('UDF2()') - should be 'UI': ", Type( v1 )
v2 := "UDF2_STATIC()"
? "Test for TYPE('UDF2_STATIC()') - should be 'U': ", Type( v2 )
v1 := "UDF2"
? "Test for TYPE('UDF') - should be 'L': ", Type( v1 )
v2 := "UDF2_STATIC"
? "Test for TYPE('UDF_STATIC') - should be 'L': ", Type( v2 )
?
RETURN
STATIC FUNCTION UDF_STATIC()
RETURN "udf_static"
FUNCTION UDF()
RETURN "udf"
STATIC FUNCTION UDF2_STATIC()
RETURN "udf2_static"
FUNCTION UDF2()
RETURN "udf2"