OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [itcl/] [itcl/] [tests/] [old/] [upvar.test] - Diff between revs 578 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 578 Rev 1765
#
#
# Tests for "upvar" across interpreter boundaries
# Tests for "upvar" across interpreter boundaries
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
#   AUTHOR:  Michael J. McLennan
#   AUTHOR:  Michael J. McLennan
#            Bell Labs Innovations for Lucent Technologies
#            Bell Labs Innovations for Lucent Technologies
#            mmclennan@lucent.com
#            mmclennan@lucent.com
#            http://www.tcltk.com/itcl
#            http://www.tcltk.com/itcl
#
#
#      RCS:  $Id: upvar.test,v 1.1.1.1 2002-01-16 10:24:47 markom Exp $
#      RCS:  $Id: upvar.test,v 1.1.1.1 2002-01-16 10:24:47 markom Exp $
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
#            Copyright (c) 1993-1998  Lucent Technologies, Inc.
#            Copyright (c) 1993-1998  Lucent Technologies, Inc.
# ======================================================================
# ======================================================================
# See the file "license.terms" for information on usage and
# See the file "license.terms" for information on usage and
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
#  DEFINE SOME USEFUL ROUTINES
#  DEFINE SOME USEFUL ROUTINES
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
proc upvarTest_show_var {var val} {
proc upvarTest_show_var {var val} {
        return "$var>>$val"
        return "$var>>$val"
}
}
proc upvarTest_upvar_in_procs {} {
proc upvarTest_upvar_in_procs {} {
        set upvarTest_var_local "value in main interp"
        set upvarTest_var_local "value in main interp"
        foo do {
        foo do {
                upvar upvarTest_var_local var
                upvar upvarTest_var_local var
                set var
                set var
        }
        }
}
}
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
#  CREATE SOME OBJECTS
#  CREATE SOME OBJECTS
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
Foo foo
Foo foo
Baz baz
Baz baz
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
#  UPVAR TESTS
#  UPVAR TESTS
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
test {"::" sends command to global interp but preserves
test {"::" sends command to global interp but preserves
local variables.  This ensures that when control
local variables.  This ensures that when control
shifts to the global scope for Extended Tcl commands,
shifts to the global scope for Extended Tcl commands,
Expect commands, etc., local variables will be
Expect commands, etc., local variables will be
recognized.} {
recognized.} {
        foo do {
        foo do {
                set localvar "special"
                set localvar "special"
                ::eval {upvarTest_show_var localvar $localvar}
                ::eval {upvarTest_show_var localvar $localvar}
        }
        }
} {
} {
        $result == "Foo says 'localvar>>special'"
        $result == "Foo says 'localvar>>special'"
}
}
test {"upvar" can cross interp boundaries to access local variables} {
test {"upvar" can cross interp boundaries to access local variables} {
        upvarTest_upvar_in_procs
        upvarTest_upvar_in_procs
} {
} {
        $result == "Foo says 'value in main interp'"
        $result == "Foo says 'value in main interp'"
}
}
test {"upvar" can cross interp boundaries to access global variables} {
test {"upvar" can cross interp boundaries to access global variables} {
        set upvarTest_var_global "value in main interp"
        set upvarTest_var_global "value in main interp"
        foo do {
        foo do {
                upvar upvarTest_var_global var
                upvar upvarTest_var_global var
                set var
                set var
        }
        }
} {
} {
        $result == "Foo says 'value in main interp'"
        $result == "Foo says 'value in main interp'"
}
}
test {"upvar" can handle multiple call frames on the stack} {
test {"upvar" can handle multiple call frames on the stack} {
        set upvarTest_var_global "new value"
        set upvarTest_var_global "new value"
        foo do {
        foo do {
                foo do {
                foo do {
                        upvar #0 upvarTest_var_global var
                        upvar #0 upvarTest_var_global var
                        set var
                        set var
                }
                }
        }
        }
} {
} {
        $result == "Foo says 'Foo says 'new value''"
        $result == "Foo says 'Foo says 'new value''"
}
}
test {"upvar" can cross class interp boundaries} {
test {"upvar" can cross class interp boundaries} {
        baz do {
        baz do {
                set localvar "value in Baz"
                set localvar "value in Baz"
                foo do {
                foo do {
                        upvar localvar var
                        upvar localvar var
                        set var
                        set var
                }
                }
        }
        }
} {
} {
        $result == "Baz says 'Foo says 'value in Baz''"
        $result == "Baz says 'Foo says 'value in Baz''"
}
}
test {"upvar" can cross class interp boundaries back to main interp} {
test {"upvar" can cross class interp boundaries back to main interp} {
        set upvarTest_var_global "global value"
        set upvarTest_var_global "global value"
        baz do {
        baz do {
                foo do {
                foo do {
                        upvar 2 upvarTest_var_global var
                        upvar 2 upvarTest_var_global var
                        set var
                        set var
                }
                }
        }
        }
} {
} {
        $result == "Baz says 'Foo says 'global value''"
        $result == "Baz says 'Foo says 'global value''"
}
}
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
#  CLEAN UP
#  CLEAN UP
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
foo delete
foo delete
baz delete
baz delete
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.