Index: tests/parameters.tcl =================================================================== diff -u -r033c63d771af5253b0e94c2a9c1c6a94df40242e -r3cb6a6a8f1e33e63abeec25b3c36231702af6fe2 --- tests/parameters.tcl (.../parameters.tcl) (revision 033c63d771af5253b0e94c2a9c1c6a94df40242e) +++ tests/parameters.tcl (.../parameters.tcl) (revision 3cb6a6a8f1e33e63abeec25b3c36231702af6fe2) @@ -901,23 +901,40 @@ ? {o foo 3} 4 } + ####################################################### +# allow empty values +####################################################### +Test case allow-empty { + + Object create o1 + Object create o2 + Object create o3 + + Object create o { + :method foo {x:integer,allowempty y:integer os:object,multivalued,allowempty} { + return $x + } + } + + ? {o foo 1 2 {o1 o2}} 1 "all values specified" + ? {o foo "" 2 {o1 o2}} "" "first is empty" + ? {o foo 1 "" {o1 o2}} {expected integer but got "" for parameter y} "second is empty" + ? {o foo 1 2 {}} 1 "empty list, does not require allowempty" + ? {o foo 1 2 {o1 "" o2}} 1 "list contains empty value" + + ? {o info method parameter foo} "x:integer,allowempty y:integer os:object,multivalued,allowempty" + + o method foo {x:integer,allowempty y:integer os:object,multivalued} {return $x} + ? {o foo 1 2 {o1 "" o2}} {invalid value in "o1 "" o2": expected object but got "" for parameter os} \ + "list contains empty value" + +} +####################################################### # slot specific converter ####################################################### Test case slot-specfic-converter { - # Class create Person - # Person slots { - # ::nx::Attribute create sex -type "sex" { - # :method type=sex {name value} { - # #puts stderr "[current] slot specific converter" - # switch -glob $value { - # m* {return m} - # f* {return f} - # default {error "expected sex but got $value"} - # } - # } - # } - # } + Class create Person { :attribute sex { :type "sex" @@ -931,6 +948,7 @@ } } } + Person create p1 -sex male ? {p1 sex} m Person method foo {s:sex,slot=::Person::slot::sex} {return $s}