1########################################################################## 2# TEPAM - Tcl's Enhanced Procedure and Argument Manager 3########################################################################## 4# 5# proc_namespace.test: 6# This file is part of the enhanced procedure and argument manager's regression 7# test. It validates the declaration and call of the procedure sub commands. 8# 9# Copyright (C) 2009, 2010 Andreas Drollinger 10# 11# RCS: @(#) $Id: proc_namespaces.test,v 1.1 2010/02/11 21:50:55 droll Exp $ 12########################################################################## 13# See the file "license.terms" for information on usage and redistribution 14# of this file, and for a DISCLAIMER OF ALL WARRANTIES. 15########################################################################## 16 17source [file join \ 18 [file dirname [file dirname [file join [pwd] [info script]]]] \ 19 devtools testutilities.tcl] 20 21testsNeedTcl 8.3 22testsNeedTcltest 1.0 23 24catch {namespace delete ::tepam} 25catch {namespace delete ns1} 26catch {namespace delete ns2} 27catch {rename Parent1 ""} 28catch {rename Child ""} 29 30testing { 31 useLocal tepam.tcl tepam 32} 33 34######## Main namespace ######## 35 36 # Don't use the :: main space prefix 37 38 # Procedure declarations 39 test tepam-ns.main1.dcl.main "tepam, main namespace - parent procedure declaration" \ 40 -body {tepam::procedure Parent1 {} {return Parent1-[Child]}} \ 41 -result "" -output "" 42 43 test tepam-ns.main1.dcl.chld "tepam, main namespace - child procedure declaration" \ 44 -body {tepam::procedure Child {} {return Child}} \ 45 -result "" -output "" 46 47 # Execution 48 test tepam-ns.main1.exe1 "tepam, main namespace - parent procedure execution" \ 49 -body {Parent1} \ 50 -result "Parent1-Child" -output "" 51 52 test tepam-ns.main1.exe2 "tepam, main namespace - parent procedure execution" \ 53 -body {::Parent1} \ 54 -result "Parent1-Child" -output "" 55 56 # Use the :: main space prefix 57 58 # Procedure declarations 59 test tepam-ns.main2.dcl.main "tepam, main namespace - parent procedure declaration" \ 60 -body {tepam::procedure ::Parent1 {} {return ::Parent1-[Child]}} \ 61 -result "" -output "" 62 63 test tepam-ns.main2.dcl.chld "tepam, main namespace - child procedure declaration" \ 64 -body {tepam::procedure ::Child {} {return ::Child}} \ 65 -result "" -output "" 66 67 # Execution 68 test tepam-ns.main2.exe1 "tepam, main namespace - parent procedure execution" \ 69 -body {Parent1} \ 70 -result "::Parent1-::Child" -output "" 71 72 test tepam-ns.main2.exe2 "tepam, main namespace - parent procedure execution" \ 73 -body {::Parent1} \ 74 -result "::Parent1-::Child" -output "" 75 76######## Namespace ::ns1 ######## 77 78 namespace eval ::ns1 {} 79 80 # Only parent declared in this namespace 81 # Procedure declarations 82 test tepam-ns.ns1.dcl.1 "tepam, ns1 namespace - first parent procedure declaration" \ 83 -body {tepam::procedure ::ns1::Parent2 {} {return ::ns1::Parent2-[Child]}} \ 84 -result "" -output "" 85 86 test tepam-ns.ns1.dcl.2 "tepam, ns1 namespace - second parent procedure declaration" \ 87 -body {tepam::procedure ns1::Parent3 {} {return ns1::Parent3-[Child]}} \ 88 -result "" -output "" 89 90 # Execution 91 test tepam-ns.ns1.exe.1 "tepam, ns1 namespace - main parent procedure execution" \ 92 -body {Parent1} \ 93 -result "::Parent1-::Child" -output "" 94 95 test tepam-ns.ns1.exe.2 "tepam, ns1 namespace - first namespace parent procedure execution" \ 96 -body {::ns1::Parent2} \ 97 -result "::ns1::Parent2-::Child" -output "" 98 99 test tepam-ns.ns1.exe.3 "tepam, ns1 namespace - second namespace parent procedure execution" \ 100 -body {::ns1::Parent3} \ 101 -result "ns1::Parent3-::Child" -output "" 102 103 104 # Parent and children declared in this namespace 105 # Procedure declarations 106 test tepam-ns.ns1.dcl.3 "tepam, ns1 namespace - namespace child procedure declaration" \ 107 -body {tepam::procedure ::ns1::Child {} {return ::ns1::Child}} \ 108 -result "" -output "" 109 110 # Execution 111 test tepam-ns.ns1.exe.4 "tepam, ns1 namespace - main parent procedure execution" \ 112 -body {Parent1} \ 113 -result "::Parent1-::Child" -output "" 114 115 test tepam-ns.ns1.exe.5 "tepam, ns1 namespace - first namespace parent procedure execution" \ 116 -body {::ns1::Parent2} \ 117 -result "::ns1::Parent2-::ns1::Child" -output "" 118 119 test tepam-ns.ns1.exe.6 "tepam, ns1 namespace - second namespace parent procedure execution" \ 120 -body {::ns1::Parent3} \ 121 -result "ns1::Parent3-::ns1::Child" -output "" 122 123######## Namespace ::ns2 ######## 124 125 namespace eval ::ns2 { 126 127 # Only parent declared in this namespace 128 # Procedure declarations 129 test tepam-ns.ns2.dcl.1 "tepam, ns2 namespace - parent procedure declaration" \ 130 -body {tepam::procedure Parent4 {} {return ::ns2::Parent4-[Child]}} \ 131 -result "" -output "" 132 133 # Execution 134 test tepam-ns.ns2.exe.1 "tepam, ns2 namespace - main parent procedure execution" \ 135 -body {Parent1} \ 136 -result "::Parent1-::Child" -output "" 137 138 test tepam-ns.ns2.exe.2 "tepam, ns2 namespace - first namespace parent procedure execution" \ 139 -body {::ns2::Parent4} \ 140 -result "::ns2::Parent4-::Child" -output "" 141 142 test tepam-ns.ns2.exe.3 "tepam, ns2 namespace - second namespace parent procedure execution" \ 143 -body {Parent4} \ 144 -result "::ns2::Parent4-::Child" -output "" 145 146 # Parent and children declared in this namespace 147 # Procedure declarations 148 test tepam-ns.ns2.dcl.2 "tepam, ns2 namespace - child procedure declaration" \ 149 -body {tepam::procedure Child {} {return ::ns2::Child}} \ 150 -result "" -output "" 151 152 # Execution 153 test tepam-ns.ns2.exe.4 "tepam, ns2 namespace - main parent procedure execution" \ 154 -body {Parent1} \ 155 -result "::Parent1-::Child" -output "" 156 157 test tepam-ns.ns2.exe.5 "tepam, ns2 namespace - first namespace parent procedure execution" \ 158 -body {::ns2::Parent4} \ 159 -result "::ns2::Parent4-::ns2::Child" -output "" 160 161 test tepam-ns.ns2.exe.6 "tepam, ns2 namespace - second namespace parent procedure execution" \ 162 -body {Parent4} \ 163 -result "::ns2::Parent4-::ns2::Child" -output "" 164 165 }; # End namespace ::ns2 166 167######## That's all ######## 168 169::tcltest::cleanupTests 170return 171 172########################################################################## 173# $RCSfile: proc_namespaces.test,v $ - ($Name: $) 174# $Id: proc_namespaces.test,v 1.1 2010/02/11 21:50:55 droll Exp $ 175# Modifications: 176# $Log: proc_namespaces.test,v $ 177# Revision 1.1 2010/02/11 21:50:55 droll 178# TEPAM module checkin 179# 180########################################################################## 181 182