- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-1.3.0
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-struct/test/struct.rb
r321 r331 3 3 4 4 assert('Struct', '15.2.18') do 5 Struct.class == Class5 assert_equal Class, Struct.class 6 6 end 7 7 8 8 assert('Struct.new', '15.2.18.3.1') do 9 9 c = Struct.new(:m1, :m2) 10 c.superclass == Struct and11 c.members == [:m1,:m2]10 assert_equal Struct, c.superclass 11 assert_equal [:m1, :m2], c.members 12 12 end 13 13 … … 15 15 assert('Struct.new', '15.2.18.3.1') do 16 16 c = Struct.new() 17 c.superclass == Struct and c.members == [] 17 assert_equal Struct, c.superclass 18 assert_equal [], c.members 18 19 end 19 20 … … 22 23 cc1 = c.new(1,2) 23 24 cc2 = c.new(1,2) 24 cc1 == cc2 25 assert_true cc1 == cc2 26 27 Struct.new(:m1, :m2) { def foo; end } 28 assert_raise(NoMethodError) { Struct.new(:m1).new.foo } 25 29 end 26 30 … … 28 32 c = Struct.new(:m1, :m2) 29 33 cc = c.new(1,2) 30 cc[:m1] == 1 and cc["m2"] == 2 34 assert_equal 1, cc[:m1] 35 assert_equal 2, cc["m2"] 36 assert_equal 1, cc[0] 37 assert_equal 2, cc[-1] 38 assert_raise(TypeError) { cc[[]] } 39 assert_raise(IndexError) { cc[2] } 40 assert_raise(NameError) { cc['tama'] } 31 41 end 32 42 … … 35 45 cc = c.new(1,2) 36 46 cc[:m1] = 3 37 cc[:m1] == 347 assert_equal 3, cc[:m1] 38 48 cc["m2"] = 3 39 49 assert_equal 3, cc["m2"] 50 cc[0] = 4 51 assert_equal 4, cc[0] 52 cc[-1] = 5 53 assert_equal 5, cc[-1] 40 54 assert_raise(TypeError) { cc[[]] = 3 } 55 assert_raise(IndexError) { cc[2] = 7 } 56 assert_raise(NameError) { cc['pochi'] = 8 } 41 57 end 42 58 … … 48 64 a << x 49 65 } 50 a [0] == 1 and a[1] == 266 assert_equal [1, 2], a 51 67 end 52 68 … … 58 74 a << [k,v] 59 75 } 60 a [0] == [:m1, 1] and a[1] == [:m2, 2]76 assert_equal [[:m1, 1], [:m2, 2]], a 61 77 end 62 78 63 79 assert('Struct#members', '15.2.18.4.6') do 64 80 c = Struct.new(:m1, :m2) 65 cc = c.new(1,2) 66 cc.members == [:m1,:m2] 81 assert_equal [:m1, :m2], c.new(1,2).members 67 82 end 68 83 69 84 assert('Struct#select', '15.2.18.4.7') do 70 85 c = Struct.new(:m1, :m2) 71 cc = c.new(1,2) 72 cc.select{|v| v % 2 == 0} == [2] 86 assert_equal([2]) { c.new(1,2).select{|v| v % 2 == 0} } 73 87 end 74 88 … … 101 115 end 102 116 117 assert('struct dup') do 118 c = Struct.new(:m1, :m2, :m3, :m4, :m5) 119 cc = c.new(1,2,3,4,5) 120 assert_nothing_raised { 121 assert_equal(cc, cc.dup) 122 } 123 end 124 103 125 assert('struct inspect') do 104 126 c = Struct.new(:m1, :m2, :m3, :m4, :m5) … … 130 152 assert_raise(IndexError) { a.values_at 2 } 131 153 end 154 155 assert("Struct#dig") do 156 a = Struct.new(:blue, :purple).new('aki', Struct.new(:red).new(1)) 157 assert_equal 'aki', a.dig(:blue) 158 assert_equal 1, a.dig(:purple, :red) 159 assert_equal 1, a.dig(1, 0) 160 end 161 162 assert("Struct.new removes existing constant") do 163 skip "redefining Struct with same name cause warnings" 164 begin 165 assert_not_equal Struct.new("Test", :a), Struct.new("Test", :a, :b) 166 ensure 167 Struct.remove_const :Test 168 end 169 end 170 171 assert("Struct#initialize_copy requires struct to be the same type") do 172 begin 173 Struct.new("Test", :a) 174 a = Struct::Test.new("a") 175 Struct.remove_const :Test 176 Struct.new("Test", :a, :b) 177 assert_raise(TypeError) do 178 a.initialize_copy(Struct::Test.new("a", "b")) 179 end 180 ensure 181 Struct.remove_const :Test 182 end 183 end 184 185 assert("Struct.new does not allow array") do 186 assert_raise(TypeError) do 187 Struct.new("Test", [:a]) 188 end 189 end 190 191 assert("Struct.new generates subclass of Struct") do 192 begin 193 original_struct = Struct 194 Struct = String 195 assert_equal original_struct, original_struct.new.superclass 196 ensure 197 Struct = original_struct 198 end 199 end 200 201 assert 'Struct#freeze' do 202 c = Struct.new :m 203 204 o = c.new 205 o.m = :test 206 assert_equal :test, o.m 207 208 o.freeze 209 assert_raise(RuntimeError) { o.m = :modify } 210 assert_raise(RuntimeError) { o[:m] = :modify } 211 assert_equal :test, o.m 212 end
Note:
See TracChangeset
for help on using the changeset viewer.