Files
harbour-core/harbour/website/samples/macro.prg.html
Viktor Szakats c0eadc80eb 2013-02-27 19:12 UTC+0100 Viktor Szakats (harbour syenar.net)
* tests/*
  * website/*
    * dropped 'tst'/'ts'/'test' from most
      filenames inside main 'tests' dir. 8 chars will
      allow for more descriptive names than 4-5.
      Some renamed to use the new space.
      Similar ones will now be much close together
      and easier to lookup in alphabetical order.
    ; NOTE: Perhaps a new distinction would be useful,
            for those which are indeed tests for the
            compiler or PP, f.e. these:
               declare.prg, dupvars.prg, keywords.prg, linecont.prg,
               lnlenli1.prg, lnlenli2.prg, pp.prg, pragma.prg, warnings.prg
    ; List of changes:
      tests/ac_test.prg  -> achoice.prg
      tests/ac_test2.prg -> achoice2.prg
      tests/adirtest.prg -> adir.prg
      tests/ainstest.prg -> ains.prg
      tests/tstalias.prg -> aliasrt.prg
      tests/altdtest.prg -> altd.prg
      tests/atest.prg    -> array.prg
      tests/tstasort.prg -> asort.prg
      tests/boxtst2.prg  -> box2.prg
      tests/boxtest.prg  -> box3.prg
      tests/testbrdb.prg -> browse.prg
      tests/tstblock.prg -> cblock.prg
      tests/testcdx.prg  -> cdx.prg
      tests/tstchbx.prg  -> checkbox.prg
      tests/testcls.prg  -> cls.prg
      tests/tscmdarg.c   -> cmdarg.c
      tests/tstcolor.prg -> color.prg
      tests/testcom1.prg -> com.prg
      tests/cursrtst.prg -> cursor.prg
      tests/dttest.prg   -> datetime.prg
      tests/dbevalts.prg -> dbeval.prg
      tests/testdbf.prg  -> dbf.prg
      tests/tstdbi.prg   -> dbi.prg
      tests/debugtst.prg -> debug.prg
      tests/testdecl.prg -> declare.prg
      tests/testid.prg   -> define.prg
      tests/delimtst.prg -> delim.prg
      tests/devtest.prg  -> dev.prg
      tests/dirtest.prg  -> directry.prg
      tests/tstdspac.prg -> diskspac.prg
      tests/disptest.prg -> disp.prg
      tests/testdyn.c    -> dyn.c
      tests/testdyn1.prg -> dyn.prg
      tests/testdyn.prg  -> dynwin.prg
      tests/testerro.prg -> errsys.prg
      tests/exittest.prg -> exit.prg
      tests/iotest.prg   -> fileio.prg
      tests/iotest2.prg  -> fileio2.prg
      tests/fortest.prg  -> for.prg
      tests/testfor.prg  -> for2.prg
      tests/testget.prg  -> get.prg
      tests/tstgtapi.c   -> gtapi.c
      tests/gtstdtst.prg -> gtstd.prg
      tests/hbdoctst.prg -> hbdoc.prg
      tests/testhrb.prg  -> hrb.prg
      tests/hsxtest.prg  -> hsx.prg
      tests/testhtml.prg -> html.prg
      tests/testidle.prg -> idle.prg
      tests/testinit.prg -> initproc.prg
      tests/inkeytst.prg -> inkey.prg
      tests/testlbl.prg  -> lbl.prg
      tests/tstmacro.prg -> macro.prg
      tests/mathtest.prg -> math.prg
      tests/testmem.prg  -> mem.prg
      tests/memtst.prg   -> memmgr.prg
      tests/menutest.prg -> menuto.prg
      tests/testmny.prg  -> money.prg
      tests/mousetst.prg -> mouse.prg
      tests/testntx.prg  -> ntx.prg
      tests/testop.prg   -> op.prg
      tests/testpers.prg -> persist.prg
      tests/testpp.prg   -> pp.prg
      tests/testpre.prg  -> ppapi.prg
      tests/tstprag.prg  -> pragma.prg
      tests/testprof.prg -> profiler.prg
      tests/testrdd.prg  -> rdd.prg
      tests/testrdd2.prg -> rdd2.prg
      tests/testread.prg -> read.prg
      tests/regextst.prg -> regex2.prg
      tests/testrpt.prg  -> rpt.prg
      tests/sbartest.prg -> sbar.prg
      tests/sdf_test.prg -> sdf.prg
      tests/set_test.prg -> set.prg
      tests/videotst.prg -> setmode.prg
      tests/testsha1.prg -> sha1.prg
      tests/testsha2.prg -> sha2.prg
      tests/teststr.prg  -> str.prg
      tests/testbrw.prg  -> tbrowse.prg
      tests/transtst.prg -> transfrm.prg
      tests/tstuse.prg   -> use.prg
      tests/testvars.prg -> vars.prg
      tests/vidtest.prg  -> video.prg
      tests/testwarn.prg -> warnings.prg

  * tests/read.prg
    * use K_* value
2013-02-27 18:18:46 +00:00

194 lines
4.6 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/backcompat.js"></script>
<script type="text/javascript" src="/js/shCore.js"></script>
<script type="text/javascript" src="/js/shBrushHarbour.js"></script>
<link href="/css/shCore.css" rel="stylesheet" type="text/css" />
<link href="/css/shThemeDefault.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">SyntaxHighlighter.all()</script>
</head>
<body>
<script type="syntaxhighlighter" class="brush: harbour; light: true"><![CDATA[
#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 s_oClass
IF s_oClass == NIL
s_oClass := HBClass():New( "TValue" )
s_oClass:AddData( "cVal" )
s_oClass:AddMethod( "New", @New() ) // New() Method
s_oClass:Create()
ENDIF
RETURN s_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"
]]></script>
</body>
</html>