13
13
assert_equal(:m, obj.m, "[ruby-dev:33116]")
16
# became pending by [ruby-dev:36950].
17
# def test_systemcallerror_eq
18
# e = SystemCallError.new(0)
19
# assert((SimpleDelegator.new(e) == e) == (e == SimpleDelegator.new(e)), "[ruby-dev:34808]")
16
def test_systemcallerror_eq
17
e = SystemCallError.new(0)
18
assert((SimpleDelegator.new(e) == e) == (e == SimpleDelegator.new(e)), "[ruby-dev:34808]")
22
21
class Myclass < DelegateClass(Array);end
24
23
def test_delegateclass_class
25
24
myclass=Myclass.new([])
26
25
assert_equal(Myclass,myclass.class)
26
assert_equal(Myclass,myclass.dup.class,'[ruby-dev:40313]')
27
assert_equal(Myclass,myclass.clone.class,'[ruby-dev:40313]')
29
30
def test_simpledelegator_class
30
31
simple=SimpleDelegator.new([])
31
32
assert_equal(SimpleDelegator,simple.class)
33
assert_equal(SimpleDelegator,simple.dup.class)
34
assert_equal(SimpleDelegator,simple.clone.class)
40
56
class Bar < DelegateClass(Foo)
44
::Object.class_eval{ def m; :o end }
61
foo2 = SimpleDelegator.new(foo)
45
63
assert_equal(:o, Object.new.m)
46
assert_equal(:m, Foo.new.m)
47
assert_equal(:m, SimpleDelegator.new(Foo.new).m)
48
assert_equal(:m, Bar.new(Foo.new).m)
50
::Object.class_eval{ remove_method :m }
64
assert_equal(:m, foo.m)
65
assert_equal(:m, foo2.m)
66
assert_equal(:m, bar.m)
67
bug = '[ruby-dev:39154]'
68
assert_equal(:m, foo2.send(:delegate_test_m), bug)
69
assert_equal(:m, bar.send(:delegate_test_m), bug)
72
class IV < DelegateClass(Integer)
82
bug1744 = '[ruby-core:24211]'
84
assert_equal(1, c.var)
85
d = Marshal.load(Marshal.dump(c))
86
assert_equal(1, d.var, bug1744)
90
bug2679 = '[ruby-dev:40242]'
91
a = [42, :hello].freeze
92
d = SimpleDelegator.new(a)
93
assert_nothing_raised(bug2679) {d.dup[0] += 1}
94
assert_raise(RuntimeError) {d.clone[0] += 1}
96
assert(d.clone.frozen?)
97
assert(!d.dup.frozen?)
101
d = SimpleDelegator.new([1, :foo])
103
assert_raise(RuntimeError, '[ruby-dev:40314]#1') {d.__setobj__("foo")}
104
assert_equal([1, :foo], d)
107
def test_instance_method
108
s = SimpleDelegator.new("foo")
109
m = s.method("upcase")
110
s.__setobj__([1,2,3])
111
assert_raise(NoMethodError, '[ruby-dev:40314]#3') {m.call}
116
def delegate_test_private
121
def test_private_method
123
d = SimpleDelegator.new(foo)
124
assert_raise(NoMethodError) {foo.delegate_test_private}
125
assert_equal(:m, foo.send(:delegate_test_private))
126
assert_raise(NoMethodError, '[ruby-dev:40314]#4') {d.delegate_test_private}
127
assert_raise(NoMethodError, '[ruby-dev:40314]#5') {d.send(:delegate_test_private)}