Index: tests/serialize.test =================================================================== diff -u -r4bc60e16c10fdbbb640b3019d4bdebdc469fdf55 -rf31c1a01c6a389f693b8db0f2204cbb46180fef1 --- tests/serialize.test (.../serialize.test) (revision 4bc60e16c10fdbbb640b3019d4bdebdc469fdf55) +++ tests/serialize.test (.../serialize.test) (revision f31c1a01c6a389f693b8db0f2204cbb46180fef1) @@ -1,21 +1,71 @@ # -*- Tcl -*- package req nx::test -package req nx::serializer +package req nx::serializer +nx::test case serialize-target { + # + # Create object structure with a forwarder and a slot + # + Object create ::xxx { + :object property -accessor public ref + Object create [self]::b { + [:info parent] ref set [Object create [self]::c] + } + } + # + # check forwarder target and domain+manager of slot. + # + ? {nsf::method::forward::property :::xxx -per-object ref target} "::xxx::per-object-slot::ref" + ? {nsf::var::get ::xxx::per-object-slot::ref manager} "::xxx::per-object-slot::ref" + ? {nsf::var::get ::xxx::per-object-slot::ref domain} "::xxx" + + #puts [xxx serialize -target XXX] + # + # Create an serialized object, which has the target mapped to + # XXX. The target name has intentionally no leading colons, such + # that the object can be instantiated in a different namespace. This + # is for example useful when importing objects in OpenACS from a + # different system, where one has to assure that the imported + # objects do not clash with the already existing objects, but it has + # as well certain dangers. + # + set code [xxx serialize -target XXX] + + # + # Create the object with the new target + # + set result [eval $code] + + ? [list set _ $result] ::XXX::per-object-slot::ref + + # + # The target object of the forwarder + the slot manager and domain are mapped as well. + # Otherwise, we would trigger warnings during destroy + # + + ? {nsf::method::forward::property ::XXX -per-object ref target} "XXX::per-object-slot::ref" + ? {nsf::var::get ::XXX::per-object-slot::ref manager} "XXX::per-object-slot::ref" + ? {nsf::var::get ::XXX::per-object-slot::ref domain} "XXX" + +} + + + + nx::test case deepSerialize-map-filter { Object create ::a { :object property -accessor public ref:object,type=[:info class] Object create [self]::b { - [:info parent] ref [Object create [self]::c] + [:info parent] ref set [Object create [self]::c] } } ? {::nsf::object::exists ::a} 1 ? {::nsf::object::exists ::a::b} 1 ? {::nsf::object::exists ::a::b::c} 1 - ? {::a ref} [[::a::b] info children] + ? {::a ref get} [[::a::b] info children] set script [::Serializer deepSerialize -map {::a::b ::x::y ::a ::x} ::a] # fix collateral damage (TODO: fixme, preprecate me, ...) @@ -28,15 +78,15 @@ ? {::nsf::object::exists ::a::b::c} 0 eval $script - + ? {::nsf::object::exists ::a} 0 ? {::nsf::object::exists ::a::b} 0 ? {::nsf::object::exists ::a::b::c} 0 ? {::nsf::object::exists ::x} 1 ? {::nsf::object::exists ::x::y} 1 ? {::nsf::object::exists ::x::y::c} 1 - ? {::x ref} [::x::y info children] + ? {::x ref get} [::x::y info children] Object create ::a ::x::y::c eval { @@ -45,15 +95,15 @@ set script [::a eval { ::Serializer deepSerialize -map [list ::x::y [self] ::x [self]] ::x::y::c }] - + ? {::x::y::c eval {set :parentRef}} ::x ? {::nsf::object::exists ::a::c} 0 eval $script ? {::nsf::object::exists ::a::c} 1 ? {::a::c eval {set :parentRef}} ::a } -nx::test case deepSerialize-ignoreVarsRE-filter { +nx::test case deepSerialize-ignoreVarsRE-filter { nx::Class create C { :object property -accessor public x :object property -accessor public y @@ -62,28 +112,26 @@ :create c1 } - ? {C x 1} 1 - ? {C x} 1 - ? {C y 1} 1 - ? {C y} 1 - + ? {C x set 1} 1 + ? {C x get} 1 + ? {C y set 1} 1 + ? {C y get} 1 + ? {lsort [C info methods]} "a b" ? {lsort [C info object methods]} "x y" - ? {c1 a b} {expected integer but got "b" for parameter "a"} - ? {c1 a 1} 1 - ? {c1 b 1} 1 + ? {c1 a set b} {expected integer but got "b" for parameter "value"} + ? {c1 a set 1} 1 + ? {c1 b set 1} 1 set c1(IgnoreNone1) [list [::Serializer deepSerialize c1] "a b"] set c1(IgnoreNone2) [list [::Serializer deepSerialize -ignoreVarsRE "" c1] "a b"] - set c1(One) [list [::Serializer deepSerialize -ignoreVarsRE "a" c1] "b"] - set c1(One2) [list [::Serializer deepSerialize -ignoreVarsRE {::a$} c1] "b"] - set c1(IgnoreAll) [list [::Serializer deepSerialize -ignoreVarsRE "." c1] ""] - set names {}; foreach s [C info slots] {lappend names [$s name]} - set c1(None2) [list [::Serializer deepSerialize -ignoreVarsRE \ - [join $names |] c1] ""] - - c1 destroy + set c1(One) [list [::Serializer deepSerialize -ignoreVarsRE "a" c1] "b"] + set c1(One2) [list [::Serializer deepSerialize -ignoreVarsRE {::a$} c1] "b"] + set c1(IgnoreAll) [list [::Serializer deepSerialize -ignoreVarsRE "." c1] ""] + set names {}; foreach s [C info slots] {lappend names [$s cget -name]} + set c1(None2) [list [::Serializer deepSerialize -ignoreVarsRE [join $names |] c1] ""] + c1 destroy foreach t [array names c1] { ? {nsf::object::exists c1} 0 lassign $c1($t) script res @@ -93,17 +141,17 @@ c1 destroy } - + set C(IgnoreNone1) [list [::Serializer deepSerialize C] "x y"] set C(IgnoreNone2) [list [::Serializer deepSerialize -ignoreVarsRE "" C] "x y"] #set C(One) [list [::Serializer deepSerialize -ignoreVarsRE "x" C] "y"] set C(One2) [list [::Serializer deepSerialize -ignoreVarsRE {::x$} C] "y"] #set C(IgnoreAll) [list [::Serializer deepSerialize -ignoreVarsRE "." C] ""] - set names {}; foreach s [C info object slots] {lappend names [$s name]} + set names {}; foreach s [C info object slots] {lappend names [$s cget -name]} #set C(None2) [list [::Serializer deepSerialize -ignoreVarsRE [join $names |] C] ""] - + C destroy - + foreach t [array names C] { ? {nsf::object::exists C} 0 lassign $C($t) script res @@ -117,9 +165,9 @@ } } -nx::test case deepSerialize-ignore-filter { +nx::test case deepSerialize-ignore-filter { Object create ::a { - Object create [self]::b + Object create [self]::b Object create [self]::c } @@ -138,7 +186,7 @@ ? {::nsf::object::exists ::a} 1 ? {::nsf::object::exists ::a::b} 0 ? {::nsf::object::exists ::a::c} 1 - + set script [::Serializer deepSerialize -ignore ::a ::a] ::a destroy @@ -148,7 +196,7 @@ } nx::test case serialize-slotContainer { - + nx::Class create C { :object property x :property a @@ -181,7 +229,7 @@ # perobjectdispatch for nx::Objects are handled correctly via serialize # nx::test case serialize-object-properties { - + # # Check on object o #