⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 namespace.test

📁 linux系统下的音频通信
💻 TEST
📖 第 1 页 / 共 3 页
字号:
# Functionality covered: this file contains a collection of tests for the# procedures in tclNamesp.c that implement Tcl's basic support for# namespaces. Other namespace-related tests appear in variable.test.## Sourcing this file into Tcl runs the tests and generates output for# errors. No output means no errors were found.## Copyright (c) 1997 Sun Microsystems, Inc.## See the file "license.terms" for information on usage and redistribution# of this file, and for a DISCLAIMER OF ALL WARRANTIES.## SCCS: @(#) namespace.test 1.15 97/07/30 15:26:42if {[string compare test [info procs test]] == 1} then {source defs}# Clear out any namespaces called test_ns_*catch {eval namespace delete [namespace children :: test_ns_*]}test namespace-1.1 {TclInitNamespaces, GetNamespaceFromObj, NamespaceChildrenCmd} {    namespace children :: test_ns_*} {}catch {unset l}test namespace-2.1 {Tcl_GetCurrentNamespace} {    list [namespace current] [namespace eval {} {namespace current}] \        [namespace eval {} {namespace current}]} {:: :: ::}test namespace-2.2 {Tcl_GetCurrentNamespace} {    set l {}    lappend l [namespace current]    namespace eval test_ns_1 {        lappend l [namespace current]        namespace eval foo {            lappend l [namespace current]        }    }    lappend l [namespace current]    set l} {:: ::test_ns_1 ::test_ns_1::foo ::}test namespace-3.1 {Tcl_GetGlobalNamespace} {    namespace eval test_ns_1 {namespace eval foo {namespace eval bar {} } }    # namespace children uses Tcl_GetGlobalNamespace     namespace eval test_ns_1 {namespace children foo b*}} {::test_ns_1::foo::bar}test namespace-4.1 {Tcl_PushCallFrame with isProcCallFrame=1} {    namespace eval test_ns_1 {        variable v 123        proc p {} {            variable v            return $v        }    }    test_ns_1::p    ;# does Tcl_PushCallFrame to push p's namespace} {123}test namespace-4.2 {Tcl_PushCallFrame with isProcCallFrame=0} {    namespace eval test_ns_1::baz {}  ;# does Tcl_PushCallFrame to create baz    proc test_ns_1::baz::p {} {        variable v        set v 789        set v}    test_ns_1::baz::p} {789}test namespace-5.1 {Tcl_PopCallFrame, no vars} {    namespace eval test_ns_1::blodge {}  ;# pushes then pops frame} {}test namespace-5.2 {Tcl_PopCallFrame, local vars must be deleted} {    proc test_ns_1::r {} {        set a 123    }    test_ns_1::r   ;# pushes then pop's r's frame} {123}test namespace-6.1 {Tcl_CreateNamespace} {    catch {eval namespace delete [namespace children :: test_ns_*]}    list [lsort [namespace children :: test_ns_*]] \	 [namespace eval test_ns_1 {namespace current}] \	 [namespace eval test_ns_2 {namespace current}] \	 [namespace eval ::test_ns_3 {namespace current}] \	 [namespace eval ::test_ns_4 \             {namespace eval foo {namespace current}}] \	 [namespace eval ::test_ns_5 \             {namespace eval ::test_ns_6 {namespace current}}] \         [lsort [namespace children :: test_ns_*]]} {{} ::test_ns_1 ::test_ns_2 ::test_ns_3 ::test_ns_4::foo ::test_ns_6 {::test_ns_1 ::test_ns_2 ::test_ns_3 ::test_ns_4 ::test_ns_5 ::test_ns_6}}test namespace-6.2 {Tcl_CreateNamespace, odd number of :'s in name is okay} {    list [namespace eval :::test_ns_1::::foo {namespace current}] \         [namespace eval test_ns_2:::::foo {namespace current}]} {::test_ns_1::foo ::test_ns_2::foo}test namespace-6.3 {Tcl_CreateNamespace, trailing ::s in ns name are ignored} {    list [catch {namespace eval test_ns_7::: {namespace current}} msg] $msg } {0 ::test_ns_7}test namespace-6.4 {Tcl_CreateNamespace, trailing ::s in ns name are ignored} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_1:: {        namespace eval test_ns_2:: {}        namespace eval test_ns_3:: {}    }    namespace children ::test_ns_1} {::test_ns_1::test_ns_2 ::test_ns_1::test_ns_3}test namespace-6.5 {Tcl_CreateNamespace, relative ns names now only looked up in current ns} {    set trigger {        namespace eval test_ns_2 {namespace current}    }    set l {}    lappend l [namespace eval test_ns_1 $trigger]    namespace eval test_ns_1::test_ns_2 {}    lappend l [namespace eval test_ns_1 $trigger]} {::test_ns_1::test_ns_2 ::test_ns_1::test_ns_2}test namespace-7.1 {Tcl_DeleteNamespace, active call frames in ns} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_1 {        proc p {} {            namespace delete [namespace current]            return [namespace current]        }    }    list [test_ns_1::p] [catch {test_ns_1::p} msg] $msg} {::test_ns_1 1 {invalid command name "test_ns_1::p"}}test namespace-7.2 {Tcl_DeleteNamespace, no active call frames in ns} {    namespace eval test_ns_2 {        proc p {} {            return [namespace current]        }    }    list [test_ns_2::p] [namespace delete test_ns_2]} {::test_ns_2 {}}test namespace-8.1 {TclTeardownNamespace, delete global namespace} {    catch {interp delete test_interp}    interp create test_interp    interp eval test_interp {        namespace eval test_ns_1 {            namespace export p            proc p {} {                return [namespace current]            }        }        namespace eval test_ns_2 {            namespace import ::test_ns_1::p            variable v 27            proc q {} {                variable v                return "[p] $v"            }        }        set x [test_ns_2::q]        catch {set xxxx}    }    list [interp eval test_interp {test_ns_2::q}] \         [interp eval test_interp {namespace delete ::}] \         [catch {interp eval test_interp {set a 123}} msg] $msg \         [interp delete test_interp]} {{::test_ns_1 27} {} 1 {invalid command name "set"} {}}test namespace-8.2 {TclTeardownNamespace, remove deleted ns from parent} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_1::test_ns_2::test_ns_3a {proc p {} {}}    namespace eval test_ns_1::test_ns_2::test_ns_3b {proc q {} {}}    list [namespace children test_ns_1] \         [namespace delete test_ns_1::test_ns_2] \         [namespace children test_ns_1]} {::test_ns_1::test_ns_2 {} {}}test namespace-8.3 {TclTeardownNamespace, delete child namespaces} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_1::test_ns_2::test_ns_3a {proc p {} {}}    namespace eval test_ns_1::test_ns_2::test_ns_3b {proc q {} {}}    list [namespace children test_ns_1] \         [namespace delete test_ns_1::test_ns_2] \         [namespace children test_ns_1] \         [catch {namespace children test_ns_1::test_ns_2} msg] $msg \         [info commands test_ns_1::test_ns_2::test_ns_3a::*]} {::test_ns_1::test_ns_2 {} {} 1 {unknown namespace "test_ns_1::test_ns_2" in namespace children command} {}}test namespace-8.4 {TclTeardownNamespace, cmds imported from deleted ns go away} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_export {        namespace export cmd1 cmd2        proc cmd1 {args} {return "cmd1: $args"}        proc cmd2 {args} {return "cmd2: $args"}    }    namespace eval test_ns_import {        namespace import ::test_ns_export::*        proc p {} {return foo}    }    list [info commands test_ns_import::*] \         [namespace delete test_ns_export] \         [info commands test_ns_import::*]} {{::test_ns_import::p ::test_ns_import::cmd1 ::test_ns_import::cmd2} {} ::test_ns_import::p}test namespace-9.1 {Tcl_Import, empty import pattern} {    catch {eval namespace delete [namespace children :: test_ns_*]}    list [catch {namespace eval test_ns_import {namespace import {}}} msg] $msg} {1 {empty import pattern}}test namespace-9.2 {Tcl_Import, unknown namespace in import pattern} {    list [catch {namespace eval test_ns_import {namespace import fred::x}} msg] $msg} {1 {unknown namespace in import pattern "fred::x"}}test namespace-9.3 {Tcl_Import, import ns == export ns} {    list [catch {namespace eval test_ns_import {namespace import ::test_ns_import::puts}} msg] $msg} {1 {import pattern "::test_ns_import::puts" tries to import from namespace "test_ns_import" into itself}}test namespace-9.4 {Tcl_Import, simple import} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_export {        namespace export cmd1        proc cmd1 {args} {return "cmd1: $args"}        proc cmd2 {args} {return "cmd2: $args"}    }    namespace eval test_ns_import {        namespace import ::test_ns_export::*        proc p {} {return [cmd1 123]}    }    test_ns_import::p} {cmd1: 123}test namespace-9.5 {Tcl_Import, can't redefine cmd unless allowOverwrite!=0} {    list [catch {namespace eval test_ns_import {namespace import ::test_ns_export::*}} msg] $msg} {1 {can't import command "cmd1": already exists}}test namespace-9.6 {Tcl_Import, cmd redefinition ok if allowOverwrite!=0} {    namespace eval test_ns_import {        namespace import -force ::test_ns_export::*        cmd1 555    }} {cmd1: 555}test namespace-9.7 {Tcl_Import, links are preserved if cmd is redefined} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_export {        namespace export cmd1        proc cmd1 {args} {return "cmd1: $args"}    }    namespace eval test_ns_import {        namespace import -force ::test_ns_export::*    }    list [test_ns_import::cmd1 a b c] \         [test_ns_export::cmd1 d e f] \         [proc test_ns_export::cmd1 {args} {return "new1: $args"}] \         [namespace origin test_ns_import::cmd1] \         [namespace origin test_ns_export::cmd1] \         [test_ns_import::cmd1 g h i] \         [test_ns_export::cmd1 j k l]} {{cmd1: a b c} {cmd1: d e f} {} ::test_ns_export::cmd1 ::test_ns_export::cmd1 {new1: g h i} {new1: j k l}}test namespace-10.1 {Tcl_ForgetImport, check for valid namespaces} {    catch {eval namespace delete [namespace children :: test_ns_*]}    list [catch {namespace forget xyzzy::*} msg] $msg} {1 {unknown namespace in namespace forget pattern "xyzzy::*"}}test namespace-10.2 {Tcl_ForgetImport, ignores patterns that don't match} {    namespace eval test_ns_export {        namespace export cmd1        proc cmd1 {args} {return "cmd1: $args"}        proc cmd2 {args} {return "cmd2: $args"}    }    namespace eval test_ns_import {        namespace forget ::test_ns_export::wombat    }} {}test namespace-10.3 {Tcl_ForgetImport, deletes matching imported cmds} {    namespace eval test_ns_import {        namespace import ::test_ns_export::*        proc p {} {return [cmd1 123]}        set l {}        lappend l [info commands ::test_ns_import::*]        namespace forget ::test_ns_export::cmd1        lappend l [info commands ::test_ns_import::*]        lappend l [catch {cmd1 777} msg] $msg    }} {{::test_ns_import::p ::test_ns_import::cmd1} ::test_ns_import::p 1 {invalid command name "cmd1"}}test namespace-11.1 {TclGetOriginalCommand, check if not imported cmd} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_export {        namespace export cmd1        proc cmd1 {args} {return "cmd1: $args"}    }    list [namespace origin set] [namespace origin test_ns_export::cmd1]} {::set ::test_ns_export::cmd1}test namespace-11.2 {TclGetOriginalCommand, directly imported cmd} {    namespace eval test_ns_import1 {        namespace import ::test_ns_export::*        namespace export *        proc p {} {namespace origin cmd1}    }    list [test_ns_import1::p] [namespace origin test_ns_import1::cmd1]} {::test_ns_export::cmd1 ::test_ns_export::cmd1}test namespace-11.3 {TclGetOriginalCommand, indirectly imported cmd} {    namespace eval test_ns_import2 {        namespace import ::test_ns_import1::*        proc q {} {return [cmd1 123]}    }    list [test_ns_import2::q] [namespace origin test_ns_import2::cmd1]} {{cmd1: 123} ::test_ns_export::cmd1}test namespace-12.1 {InvokeImportedCmd} {    catch {eval namespace delete [namespace children :: test_ns_*]}    namespace eval test_ns_export {        namespace export cmd1        proc cmd1 {args} {namespace current}    }    namespace eval test_ns_import {        namespace import ::test_ns_export::*    }    list [test_ns_import::cmd1]} {::test_ns_export}test namespace-13.1 {DeleteImportedCmd, deletes imported cmds} {    namespace eval test_ns_import {        set l {}        lappend l [info commands ::test_ns_import::*]        namespace forget ::test_ns_export::cmd1        lappend l [info commands ::test_ns_import::*]    }} {::test_ns_import::cmd1 {}}test namespace-14.1 {TclGetNamespaceForQualName, absolute names} {    catch {eval namespace delete [namespace children :: test_ns_*]}    variable v 10    namespace eval test_ns_1::test_ns_2 {        variable v 20    }    namespace eval test_ns_2 {        variable v 30    }    namespace eval test_ns_1 {        list $::v $::test_ns_2::v $::test_ns_1::test_ns_2::v \             [namespace children :: test_ns_*]    }} {10 30 20 {::test_ns_1 ::test_ns_2}}test namespace-14.2 {TclGetNamespaceForQualName, invalid absolute names} {    namespace eval test_ns_1 {        list [catch {set ::test_ns_777::v} msg] $msg \             [catch {namespace children test_ns_777} msg] $msg    }} {1 {can't read "::test_ns_777::v": no such variable} 1 {unknown namespace "test_ns_777" in namespace children command}}test namespace-14.3 {TclGetNamespaceForQualName, relative names} {    namespace eval test_ns_1 {        list $v $test_ns_2::v    }} {10 20}test namespace-14.4 {TclGetNamespaceForQualName, relative ns names looked up only in current ns} {    namespace eval test_ns_1::test_ns_2 {        namespace eval foo {}    }    namespace eval test_ns_1 {        list [namespace children test_ns_2] \             [catch {namespace children test_ns_1} msg] $msg    }} {::test_ns_1::test_ns_2::foo 1 {unknown namespace "test_ns_1" in namespace children command}}test namespace-14.5 {TclGetNamespaceForQualName, relative ns names looked up only in current ns} {    namespace eval ::test_ns_2 {        namespace eval bar {}    }    namespace eval test_ns_1 {        set l [list [catch {namespace delete test_ns_2::bar} msg] $msg]    }    set l} {1 {unknown namespace "test_ns_2::bar" in namespace delete command}}test namespace-14.6 {TclGetNamespaceForQualName, relative ns names looked up only in current ns} {    namespace eval test_ns_1::test_ns_2 {        namespace eval foo {}    }    namespace eval test_ns_1 {        list [namespace children test_ns_2] \             [catch {namespace children test_ns_1} msg] $msg    }} {::test_ns_1::test_ns_2::foo 1 {unknown namespace "test_ns_1" in namespace children command}}test namespace-14.7 {TclGetNamespaceForQualName, ignore extra :s if ns} {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -