summaryrefslogtreecommitdiffstats
path: root/tests/ooProp.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ooProp.test')
-rw-r--r--tests/ooProp.test885
1 files changed, 0 insertions, 885 deletions
diff --git a/tests/ooProp.test b/tests/ooProp.test
deleted file mode 100644
index fa3b1e7..0000000
--- a/tests/ooProp.test
+++ /dev/null
@@ -1,885 +0,0 @@
-# This file contains a collection of tests for Tcl's built-in object system,
-# specifically the parts that support configurable properties on objects.
-# Sourcing this file into Tcl runs the tests and generates output for errors.
-# No output means no errors were found.
-#
-# Copyright © 2019-2020 Donal K. Fellows
-#
-# See the file "license.terms" for information on usage and redistribution of
-# this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-package require tcl::oo 1.0.3
-package require tcltest 2
-if {"::tcltest" in [namespace children]} {
- namespace import -force ::tcltest::*
-}
-
-test ooProp-1.1 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::readableproperties -set a b c
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::readableproperties -set f e d
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::readableproperties -set a a a
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::readableproperties -set
- lappend result [info class properties c] [info class properties c -writable]
-} -cleanup {
- parent destroy
-} -result {{} {} {a b c} {} {d e f} {} a {} {} {}}
-test ooProp-1.2 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set a b c
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set f e d
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set a a a
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set
- lappend result [info class properties c -all] [info class properties c -writable -all]
-} -cleanup {
- parent destroy
-} -result {{} {} {a b c} {} {d e f} {} a {} {} {}}
-test ooProp-1.3 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::writableproperties -set a b c
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::writableproperties -set f e d
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::writableproperties -set a a a
- lappend result [info class properties c] [info class properties c -writable]
- oo::define c ::oo::configuresupport::writableproperties -set
- lappend result [info class properties c] [info class properties c -writable]
-} -cleanup {
- parent destroy
-} -result {{} {} {} {a b c} {} {d e f} {} a {} {}}
-test ooProp-1.4 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set a b c
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set f e d
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set a a a
- lappend result [info class properties c -all] [info class properties c -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set
- lappend result [info class properties c -all] [info class properties c -writable -all]
-} -cleanup {
- parent destroy
-} -result {{} {} {} {a b c} {} {d e f} {} a {} {}}
-test ooProp-1.5 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- oo::class create d {superclass c}
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set a b c
- oo::define d ::oo::configuresupport::readableproperties -set x y z
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set f e d
- oo::define d ::oo::configuresupport::readableproperties -set r p q
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set a a h
- oo::define d ::oo::configuresupport::readableproperties -set g h g
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define d ::oo::configuresupport::readableproperties -set
- lappend result [info class properties d -all] [info class properties d -writable -all]
-} -cleanup {
- parent destroy
-} -result {{} {} {a b c x y z} {} {d e f p q r} {} {a g h} {} {g h} {} {} {}}
-test ooProp-1.6 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- oo::class create d {superclass c}
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set a b c
- oo::define d ::oo::configuresupport::writableproperties -set x y z
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set f e d
- oo::define d ::oo::configuresupport::writableproperties -set r p q
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set a a h
- oo::define d ::oo::configuresupport::writableproperties -set g h g
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set
- lappend result [info class properties d -all] [info class properties d -writable -all]
- oo::define d ::oo::configuresupport::writableproperties -set
- lappend result [info class properties d -all] [info class properties d -writable -all]
-} -cleanup {
- parent destroy
-} -result {{} {} {} {a b c x y z} {} {d e f p q r} {} {a g h} {} {g h} {} {}}
-test ooProp-1.7 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- c create o
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objreadableproperties -set a b c
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objreadableproperties -set f e d
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objreadableproperties -set a a h
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objreadableproperties -set
- lappend result [info object properties o] [info object properties o -writable]
-} -cleanup {
- parent destroy
-} -result {{} {} {a b c} {} {d e f} {} {a h} {} {} {}}
-test ooProp-1.8 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- c create o
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objwritableproperties -set a b c
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objwritableproperties -set f e d
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objwritableproperties -set a a h
- lappend result [info object properties o] [info object properties o -writable]
- oo::objdefine o ::oo::configuresupport::objwritableproperties -set
- lappend result [info object properties o] [info object properties o -writable]
-} -cleanup {
- parent destroy
-} -result {{} {} {} {a b c} {} {d e f} {} {a h} {} {}}
-test ooProp-1.9 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- oo::class create d {superclass c}
- d create o
- lappend result [info object properties o -all] [info object properties o -writable -all]
- oo::define c ::oo::configuresupport::readableproperties -set a b
- oo::define d ::oo::configuresupport::readableproperties -set c d
- oo::objdefine o ::oo::configuresupport::objreadableproperties -set e f
- lappend result [info object properties o -all] [info object properties o -writable -all]
- oo::objdefine o ::oo::configuresupport::objreadableproperties -set f e d b e
- lappend result [info object properties o -all] [info object properties o -writable -all]
-} -cleanup {
- parent destroy
-} -result {{} {} {a b c d e f} {} {a b c d e f} {}}
-test ooProp-1.10 {TIP 558: properties: core support} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::class create c {superclass parent}
- oo::class create d {superclass c}
- d create o
- lappend result [info object properties o -all] [info object properties o -writable -all]
- oo::define c ::oo::configuresupport::writableproperties -set a b
- oo::define d ::oo::configuresupport::writableproperties -set c d
- oo::objdefine o ::oo::configuresupport::objwritableproperties -set e f
- lappend result [info object properties o -all] [info object properties o -writable -all]
- oo::objdefine o ::oo::configuresupport::objwritableproperties -set f e d b e
- lappend result [info object properties o -all] [info object properties o -writable -all]
-} -cleanup {
- parent destroy
-} -result {{} {} {} {a b c d e f} {} {a b c d e f}}
-test ooProp-1.11 {TIP 558: properties: core support cache} -setup {
- oo::class create parent
- unset -nocomplain result
-} -body {
- oo::class create m {
- superclass parent
- ::oo::configuresupport::readableproperties -set a
- ::oo::configuresupport::writableproperties -set c
- }
- oo::class create c {
- superclass parent
- ::oo::configuresupport::readableproperties -set b
- ::oo::configuresupport::writableproperties -set d
- }
- c create o
- lappend result [info object properties o -all -readable] \
- [info object properties o -all -writable]
- oo::objdefine o mixin m
- lappend result [info object properties o -all -readable] \
- [info object properties o -all -writable]
-} -cleanup {
- parent destroy
-} -result {b d {a b} {c d}}
-
-test ooProp-2.1 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- variable x y
- method report {} {
- lappend ::result "x=$x, y=$y"
- }
- }
- set pt [Point new -x 3]
- $pt report
- $pt configure -y 4
- $pt report
- lappend result [$pt configure -x],[$pt configure -y] [$pt configure]
-} -cleanup {
- parent destroy
-} -result {{x=3, y=0} {x=3, y=4} 3,4 {-x 3 -y 4}}
-test ooProp-2.2 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- }
- oo::configurable create 3DPoint {
- superclass Point
- property z
- constructor args {
- next -z 0 {*}$args
- }
- }
- set pt [3DPoint new -x 3 -y 4 -z 5]
- list [$pt configure -x],[$pt configure -y],[$pt configure -z] \
- [$pt configure]
-} -cleanup {
- parent destroy
-} -result {3,4,5 {-x 3 -y 4 -z 5}}
-test ooProp-2.3 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- }
- set pt [Point new -x 3 -y 4]
- oo::objdefine $pt property z
- $pt configure -z 5
- list [$pt configure -x],[$pt configure -y],[$pt configure -z] \
- [$pt configure]
-} -cleanup {
- parent destroy
-} -result {3,4,5 {-x 3 -y 4 -z 5}}
-test ooProp-2.4 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- }
- [Point new] configure gorp
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property "gorp": must be -x or -y}
-test ooProp-2.5 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- }
- oo::configurable create 3DPoint {
- superclass Point
- property z
- constructor args {
- next -z 0 {*}$args
- }
- }
- [3DPoint new] configure gorp
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property "gorp": must be -x, -y, or -z}
-test ooProp-2.6 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- }
- [Point create p] configure -x 1 -y
-} -returnCodes error -cleanup {
- parent destroy
-} -result {wrong # args: should be "::p configure ?-option value ...?"}
-test ooProp-2.7 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
- unset -nocomplain msg
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y -kind writable
- constructor args {
- my configure -x 0 -y 0 {*}$args
- }
- }
- Point create p
- list [p configure -y ok] [catch {p configure -y} msg] $msg
-} -cleanup {
- parent destroy
-} -result {{} 1 {property "-y" is write only}}
-test ooProp-2.8 {TIP 558: properties: configurable class system} -setup {
- oo::class create parent
- unset -nocomplain msg
-} -body {
- oo::configurable create Point {
- superclass parent
- property x y -kind readable
- constructor args {
- my configure -x 0 {*}$args
- variable y 123
- }
- }
- Point create p
- list [p configure] [p configure -y] [catch {p configure -y foo} msg] $msg
-} -cleanup {
- parent destroy
-} -result {{-x 0 -y 123} 123 1 {property "-y" is read only}}
-
-test ooProp-3.1 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- variable xyz
- property x -get {
- global result
- lappend result "get"
- return [lrepeat 3 $xyz]
- } -set {
- global result
- lappend result [list set $value]
- set xyz [expr {$value * 3}]
- }
- }
- Point create pt
- pt configure -x 5
- lappend result >[pt configure -x]<
-} -cleanup {
- parent destroy
-} -result {{set 5} get {>15 15 15<}}
-test ooProp-3.2 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
- unset -nocomplain result
- set result {}
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- variable xyz
- property x -get {
- global result
- lappend result "get"
- return [lrepeat 3 $xyz]
- } -set {
- global result
- lappend result [list set $value]
- set xyz [expr {$value * 3}]
- } y -kind readable -get {return $xyz}
- }
- Point create pt
- pt configure -x 5
- lappend result >[pt configure -x]< [pt configure -y]
-} -cleanup {
- parent destroy
-} -result {{set 5} get {>15 15 15<} 15}
-test ooProp-3.3 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- variable xyz
- property -x -get {return $xyz}
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property name "-x": must not begin with -}
-test ooProp-3.4 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property "x y"
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property name "x y": must be a simple word}
-test ooProp-3.5 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property ::x
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property name "::x": must not contain namespace separators}
-test ooProp-3.6 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property x(
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property name "x(": must not contain parentheses}
-test ooProp-3.7 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property x)
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad property name "x)": must not contain parentheses}
-test ooProp-3.8 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property x -get
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {missing body to go with -get option}
-test ooProp-3.9 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property x -set
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {missing body to go with -set option}
-test ooProp-3.10 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property x -kind
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {missing kind value to go with -kind option}
-test ooProp-3.11 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {superclass parent}
- oo::define Point {
- property x -get {} -set
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {missing body to go with -set option}
-test ooProp-3.12 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {} -get {return ok}
- }
- [Point new] configure -x
-} -cleanup {
- parent destroy
-} -result ok
-test ooProp-3.13 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -kind gorp
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {bad kind "gorp": must be readable, readwrite, or writable}
-test ooProp-3.14 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -k reada -g {return ok}
- }
- [Point new] configure -x
-} -cleanup {
- parent destroy
-} -result ok
-test ooProp-3.15 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property {*}{
- x -kind writable
- y -get {return ok}
- }
- }
- [Point new] configure -y
-} -cleanup {
- parent destroy
-} -result ok
-test ooProp-3.16 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
- unset -nocomplain msg
-} -body {
- oo::configurable create Point {
- superclass parent
- variable xy
- property x -kind readable -get {return $xy}
- property x -kind writable -set {set xy $value}
- }
- Point create pt
- list [catch {
- pt configure -x ok
- } msg] $msg [catch {
- pt configure -x
- } msg] $msg [catch {
- pt configure -y 1
- } msg] $msg
-} -cleanup {
- parent destroy
-} -result {0 {} 1 {property "-x" is write only} 1 {bad property "-y": must be -x}}
-test ooProp-3.17 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {return -code break}
- }
- while 1 {
- [Point new] configure -x
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {property getter for -x did a break}
-test ooProp-3.18 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {return -code break}
- }
- while 1 {
- [Point new] configure
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {property getter for -x did a break}
-test ooProp-3.19 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {error "boo"}
- }
- while 1 {
- [Point new] configure -x
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result boo
-test ooProp-3.20 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {error "boo"}
- }
- while 1 {
- [Point new] configure
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result boo
-test ooProp-3.21 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {return -code continue}
- }
- while 1 {
- [Point new] configure -x
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {property getter for -x did a continue}
-test ooProp-3.22 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {return -level 2 ok}
- }
- apply {{} {
- [Point new] configure
- return bad
- }}
-} -cleanup {
- parent destroy
-} -result ok
-test ooProp-3.23 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -get {return -level 2 ok}
- }
- apply {{} {
- [Point new] configure -x
- return bad
- }}
-} -cleanup {
- parent destroy
-} -result ok
-test ooProp-3.24 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -set {return -code break}
- }
- while 1 {
- [Point new] configure -x gorp
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {property setter for -x did a break}
-test ooProp-3.25 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -set {return -code continue}
- }
- while 1 {
- [Point new] configure -x gorp
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result {property setter for -x did a continue}
-test ooProp-3.26 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -set {error "boo"}
- }
- while 1 {
- [Point new] configure -x gorp
- break
- }
-} -returnCodes error -cleanup {
- parent destroy
-} -result boo
-test ooProp-3.27 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- property x -set {return -level 2 ok}
- }
- apply {{} {
- [Point new] configure -x gorp
- return bad
- }}
-} -cleanup {
- parent destroy
-} -result ok
-test ooProp-3.28 {TIP 558: properties: declaration semantics} -setup {
- oo::class create parent
-} -body {
- oo::configurable create Point {
- superclass parent
- private property var
- }
- Point create pt
- pt configure -var ok
- pt configure -var
-} -cleanup {
- parent destroy
-} -result ok
-
-test ooProp-4.1 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {superclass parent}
- list [catch {oo::define Point {property -x}} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {bad property name "-x": must not begin with -
- while executing
-"property -x"
- (in definition script for class "::Point" line 1)
- invoked from within
-"oo::define Point {property -x}"} {TCL OO PROPERTY_FORMAT}}
-test ooProp-4.2 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {superclass parent}
- list [catch {oo::define Point {property x -get}} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {missing body to go with -get option
- while executing
-"property x -get"
- (in definition script for class "::Point" line 1)
- invoked from within
-"oo::define Point {property x -get}"} {TCL WRONGARGS}}
-test ooProp-4.3 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {superclass parent}
- list [catch {oo::define Point {property x -set}} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {missing body to go with -set option
- while executing
-"property x -set"
- (in definition script for class "::Point" line 1)
- invoked from within
-"oo::define Point {property x -set}"} {TCL WRONGARGS}}
-test ooProp-4.4 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {superclass parent}
- list [catch {oo::define Point {property x -kind}} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {missing kind value to go with -kind option
- while executing
-"property x -kind"
- (in definition script for class "::Point" line 1)
- invoked from within
-"oo::define Point {property x -kind}"} {TCL WRONGARGS}}
-test ooProp-4.5 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {superclass parent}
- list [catch {oo::define Point {property x -kind gorp}} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {bad kind "gorp": must be readable, readwrite, or writable
- while executing
-"property x -kind gorp"
- (in definition script for class "::Point" line 1)
- invoked from within
-"oo::define Point {property x -kind gorp}"} {TCL LOOKUP INDEX kind gorp}}
-test ooProp-4.6 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {superclass parent}
- list [catch {oo::define Point {property x -gorp}} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {bad option "-gorp": must be -get, -kind, or -set
- while executing
-"property x -gorp"
- (in definition script for class "::Point" line 1)
- invoked from within
-"oo::define Point {property x -gorp}"} {TCL LOOKUP INDEX option -gorp}}
-test ooProp-4.7 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {
- superclass parent
- property x
- }
- Point create pt
- list [catch {pt configure -gorp} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {bad property "-gorp": must be -x
- while executing
-"pt configure -gorp"} {TCL LOOKUP INDEX property -gorp}}
-test ooProp-4.8 {TIP 558: properties: error details} -setup {
- oo::class create parent
- unset -nocomplain msg opt
-} -body {
- oo::configurable create Point {
- superclass parent
- property x
- }
- Point create pt
- list [catch {pt configure -gorp blarg} msg opt] \
- [dict get $opt -errorinfo] [dict get $opt -errorcode]
-} -cleanup {
- parent destroy
-} -result {1 {bad property "-gorp": must be -x
- while executing
-"pt configure -gorp blarg"} {TCL LOOKUP INDEX property -gorp}}
-
-cleanupTests
-return
-
-# Local Variables:
-# mode: tcl
-# End: