1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
# tool.test - Copyright (c) 2015 Sean Woods
# -------------------------------------------------------------------------
source [file join \
[file dirname [file dirname [file join [pwd] [info script]]]] \
devtools testutilities.tcl]
testsNeedTcl 8.6
testsNeedTcltest 2
testsNeed TclOO 1
support {
use dicttool/dicttool.tcl dicttool
use oometa/oometa.tcl oo::meta
}
testing {
useLocal oodialect.tcl oo::dialect
}
# -------------------------------------------------------------------------
::oo::dialect::create ::alpha
proc ::alpha::define::is_alpha {} {
dict set ::testinfo([current_class]) is_alpha 1
}
::alpha::define ::alpha::object {
is_alpha
}
::oo::dialect::create ::bravo ::alpha
proc ::bravo::define::is_bravo {} {
dict set ::testinfo([current_class]) is_bravo 1
}
::bravo::define ::bravo::object {
is_bravo
}
::oo::dialect::create ::charlie ::bravo
proc ::charlie::define::is_charlie {} {
dict set ::testinfo([current_class]) is_charlie 1
}
::charlie::define ::charlie::object {
is_charlie
}
::oo::dialect::create ::delta ::charlie
proc ::delta::define::is_delta {} {
dict set ::testinfo([current_class]) is_delta 1
}
::delta::define ::delta::object {
is_delta
}
::delta::class create adam {
is_alpha
is_bravo
is_charlie
is_delta
}
test oodialect-keyword-001 {Testing keyword application} {
set ::testinfo(::adam)
} {is_alpha 1 is_bravo 1 is_charlie 1 is_delta 1}
test oodialect-keyword-002 {Testing keyword application} {
set ::testinfo(::alpha::object)
} {is_alpha 1}
test oodialect-keyword-003 {Testing keyword application} {
set ::testinfo(::bravo::object)
} {is_bravo 1}
test oodialect-keyword-004 {Testing keyword application} {
set ::testinfo(::charlie::object)
} {is_charlie 1}
test oodialect-keyword-005 {Testing keyword application} {
set ::testinfo(::delta::object)
} {is_delta 1}
###
# Declare an object from a namespace
###
namespace eval ::test1 {
::alpha::class create a {
aliases A
is_alpha
}
::alpha::define b {
aliases B BEE
is_alpha
}
::alpha::class create ::c {
aliases C
is_alpha
}
::alpha::define ::d {
aliases D
is_alpha
}
}
test oodialect-naming-001 {Testing keyword application} {
set ::testinfo(::test1::a)
} {is_alpha 1}
test oodialect-naming-002 {Testing keyword application} {
set ::testinfo(::test1::b)
} {is_alpha 1}
test oodialect-naming-003 {Testing keyword application} {
set ::testinfo(::c)
} {is_alpha 1}
test oodialect-naming-004 {Testing keyword application} {
set ::testinfo(::d)
} {is_alpha 1}
test oodialect-aliasing-001 {Testing keyword application} {
namespace eval ::test1 {
::alpha::define e {
superclass A
}
}
} ::test1::e
test oodialect-aliasing-002 {Testing keyword application} {
namespace eval ::test1 {
::bravo::define f {
superclass A
}
}
} ::test1::f
test oodialect-aliasing-003 {Testing aliase method on class} {
::test1::a aliases
} {::test1::A}
test oodialect-ancestry-003 {Testing heritage} {
::oo::meta::ancestors ::test1::f
} {::oo::object ::alpha::object ::bravo::object ::test1::a ::test1::f}
test oodialect-ancestry-004 {Testing heritage} {
::oo::meta::ancestors ::alpha::object
} {::oo::object ::alpha::object}
test oodialect-ancestry-005 {Testing heritage} {
::oo::meta::ancestors ::delta::object
} {::oo::object ::alpha::object ::bravo::object ::charlie::object ::delta::object}
# -------------------------------------------------------------------------
testsuiteCleanup
# Local variables:
# mode: tcl
# indent-tabs-mode: nil
# End:
|