aboutsummaryrefslogtreecommitdiffstats
path: root/test/-ext-/symbol/test_inadvertent_creation.rb
blob: 987cab56efdf1d75784833da200cdaaf764fe954 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require 'test/unit'
require "-test-/symbol/symbol"

module Test_Symbol
  class TestInadvertent < Test::Unit::TestCase
    def self.noninterned_name
      th = Thread.current.object_id.to_s(36)
      begin
        name = "#{th}.#{rand(0x1000).to_s(16)}.#{Time.now.usec}"
      end while Bug::Symbol.interned?(name)
      name
    end

    def setup
      @obj = Object.new
    end

    Feature5112 = '[ruby-core:38576]'

    def test_public_send
      name = self.class.noninterned_name
      e = assert_raise(NoMethodError) {@obj.public_send(name, Feature5112)}
      assert_not_send([Bug::Symbol, :interned?, name])
      assert_equal(name, e.name)
      assert_equal([Feature5112], e.args)
    end

    def test_send
      name = self.class.noninterned_name
      e = assert_raise(NoMethodError) {@obj.send(name, Feature5112)}
      assert_not_send([Bug::Symbol, :interned?, name])
      assert_equal(name, e.name)
      assert_equal([Feature5112], e.args)
    end

    def test___send__
      name = self.class.noninterned_name
      e = assert_raise(NoMethodError) {@obj.__send__(name, Feature5112)}
      assert_not_send([Bug::Symbol, :interned?, name])
      assert_equal(name, e.name)
      assert_equal([Feature5112], e.args)
    end
  end
end