Bug #1219 » test_ostruct.patch
test_ostruct-new.rb 2009-02-26 22:04:10.000000000 +0100 | ||
---|---|---|
foo.bar.foo = foo
|
||
assert_equal('#<OpenStruct bar=#<OpenStruct foo=#<OpenStruct ...>>>', foo.inspect)
|
||
end
|
||
def test_frozen
|
||
o = OpenStruct::new :a => 42
|
||
o.freeze
|
||
assert_raise TypeError do
|
||
o.b = 1
|
||
end
|
||
assert_raise TypeError do
|
||
o.a = 1764
|
||
end
|
||
assert_equal 42, o.a
|
||
assert_equal nil, o.b
|
||
end
|
||
def test_really_frozen
|
||
o1 = OpenStruct::new :a => 42
|
||
o2 = o1.dup
|
||
class << o1; def frozen?; nil end end
|
||
o1.freeze
|
||
o2.b = 42
|
||
assert_equal 42, o2.b
|
||
assert_raise TypeError do
|
||
o1.b = 1
|
||
end
|
||
assert_raise TypeError do
|
||
o1.a = 1806
|
||
end
|
||
assert_equal 42, o1.a
|
||
OpenStruct.module_eval do def frozen?; nil end end
|
||
o2.freeze
|
||
assert_raise TypeError do
|
||
o2.b = 1
|
||
end
|
||
assert_equal 42, o2.b
|
||
end
|
||
end
|
- « Previous
- 1
- 2
- Next »