ChangeLog 19990722-03:30
This commit is contained in:
227
harbour/tests/working/memvar.prg
Normal file
227
harbour/tests/working/memvar.prg
Normal file
@@ -0,0 +1,227 @@
|
||||
// Basic test for memvars handling
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
PROCEDURE MAIN()
|
||||
|
||||
Test1()
|
||||
__accept( "press Enter..." )
|
||||
Test2()
|
||||
__accept( "press Enter..." )
|
||||
Test3()
|
||||
__accept( "press Enter..." )
|
||||
Test4()
|
||||
__accept( "press Enter..." )
|
||||
Test5()
|
||||
__accept( "press Enter..." )
|
||||
Test6()
|
||||
__accept( "press Enter..." )
|
||||
Test7( 'value1', 2, .T. )
|
||||
|
||||
RETURN
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE Test1()
|
||||
// PUBLIC overrided by PRIVATE overrided by uninitialized PUBLIC
|
||||
PUBL memvar1
|
||||
|
||||
Qout( "==Test 1==PUBLIC -> PRIVATE -> PUBLIC" )
|
||||
Qout( memvar1 )
|
||||
memvar1 ='main'
|
||||
Qout( 'in MAIN=', memvar1 )
|
||||
Scope( memvar1 )
|
||||
Qout( 'back in MAIN=', memvar1 )
|
||||
Qout( "" )
|
||||
|
||||
RETURN
|
||||
|
||||
FUNCTION Scope( value )
|
||||
PRIVA memvar1:='scope'
|
||||
|
||||
Scope2()
|
||||
Qout( "in SCOPE=", memvar1 )
|
||||
|
||||
RETURN( value )
|
||||
|
||||
PROCEDURE Scope2()
|
||||
PUBLIC memvar1
|
||||
Qout( "in SCOPE2=", memvar1 )
|
||||
RETURN
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE Test2()
|
||||
// PUBLIC overrided by PUBLIC overrided by uninitialized PUBLIC
|
||||
PUBLIC memvar2
|
||||
|
||||
Qout( "==Test 2==PUBLIC -> PUBLIC -> PUBLIC" )
|
||||
Qout( memvar2 )
|
||||
memvar2 ='main'
|
||||
Qout( 'in MAIN=', memvar2 )
|
||||
Scope3( memvar2 )
|
||||
Qout( 'back in MAIN=', memvar2 )
|
||||
Qout( "" )
|
||||
|
||||
RETURN
|
||||
|
||||
FUNCTION Scope3( value )
|
||||
PUBLIC memvar2:='scope'
|
||||
|
||||
Scope4()
|
||||
Qout( "in SCOPE=", memvar2 )
|
||||
|
||||
RETURN( value )
|
||||
|
||||
PROCEDURE Scope4()
|
||||
PUBLIC memvar2
|
||||
Qout( "in SCOPE2=", memvar2 )
|
||||
RETURN
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE Test3()
|
||||
// PUBLIC overrided by PRIVATE overrided by initialized PUBLIC
|
||||
PUBLIC memvar3
|
||||
|
||||
Qout( "==Test 3==PUBLIC -> PRIVATE -> PUBLIC:=" )
|
||||
Qout( memvar3 )
|
||||
memvar3 ='main'
|
||||
Qout( 'in MAIN=', memvar3 )
|
||||
Scope5( memvar3 )
|
||||
Qout( 'back in MAIN=', memvar3 )
|
||||
Qout( "" )
|
||||
|
||||
RETURN
|
||||
|
||||
FUNCTION Scope5( value )
|
||||
PRIVATE memvar3:='scope'
|
||||
|
||||
Scope6()
|
||||
Qout( "in SCOPE=", memvar3 )
|
||||
|
||||
RETURN( value )
|
||||
|
||||
PROCEDURE Scope6()
|
||||
PUBLIC memvar3:='scope2'
|
||||
Qout( "in SCOPE2=", memvar3 )
|
||||
RETURN
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE Test4()
|
||||
// PUBLIC overrided by PUBLIC overrided by initialized PUBLIC
|
||||
PUBLIC memvar4
|
||||
|
||||
Qout( "==Test 4==PUBLIC -> PUBLIC -> PUBLIC:=" )
|
||||
Qout( memvar4 )
|
||||
memvar4 ='main'
|
||||
Qout( 'in MAIN=', memvar4 )
|
||||
Scope7( memvar4 )
|
||||
Qout( 'back in MAIN=', memvar4 )
|
||||
Qout( "" )
|
||||
|
||||
RETURN
|
||||
|
||||
FUNCTION Scope7( value )
|
||||
PUBLIC memvar4:='scope'
|
||||
|
||||
Scope8()
|
||||
Qout( "in SCOPE=", memvar4 )
|
||||
|
||||
RETURN( value )
|
||||
|
||||
PROCEDURE Scope8()
|
||||
PUBLIC memvar4:='scope2'
|
||||
Qout( "in SCOPE2=", memvar4 )
|
||||
RETURN
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE TEST5()
|
||||
PUBLIC mempublic, public3:=3
|
||||
//PUBLIC public2[ 10 ] //unsupported yet
|
||||
PRIVATE memprivate
|
||||
//PARAMETERS memparam //unsupported yet
|
||||
|
||||
Qout( "==Test for memvars passed by reference and __PUBLIC/__PRIVATE " )
|
||||
Qout( "uninitialized PUBLIC=", mempublic )
|
||||
// Qout( "uninitialized PUBLIC array (first item)=", public2[1] )
|
||||
Qout( "initialized PUBLIC=", public3 )
|
||||
Qout( "uninitialized PRIVATE=", memprivate )
|
||||
// Qout( memparam )
|
||||
// Qout( memnone )
|
||||
|
||||
mempublic ='PUBLIC'
|
||||
Qout( "PUBLIC with new value=", mempublic )
|
||||
memprivate ='PRIVATE'
|
||||
Qout( "PRIVATE with new value=", memprivate )
|
||||
// memparam =3
|
||||
// Qout( memparam )
|
||||
// memnone =4
|
||||
// Qout( memnone )
|
||||
|
||||
Qout( "PUBLIC after passing by reference=", Use( @mempublic ) )
|
||||
Qout( "PRIVATE after passing by reference=", Use( @memprivate ) )
|
||||
// Qout( Use( @memparam ) )
|
||||
// Qout( Use( @memnone ) )
|
||||
|
||||
Qout( "PUBLIC created by __PUBLIC function=", public1 )
|
||||
Qout( "" )
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
FUNCTION Use( value )
|
||||
|
||||
UseRef( @value )
|
||||
|
||||
__PUBLIC( "public1" )
|
||||
__PRIVATE( {"private1", "private2", "private3"} )
|
||||
Qout( "undeclared PUBLIC created by __PUBLIC function=", public1 )
|
||||
Qout( "undeclared PRIVATE created by __PRIVATE function=", private1 )
|
||||
Qout( "undeclared PRIVATE created by __PRIVATE function=", private2 )
|
||||
Qout( "undeclared PRIVATE created by __PRIVATE function=", private3 )
|
||||
|
||||
public1 :='public created by __PUBLIC'
|
||||
Qout( "" )
|
||||
|
||||
RETURN( value )
|
||||
|
||||
PROCEDURE UseRef( reference )
|
||||
|
||||
reference +=' variable'
|
||||
|
||||
RETURN
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE Test6()
|
||||
PUBLIC publCB
|
||||
PRIVATE privVar:=' (PRIVATE in MAIN) '
|
||||
|
||||
Qout( "== Test for detached PRIVATE variables" )
|
||||
DetachMemvar( 'detached memvar' )
|
||||
Qout( EVAL( publCB, 'in Main: ' ) )
|
||||
|
||||
RETURN
|
||||
|
||||
PROCEDURE DetachMemvar( cValue )
|
||||
PRIVATE privVar:=' (PRIVATE in DetachMemvar) '
|
||||
|
||||
publCB ={|x| x+privVar+cValue}
|
||||
Qout( EVAL( publCB, "in DetachMemvar: " ) )
|
||||
|
||||
RETURN
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PROCEDURE Test7( )
|
||||
PARAMETERS para1, para2
|
||||
PARAM para3
|
||||
|
||||
Qout( "Parameter 1 =", para1 )
|
||||
Qout( "Parameter 2 =", para2 )
|
||||
Qout( "Parameter 3 =", para3 )
|
||||
|
||||
RETURN
|
||||
Reference in New Issue
Block a user