Index: tests/cget.test =================================================================== diff -u -ra774481bc677369c7b0f7d1fcf3275ee1afd4fba -r515bb4c0ed4a2dad74c4a29c940b57a3e911845d --- tests/cget.test (.../cget.test) (revision a774481bc677369c7b0f7d1fcf3275ee1afd4fba) +++ tests/cget.test (.../cget.test) (revision 515bb4c0ed4a2dad74c4a29c940b57a3e911845d) @@ -297,4 +297,60 @@ ? {o cget -B} 1000 ? {o configure -B 1001} "" ? {o cget -B} 1002 +} + + + +nx::Test case configure-trace-class-type { + + # + # class case with type and no default + # + nx::Class create C + C property p:integer { + set :valuechangedcmd { + #puts stderr "C.p valuechangedcmd $obj $var +1" + ::nsf::var::set $obj $var [expr [list [::nsf::var::set $obj $var] + 1]] + } + } + + C create c1 + + ? {c1 eval {info exists :p}} 0 + ? {c1 cget -p} {can't read "p": no such variable} + ? {c1 configure -p a} {expected integer but got "a" for parameter "-p"} + ? {c1 eval {info exists :p}} 0 + ? {c1 configure -p 1} "" + ? {c1 eval {info exists :p}} 1 + ? {c1 cget -p} "2" + + # + # class case with type and default + # + puts stderr ====1 + C property {q:integer aaa} { + set :valuechangedcmd { + #puts stderr "C.q valuechangedcmd $obj $var +1" + ::nsf::var::set $obj $var [expr [list [::nsf::var::set $obj $var] + 1]] + } + } + # TODO: it would be nicer, if + # (a) the error message would contain the lower-level message + # (b) the error would be generated earlier (not on object creation) + # (c) the error should not be generated when an actual value is provided + ? {C create c2} "objectparameter: ::C::slot::q getParameterSpec returned error" + ? {C create c2 -q 111} "objectparameter: ::C::slot::q getParameterSpec returned error" + + ? {C property {q:integer 100} { + set :valuechangedcmd { + #puts stderr "C.q valuechangedcmd $obj $var +1" + ::nsf::var::set $obj $var [expr [list [::nsf::var::set $obj $var] + 1]] + } + }} "" + C create c2 + + ? {c2 eval {info exists :q}} 1 + ? {c2 cget -q} 100 + ? {c2 configure -q 101} "" + ? {c2 cget -q} "102" } \ No newline at end of file