- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-2.1.1
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-array-ext/test/array.rb
r331 r439 2 2 # Array(Ext) Test 3 3 4 assert("Array.try_convert") do 5 assert_nil Array.try_convert(0) 6 assert_nil Array.try_convert(nil) 7 assert_equal [], Array.try_convert([]) 8 assert_equal [1,2,3], Array.try_convert([1,2,3]) 4 def assert_permutation_combination(exp, receiver, meth, *args) 5 act = [] 6 ret = receiver.__send__(meth, *args) { |v| act << v } 7 assert "assert_#{meth}" do 8 assert_equal(exp, act.sort) 9 assert_same(receiver, ret) 10 end 11 end 12 13 def assert_permutation(exp, receiver, *args) 14 assert_permutation_combination(exp, receiver, :permutation, *args) 15 end 16 17 def assert_combination(exp, receiver, *args) 18 assert_permutation_combination(exp, receiver, :combination, *args) 9 19 end 10 20 … … 76 86 end 77 87 88 assert("Array#union") do 89 a = [1, 2, 3, 1] 90 b = [1, 4] 91 c = [1, 5] 92 93 assert_equal [1, 2, 3, 4, 5], a.union(b,c) 94 end 95 96 assert("Array#difference") do 97 a = [1, 2, 3, 1, 6, 7] 98 b = [1, 4, 6] 99 c = [1, 5, 7] 100 101 assert_equal [2, 3], a.difference(b,c) 102 end 103 78 104 assert("Array#&") do 79 105 a = [1, 2, 3, 1] … … 84 110 assert_equal [1], (a & b) 85 111 assert_equal [1, 2, 3, 1], a 112 end 113 114 assert("Array#intersection") do 115 a = [1, 2, 3, 1, 8, 6, 7, 8] 116 b = [1, 4, 6, 8] 117 c = [1, 5, 7, 8] 118 119 assert_equal [1, 8], a.intersection(b,c) 86 120 end 87 121 … … 162 196 end 163 197 assert_equal [ "d", "c", "b", "a" ], b 164 165 if Object.const_defined?(:Enumerator)166 assert_equal [ "d", "c", "b", "a" ], a.reverse_each.to_a167 else168 true169 end170 198 end 171 199 … … 229 257 assert("Array#bsearch") do 230 258 # Find minimum mode 231 a = [0, 4, 7, 10, 12] 232 assert_include [4, 7], a.bsearch {|x| x >= 4 } 233 assert_equal 7, a.bsearch {|x| x >= 6 } 234 assert_equal 0, a.bsearch {|x| x >= -1 } 235 assert_nil a.bsearch {|x| x >= 100 } 259 a = [0, 2, 4] 260 assert_equal 0, a.bsearch{ |x| x >= -1 } 261 assert_equal 0, a.bsearch{ |x| x >= 0 } 262 assert_equal 2, a.bsearch{ |x| x >= 1 } 263 assert_equal 2, a.bsearch{ |x| x >= 2 } 264 assert_equal 4, a.bsearch{ |x| x >= 3 } 265 assert_equal 4, a.bsearch{ |x| x >= 4 } 266 assert_nil a.bsearch{ |x| x >= 5 } 236 267 237 268 # Find any mode 238 a = [0, 4, 7, 10, 12] 239 assert_include [4, 7], a.bsearch {|x| 1 - (x / 4).truncate } 240 assert_nil a.bsearch {|x| 4 - (x / 2).truncate } 241 assert_equal(nil, a.bsearch {|x| 1 }) 242 assert_equal(nil, a.bsearch {|x| -1 }) 243 end 244 245 assert("Array#delete_if") do 246 a = [1, 2, 3, 4, 5] 247 assert_equal [1, 2, 3, 4, 5], a.delete_if { false } 248 assert_equal [1, 2, 3, 4, 5], a 249 250 a = [1, 2, 3, 4, 5] 251 assert_equal [], a.delete_if { true } 252 assert_equal [], a 253 254 a = [ 1, 2, 3, 4, 5 ] 255 assert_equal [1, 2, 3], a.delete_if { |val| val > 3 } 256 end 269 a = [0, 4, 8] 270 def between(lo, x, hi) 271 if x < lo 272 1 273 elsif x > hi 274 -1 275 else 276 0 277 end 278 end 279 assert_nil a.bsearch{ |x| between(-3, x, -1) } 280 assert_equal 0, a.bsearch{ |x| between(-1, x, 1) } 281 assert_nil a.bsearch{ |x| between( 1, x, 3) } 282 assert_equal 4, a.bsearch{ |x| between( 3, x, 5) } 283 assert_nil a.bsearch{ |x| between( 5, x, 7) } 284 assert_equal 8, a.bsearch{ |x| between( 7, x, 9) } 285 assert_nil a.bsearch{ |x| between( 9, x, 11) } 286 287 assert_equal 0, a.bsearch{ |x| between( 0, x, 3) } 288 assert_equal 4, a.bsearch{ |x| between( 0, x, 4) } 289 assert_equal 4, a.bsearch{ |x| between( 4, x, 8) } 290 assert_equal 8, a.bsearch{ |x| between( 5, x, 8) } 291 292 # Invalid block result 293 assert_raise TypeError, 'invalid block result (must be numeric, true, false or nil)' do 294 a.bsearch{ 'I like to watch the world burn' } 295 end 296 end 297 298 # tested through Array#bsearch 299 #assert("Array#bsearch_index") do 300 #end 257 301 258 302 assert("Array#keep_if") do … … 302 346 end 303 347 304 assert('Array#to_h (Modified)') do305 class A306 def to_ary307 $a.clear308 nil309 end310 end311 $a = [A.new]312 assert_raise(TypeError) { $a.to_h }313 end314 315 348 assert("Array#index (block)") do 316 349 assert_nil (1..10).to_a.index { |i| i % 5 == 0 and i % 7 == 0 } 317 350 assert_equal 34, (1..100).to_a.index { |i| i % 5 == 0 and i % 7 == 0 } 318 end319 320 assert("Array#to_ary") do321 assert_equal [], [].to_ary322 assert_equal [1,2,3], [1,2,3].to_ary323 351 end 324 352 … … 353 381 assert_equal(j, nil) 354 382 end 383 384 assert("Array#permutation") do 385 a = [1, 2, 3] 386 assert_permutation([[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]], a) 387 assert_permutation([[1],[2],[3]], a, 1) 388 assert_permutation([[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]], a, 2) 389 assert_permutation([[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]], a, 3) 390 assert_permutation([[]], a, 0) 391 assert_permutation([], a, 4) 392 assert_permutation([], a, -1) 393 end 394 395 assert("Array#combination") do 396 a = [1, 2, 3, 4] 397 assert_combination([[1],[2],[3],[4]], a, 1) 398 assert_combination([[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]], a, 2) 399 assert_combination([[1,2,3],[1,2,4],[1,3,4],[2,3,4]], a, 3) 400 assert_combination([[1,2,3,4]], a, 4) 401 assert_combination([[]], a, 0) 402 assert_combination([], a, 5) 403 assert_combination([], a, -1) 404 end 405 406 assert('Array#transpose') do 407 assert_equal([].transpose, []) 408 assert_equal([[]].transpose, []) 409 assert_equal([[1]].transpose, [[1]]) 410 assert_equal([[1,2,3]].transpose, [[1], [2], [3]]) 411 assert_equal([[1], [2], [3]].transpose, [[1,2,3]]) 412 assert_equal([[1,2], [3,4], [5,6]].transpose, [[1,3,5], [2,4,6]]) 413 assert_raise(TypeError) { [1].transpose } 414 assert_raise(IndexError) { [[1], [2,3,4]].transpose } 415 end
Note:
See TracChangeset
for help on using the changeset viewer.