~ubuntu-branches/ubuntu/quantal/ruby1.9.1/quantal

« back to all changes in this revision

Viewing changes to test/test_delegate.rb

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2010-07-31 17:08:39 UTC
  • mfrom: (1.1.4 upstream) (8.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100731170839-j034dmpdqt1cc4p6
Tags: 1.9.2~svn28788-1
* New release based on upstream snapshot from the 1.9.2 branch,
  after 1.9.2 RC2. That branch is (supposed to be) binary-compatible
  with the 1.9.1 branch.
  + Builds fine on i386. Closes: #580852.
* Upgrade to Standards-Version: 3.9.1. No changes needed.
* Updated generated incs.
* Patches that still need work:
  + Unclear status, need more investigation:
   090729_fix_Makefile_deps.dpatch
   090803_exclude_rdoc.dpatch
   203_adjust_base_of_search_path.dpatch
   902_define_YAML_in_yaml_stringio.rb.dpatch
   919_common.mk_tweaks.dpatch
   931_libruby_suffix.dpatch
   940_test_thread_mutex_sync_shorter.dpatch
  + Maybe not needed anymore, keeping but not applying.
   102_skip_test_copy_stream.dpatch (test doesn't block anymore?)
   104_skip_btest_io.dpatch (test doesn't block anymore?)
   201_gem_prelude.dpatch (we don't use that rubygems anyway?)
   202_gem_default_dir.dpatch (we don't use that rubygems anyway?)
   940_test_file_exhaustive_fails_as_root.dpatch
   940_test_priority_fails.dpatch
   100518_load_libc_libm.dpatch
* Add disable-tests.diff: disable some tests that cause failures on FreeBSD.
  Closes: #590002, #543805, #542927.
* However, many new failures on FreeBSD. Since that version is still an
  improvement, add the check that makes test suite failures non-fatal on
  FreeBSD again. That still needs to be investigated.
* Re-add 903_skip_base_ruby_check.dpatch
* Add build-dependency on ruby1.8 and drop all pre-generated files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
    assert_equal(:m, obj.m, "[ruby-dev:33116]")
14
14
  end
15
15
 
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]")
20
 
  # end
 
16
  def test_systemcallerror_eq
 
17
    e = SystemCallError.new(0)
 
18
    assert((SimpleDelegator.new(e) == e) == (e == SimpleDelegator.new(e)), "[ruby-dev:34808]")
 
19
  end
21
20
 
22
21
  class Myclass < DelegateClass(Array);end
23
22
 
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]')
27
28
  end
28
29
 
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)
 
35
  end
 
36
 
 
37
  class Object
 
38
    def m
 
39
      :o
 
40
    end
 
41
    private
 
42
    def delegate_test_m
 
43
      :o
 
44
    end
32
45
  end
33
46
 
34
47
  class Foo
35
48
    def m
36
49
      :m
37
50
    end
 
51
    def delegate_test_m
 
52
      :m
 
53
    end
38
54
  end
39
55
 
40
56
  class Bar < DelegateClass(Foo)
41
57
  end
42
58
 
43
59
  def test_override
44
 
    ::Object.class_eval{ def m; :o end }
 
60
    foo = Foo.new
 
61
    foo2 = SimpleDelegator.new(foo)
 
62
    bar = Bar.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)
49
 
  ensure
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)
 
70
  end
 
71
 
 
72
  class IV < DelegateClass(Integer)
 
73
    attr_accessor :var
 
74
 
 
75
    def initialize
 
76
      @var = 1
 
77
      super(0)
 
78
    end
 
79
  end
 
80
 
 
81
  def test_marshal
 
82
    bug1744 = '[ruby-core:24211]'
 
83
    c = IV.new
 
84
    assert_equal(1, c.var)
 
85
    d = Marshal.load(Marshal.dump(c))
 
86
    assert_equal(1, d.var, bug1744)
 
87
  end
 
88
 
 
89
  def test_copy_frozen
 
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}
 
95
    d.freeze
 
96
    assert(d.clone.frozen?)
 
97
    assert(!d.dup.frozen?)
 
98
  end
 
99
 
 
100
  def test_frozen
 
101
    d = SimpleDelegator.new([1, :foo])
 
102
    d.freeze
 
103
    assert_raise(RuntimeError, '[ruby-dev:40314]#1') {d.__setobj__("foo")}
 
104
    assert_equal([1, :foo], d)
 
105
  end
 
106
 
 
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}
 
112
  end
 
113
 
 
114
  class Foo
 
115
    private
 
116
    def delegate_test_private
 
117
      :m
 
118
    end
 
119
  end
 
120
 
 
121
  def test_private_method
 
122
    foo = Foo.new
 
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)}
51
128
  end
52
129
end