Files
harbour-core/harbour/tests/codebloc.prg
Viktor Szakats 13aa09f395 2013-03-11 12:07 UTC+0100 Viktor Szakats (harbour syenar.net)
* utils/hbmk2/hbmk2.prg
    + added help and Markdown output for hbrun mode,
      using same options as in hbmk2 mode, run 'hbrun -help'
    + documented how to disable hbrun history
    + documented script search and and script autodetection details
    + documented opening .dbf files
    + documented how to paste text into shell prompt
    + documented limitation that in script INIT PROCEDUREs,
      automatic selection of interactive GT doesn't work
    + __Accept(), __Wait() to trigger interactive GT in scripts

  * src/rtl/objfunc.prg
    ! __objGetMsgList(): fixed to not rely on any assumption
      about the collation. In UTF8EX mode it was always
      returning empty array.
      Plus cleanup/optimizations

  * contrib/xhb/hbxml.c
    ! fix to a memory double free
      Thanks to Jose F. Gimenez for the patch.

  * contrib/hbtest/core.prg
  * contrib/hbtest/tests/test.prg
  * contrib/hbamf/tests/test.prg
    + added support and tests for tests returning
      array, hash and object types
    * changed zero byte to be escaped to \0 (was \000)
    + added memo tests and related engine cleanups

  * src/rtl/valtoexp.prg
    + hb_ValToExp(): output for objects changed to use double
      quotes for strings instead of a mixture of double/single
      ones, to make it easier stringifying the result

  * src/rtl/hbfilehi.prg
    % hb_DirSepDel(): minor optimization

  * tests/fixcase.hb
    + correct casing of EXTERN/REQUEST references

  * contrib/hbwin/tests/olesrv4.prg
  * contrib/hbxpp/hbxpp.ch
  * contrib/xhb/hterrsys.prg
  * contrib/xhb/xhb.ch
  * extras/httpsrv/uhttpd.prg
  * src/rdd/dbdelim.prg
  * src/rtl/tgetint.prg
  * src/rtl/tpersist.prg
  * tests/ppapi.prg
  * tests/set.prg
    ! run fixcase.hb to format REQUEST/EXTERNs

  * contrib/hbmisc/spd.c
  * contrib/hbmisc/hbnf.hbx
    ! missing casing for one function

  + tests/extend1.hbp
  * tests/extend1.prg
  * tests/extend2.c
    ! fixed to build and run again under Harbour

  * tests/debug.prg
  * tests/dynobj.prg
  * tests/for2.prg
  * tests/memvar.prg
  * tests/ppapi.prg
  * tests/scroll.prg
  * tests/set.prg
  * tests/str.prg
    * __Accept() changed to WAIT or Inkey( 0 )

  - contrib/hbrun/hbrun.1
  * config/postinst.hb
    * deleted hbrun's (outdated) man doc.
      Now built into hbmk2.prg as hbrun help.

  * contrib/hbmisc/hb_f.c
  * contrib/xhb/tests/xml1.prg
  * tests/hrbext.prg
    * comment/minor update

  * tests/hrb.prg
  * tests/hrbext.prg
    + hrb.prg to create .hrb file if it doesn't exist
    + added INIT PROCEDURE

  * contrib/gtwvg/*.h
  * contrib/gtwvg/gtwvgd.c
  * contrib/hbnf/fttext.c
  * contrib/hbwin/hbwinole.h
  * contrib/rddads/adsfunc.c
  * contrib/rddbm/bmdbfx.c
  * doc/c_std.txt
  * extras/gtwvw/docs/funclist.txt
  * extras/gtwvw/wvwpush.c
  * include/*.h
  * src/codepage/cp_utf8.c
  * src/common/*.c
  * src/compiler/*.c
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbffpt/dbffpt1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
  * src/rdd/hsx/hsx.c
  * src/rdd/usrrdd/rdds/arrayrdd.prg
  * src/rdd/*.c
  * src/rtl/*.c
  * src/rtl/gtsln/gtsln.h
  * src/rtl/gttrm/gttrm.c
  * src/rtl/gtwvt/gtwvt.c
  * src/vm/*.c
    * ! operator synced with uncrustify format
    * minor corrections in comment/text

  * tests/codebl.prg
  * tests/codebloc.prg
  * tests/dates3.prg
  * tests/foreach.prg
  * tests/macro.prg
  * tests/mouse.prg
  * tests/onidle.prg
  * tests/tbrowse.prg
  * tests/vmasort.prg
  * tests/wvtext.prg
  * website/samples/codebl.prg.html
  * website/samples/codebloc.prg.html
  * website/samples/dates3.prg.html
  * website/samples/foreach.prg.html
  * website/samples/macro.prg.html
  * website/samples/mouse.prg.html
  * website/samples/onidle.prg.html
  * website/samples/tbrowse.prg.html
    % local functions marked STATIC

  * contrib/hbmisc/spd.c
  * contrib/hbnf/clrsel.prg
  * contrib/hbnf/doc/en/*.txt
  * contrib/hbnf/popadder.prg
  * contrib/hbnf/tests/clrsel.prg
  * contrib/hbwin/win_tprn.prg
  * doc/en/datetime.txt
  * doc/en/set.txt
  * doc/oldnews.txt
  * extras/gfspell/spell.prg
  * extras/gtwvw/docs/gtwvw.txt
  * extras/gtwvw/hbgtwvw.h
  * extras/gtwvw/tests/ebtest7.prg
  * extras/gtwvw/wvwdraw.c
  * extras/gtwvw/wvwpush.c
  * tests/clsscope.prg
  * tests/extend1.prg
    ! few more dates converted to ISO format
2013-03-11 11:14:16 +00:00

132 lines
2.7 KiB
Plaintext

/*
* $Id$
*/
#ifndef __HARBOUR__
#include "clipper.ch"
#endif
// codeblock tests
PROCEDURE Main()
LOCAL B := "this will never print"
LOCAL a := {| b, c | OutStd( "I am a codeblock" + b + c ) }
LOCAL d
LOCAL de
LOCAL ar := { 1, 2 }
LOCAL YY, X
LOCAL x1, x2
HB_SYMBOL_UNUSED( b )
OutStd( "this should print first" )
OutStd( hb_eol() )
Eval( a, " with parameters", " ... and it works!" )
OutStd( hb_eol() )
d := "with access to local variables"
a := {| b, c | OutStd( "I am a second codeblock " + d + b + ;
iif( c == NIL, " empty second parameter ", c ) ), OutStd( hb_eol() ), "WITH return value" }
Eval( a, ", codeblock parameters" )
OutStd( hb_eol() )
Eval( a, ", codeblock parameters ", "and with second parameter" )
OutStd( hb_eol() )
OutStd( MyEval( a ) )
OutStd( hb_eol() )
OtherTest( a )
OutStd( hb_eol() )
AnotherTest( a, "==> Another " )
OutStd( hb_eol() )
a := {| c | iif( c == NIL, {| a | "First " + a }, {| a | "Second " + a } ) }
a := Eval( a )
OutStd( hb_eol() )
OutStd( Eval( a, "codeblock created in a codeblock" ) )
OutStd( hb_eol() )
OutStd( ar[ 1 ] )
OutStd( hb_eol() )
a := {|| ar[ 1 ]++ }
Eval( a )
OutStd( ar[ 1 ] )
OutStd( hb_eol() )
yy := 5
x := {| xx | OutStd( hb_ntos( xx ) ), OutStd( "+" ), OutStd( hb_ntos( yy ) ), OutStd( "=" ), xx + yy }
OutStd( Eval( x, 1 ) ) // this is OK
OutStd( hb_eol() )
OutStd( Eval( x, 1, 2 ) ) // this should ignore unnecesary parameters
QOut( Eval( RetBlock(), 5 ) )
// BugToFix()
OutStd( hb_eol() )
OutStd( "Trying to use detached variable ..." )
OutStd( hb_eol() )
x1 := 5
x2 := 6
de := DetachLocal( x1, x2 )
OutStd( Eval( de ) )
// changing the value of variables
OutStd( hb_eol() )
x1 := 10
x2 := 11
QOut( Eval( de ) )
de := DetachLocal( x1, x2 )
QOut( Eval( de ) )
RETURN
STATIC FUNCTION MyEval( bCodeBlock )
LOCAL D := "this is another variable"
RETURN Eval( bCodeBlock, " from ", "MyEval Function" )
STATIC PROCEDURE OtherTest( cblock )
LOCAL cb
cb := {| a, b | Eval( cblock, a, b ) }
Eval( cb, "--> with nested ", "EVAL" )
RETURN
STATIC PROCEDURE AnotherTest( cb, a )
OutStd( Eval( cb, a ) )
OutStd( hb_eol() )
OutStd( Eval( cb, a, "again and again" ) )
OutStd( hb_eol() )
RETURN
STATIC FUNCTION DetachLocal( x, y )
// NOTE! this should work
LOCAL z := x + y
LOCAL cb := {|| QOut( "z=x+y=" ), QOut( z ), QOut( "x*x=" ), QOut( x * x ), QOut( "x*x+z=" ), x * x + z }
RETURN cb
STATIC PROCEDURE BugToFix()
LOCAL b, a := {|| a + b }
b := "bug "
Eval( a )
RETURN
STATIC FUNCTION RetBlock()
RETURN {| x | x * x }