3 class TestRubyLiteral < Test::Unit::TestCase
6 assert_equal 'true', true.inspect
7 assert_instance_of TrueClass, true
8 assert_equal 'false', false.inspect
9 assert_instance_of FalseClass, false
10 assert_equal 'nil', nil.inspect
11 assert_instance_of NilClass, nil
12 assert_equal ':sym', :sym.inspect
13 assert_instance_of Symbol, :sym
14 assert_equal '1234', 1234.inspect
15 assert_instance_of Fixnum, 1234
16 assert_equal '1234', 1_2_3_4.inspect
17 assert_instance_of Fixnum, 1_2_3_4
18 assert_equal '18', 0x12.inspect
19 assert_instance_of Fixnum, 0x12
20 assert_raise(SyntaxError) { eval("0x") }
21 assert_equal '15', 0o17.inspect
22 assert_instance_of Fixnum, 0o17
23 assert_raise(SyntaxError) { eval("0o") }
24 assert_equal '5', 0b101.inspect
25 assert_instance_of Fixnum, 0b101
26 assert_raise(SyntaxError) { eval("0b") }
27 assert_equal '123456789012345678901234567890', 123456789012345678901234567890.inspect
28 assert_instance_of Bignum, 123456789012345678901234567890
29 assert_instance_of Float, 1.3
33 assert_equal self, self
34 assert_instance_of TestRubyLiteral, self
35 assert_respond_to self, :test_self
39 assert_instance_of String, ?a
41 assert_instance_of String, ?A
43 assert_instance_of String, ?\n
44 assert_equal "\n", ?\n
45 assert_equal " ", ?\ # space
47 assert_equal 'string', 'string'
48 assert_equal 'string string', 'string string'
51 assert_equal "\0", "\0"
52 assert_equal "\1", "\1"
53 assert_equal "3", "\x33"
54 assert_equal "\n", "\n"
58 assert_equal '2', "#{1+1}"
59 assert_equal '16', "#{2 ** 4}"
61 assert_equal s, "#{s}"
65 assert_equal :a3c, :"a#{1+2}c"
69 assert_equal "foo\n", `echo foo`
71 assert_equal "foo\n", `echo #{s}`
75 assert_instance_of Regexp, //
78 assert_instance_of Regexp, /a/
80 assert_no_match /test/, 'tes'
82 assert_match re, 'test'
85 assert_match /test/, str
86 assert_equal 0, (/test/ =~ 'test')
87 assert_equal 0, (re =~ 'test')
88 assert_equal 0, (/test/ =~ str)
89 assert_equal 0, (re =~ str)
90 assert_equal 0, ('test' =~ /test/)
91 assert_equal 0, ('test' =~ re)
92 assert_equal 0, (str =~ /test/)
93 assert_equal 0, (str =~ re)
97 assert_instance_of Regexp, /re#{'ge'}xp/
98 assert_equal(/regexp/, /re#{'ge'}xp/)
102 assert_instance_of Array, []
104 assert_equal 0, [].size
105 assert_instance_of Array, [0]
106 assert_equal [3], [3]
107 assert_equal 1, [3].size
110 assert_instance_of Array, [1,2]
111 assert_equal [1,2], [1,2]
112 assert_instance_of Array, [1,2,3,4,5]
113 assert_equal [1,2,3,4,5], [1,2,3,4,5]
114 assert_equal 5, [1,2,3,4,5].size
118 a = [1 + 2, 3 + 4, 5 + 6]
119 assert_instance_of Array, a
120 assert_equal [3, 7, 11], a
122 assert_equal 1, ([0][0] += 1)
123 assert_equal 1, ([2][0] -= 1)
124 a = [obj = Object.new]
125 assert_instance_of Array, a
126 assert_equal 1, a.size
127 assert_equal obj, a[0]
134 assert_instance_of Hash, {}
136 assert_instance_of Hash, {1 => 2}
137 assert_equal({1 => 2}, {1 => 2})
140 h = {"string" => "literal", "goto" => "hell"}
142 assert_equal 2, h.size
144 assert_equal "literal", h["string"]
148 assert_instance_of Range, (1..2)
149 assert_equal(1..2, 1..2)
151 assert_equal 1, r.begin
152 assert_equal 2, r.end
153 assert_equal false, r.exclude_end?
154 assert_instance_of Range, (1...3)
155 assert_equal(1...3, 1...3)
157 assert_equal 1, r.begin
158 assert_equal 3, r.end
159 assert_equal true, r.exclude_end?
161 assert_instance_of Range, r
162 assert_equal 3, r.begin
163 assert_equal 7, r.end
164 assert_equal false, r.exclude_end?
166 assert_instance_of Range, r
167 assert_equal 3, r.begin
168 assert_equal 7, r.end
169 assert_equal true, r.exclude_end?
170 assert_instance_of Range, 'a'..'c'
172 assert_equal 'a', r.begin
173 assert_equal 'c', r.end
177 assert_instance_of String, __FILE__
178 assert_equal __FILE__, __FILE__
179 assert_equal 'test_literal.rb', File.basename(__FILE__)
183 assert_instance_of Fixnum, __LINE__
184 assert_equal __LINE__, __LINE__
188 head = ['', '0x', '0o', '0b', '0d', '-', '+']
189 chars = ['0', '1', '_', '9', 'f']
193 len.times { a = a.product(chars).map {|x| x.join('') } }
203 rescue NameError, SyntaxError
206 assert_equal(r1, r2, "Integer(#{s.inspect}) != eval(#{s.inspect})")
213 head = ['', '-', '+']
214 chars = ['0', '1', '_', '9', 'f', '.']
218 len.times { a = a.product(chars).map {|x| x.join('') } }
222 next if /\A[-+]?\./ =~ s
223 next if /\A[-+]?0/ =~ s
231 rescue NameError, SyntaxError
234 r2 = :err if Range === r2
235 assert_equal(r1, r2, "Float(#{s.inspect}) != eval(#{s.inspect})")