Files
harbour-core/tests/memvar.prg
vszakats 9687850865 2013-03-16 02:10 UTC+0100 Viktor Szakats (harbour syenar.net)
* (all files)
    * stripped svn header
    * minor cleanups
    ; use following command to find out the history of files:
       git log
       git log --follow
       git blame
       git annotate
2013-03-16 02:11:42 +01:00

382 lines
6.6 KiB
Plaintext

// Basic test for memvars handling
#ifndef __HARBOUR__
#include "clipper.ch"
#endif
MEMVAR memvar
MEMVAR memvar1
MEMVAR memvar2
MEMVAR memvar3
MEMVAR memvar4
MEMVAR mempublic
MEMVAR memprivate
MEMVAR memparam
MEMVAR memfunc
MEMVAR public1
MEMVAR public2
MEMVAR public3
MEMVAR publCB
MEMVAR private1
MEMVAR private2
MEMVAR private3
MEMVAR privVar
MEMVAR para1
MEMVAR para2
MEMVAR para3
MEMVAR parameter1again
MEMVAR param1
MEMVAR param2
MEMVAR initmem
PROCEDURE Main()
LOCAL main := 0
HB_SYMBOL_UNUSED( main )
Test1()
WAIT "press any key..."
Test2()
WAIT "press any key..."
Test3()
WAIT "press any key..."
Test4()
WAIT "press any key..."
Test5()
WAIT "press any key..."
Test6()
WAIT "press any key..."
Test7( "value1", 2, .T. )
WAIT "press any key..."
Test8()
WAIT "press any key..."
Test9()
RETURN
//
PROCEDURE Test1()
// PUBLIC overrided by PRIVATE overrided by uninitialized PUBLIC
PUBL memvar1
? "==Test 1==PUBLIC -> PRIVATE -> PUBLIC"
? memvar1
memvar1 := "main"
? "in MAIN : ", memvar1
Scope( memvar1 )
? "back in MAIN : ", memvar1
?
RETURN
FUNCTION Scope( value )
PRIVA memvar1 := "scope"
Scope2()
? "in SCOPE : ", memvar1
RETURN value
PROCEDURE Scope2()
PUBLIC memvar1
? "in SCOPE2 : ", memvar1
RETURN
//
PROCEDURE Test2()
// PUBLIC overrided by PUBLIC overrided by uninitialized PUBLIC
PUBLIC memvar2
? "==Test 2==PUBLIC -> PUBLIC -> PUBLIC"
? memvar2
memvar2 := "main"
? "in MAIN : ", memvar2
Scope3( memvar2 )
? "back in MAIN : ", memvar2
?
RETURN
FUNCTION Scope3( value )
PUBLIC memvar2 := "scope"
Scope4()
? "in SCOPE : ", memvar2
RETURN value
PROCEDURE Scope4()
PUBLIC memvar2
? "in SCOPE2 : ", memvar2
RETURN
//
PROCEDURE Test3()
// PUBLIC overrided by PRIVATE overrided by initialized PUBLIC
PUBLIC memvar3
? "==Test 3==PUBLIC -> PRIVATE -> PUBLIC:="
? memvar3
memvar3 := "main"
? "in MAIN : ", memvar3
Scope5( memvar3 )
? "back in MAIN : ", memvar3
?
RETURN
FUNCTION Scope5( value )
PRIVATE memvar3 := "scope"
Scope6()
? "in SCOPE : ", memvar3
RETURN value
PROCEDURE Scope6()
PUBLIC memvar3 := "scope2"
? "in SCOPE2 : ", memvar3
RETURN
//
PROCEDURE Test4()
// PUBLIC overrided by PUBLIC overrided by initialized PUBLIC
PUBLIC memvar4
? "==Test 4==PUBLIC -> PUBLIC -> PUBLIC:="
? memvar4
memvar4 := "main"
? "in MAIN : ", memvar4
Scope7( memvar4 )
? "back in MAIN : ", memvar4
?
RETURN
FUNCTION Scope7( value )
PUBLIC memvar4 := "scope"
Scope8()
? "in SCOPE : ", memvar4
RETURN value
PROCEDURE Scope8()
PUBLIC memvar4 := "scope2"
? "in SCOPE2 : ", memvar4
RETURN
//
PROCEDURE TEST5()
PUBLIC mempublic, public3 := 3
// PUBLIC public2[ 10 ] //unsupported yet
PRIVATE memprivate
PARAMETERS memparam
? "==Test for memvars passed by reference and __PUBLIC/__PRIVATE "
? " uninitialized PUBLIC : ", mempublic
// ? "uninitialized PUBLIC array (first item) : ", public2[ 1 ]
? "initialized PUBLIC : ", public3
? " uninitialized PRIVATE : ", memprivate
? "uninitialized PARAMETER : ", memparam
// ? memnone
mempublic := "PUBLIC"
? " PUBLIC with new value : ", mempublic
memprivate := "PRIVATE"
? " PRIVATE with new value : ", memprivate
memparam := "PARAMETER"
? "PARAMETER with new value : ", memparam
// memnone := 4
// ? memnone
? " PUBLIC after passing by reference : ", UseVar( @mempublic )
? " PRIVATE after passing by reference : ", UseVar( @memprivate )
? "PARAMETER after passing by reference : ", UseVar( @memparam )
// ? Use( @memnone )
#ifdef __HARBOUR__
? "PUBLIC created by __PUBLIC function : ", public1
#endif
?
RETURN
FUNCTION UseVar( value )
UseRef( @value )
#ifdef __HARBOUR__
__mvPublic( "public1" ) // , "public21" )
// __mvPrivate( "private1", "private2", "private3" )
__mvPrivate( { "private1", "private2", "private3" } )
? "undeclared PUBLIC created by __PUBLIC function : ", public1
? "undeclared PRIVATE created by __PRIVATE function : ", private1
? "undeclared PRIVATE created by __PRIVATE function : ", private2
? "undeclared PRIVATE created by __PRIVATE function : ", private3
public1 := "public created by __PUBLIC"
#endif
?
RETURN value
PROCEDURE UseRef( reference )
reference += " variable"
RETURN
//
PROCEDURE Test6()
PUBLIC publCB
PRIVATE privVar := " (PRIVATE in MAIN) "
? "== Test for detached PRIVATE variables"
DetachMemvar( "detached memvar" )
? Eval( publCB, "in Main: " )
RETURN
PROCEDURE DetachMemvar( cValue )
PRIVATE privVar := " (PRIVATE in DetachMemvar) "
publCB := {| x | x + privVar + cValue }
? Eval( publCB, "in DetachMemvar: " )
RETURN
//
PROCEDURE Test7( )
PARAMETERS para1, para2, para3
PARAM parameter1again
? "Parameter 1 : ", para1
? "Parameter 2 : ", para2
? "Parameter 3 : ", para3
? "Parameter 4 : ", parameter1again
RETURN
//
PROCEDURE Test8()
PRIVATE private1 := "PRIVATE1"
? "In Test8 before UsePriv"
? "Private1 : ", private1
UsePriv( private1 )
? "In Test8 after UsePriv"
? "Private1 : ", private1
WAIT "press any key..."
? "In Test8 before UsePriv with reference"
? "Private1 : ", private1
UsePriv( @private1 )
? "In Test8 after UsePriv with reference"
? "Private1 : ", private1
RETURN
PROCEDURE UsePriv()
PARAMETERS param1
? "In UsePriv before UseParam"
? "Private1 : ", private1
? "Param1 : ", param1
UseParam()
? "In UsePriv after UseParam"
? "Private1 : ", private1
? "Param1 : ", param1
RETURN
PROCEDURE UseParam()
PARAMETERS param2
? "In UseParam before assignment"
? "Private1 : ", private1
? "Param1 : ", param1
? "Param2 : ", param2
param2 := "PARAM2"
param1 := "new value"
? "In UseParam after assignment"
? "Private1 : ", private1
? "Param1 : ", param1
? "Param2 : ", param2
RETURN
//
PROCEDURE Test9()
PUBLIC MEMVAR
PUBLIC memfunc
memvar := 19
? "Variable with the name of module (memvar) : ", memvar
memfunc := 33
? "Variable with the name of function : ", memfunc
? "Return value from a function : ", memfunc( 9 )
// mem()
RETURN
STATIC FUNCTION memfunc( memfunc )
RETURN memfunc * memfunc
INIT PROCEDURE initmem()
PARAMETERS MEMVAR
PARAMETERS initmem
? "Tests for PARAMETERS, PRIVATE nad PUBLIC variables"
?
? "in INIT function - Passed parameter : ", memvar
? "in INIT function - Passed parameter with different name : ", initmem
?
RETURN