def treemap(obj, &b) # report end def search(obj, val) treemap(obj) {|v| return true if v == val } false end if __FILE__ == $0 require 'test/unit' class TestTreeMap < Test::Unit::TestCase def test_empty assert_equal([], treemap([]) {|v| v }) end def test_intarray assert_equal([2], treemap([1]) {|v| v * 2}) assert_equal([8,64,72,32], treemap([1,8,9,4]) {|v| v * 8}) end def test_nest assert_equal([[[[]]]], treemap([[[[]]]]) {|v| v * 2}) assert_equal([[[[2]]]], treemap([[[[1]]]]) {|v| v * 2}) assert_equal([[42, 14, 42], 0, [7]], treemap([[6, 2, 6], 0, [1]]) {|v| v * 7 }) end def test_nil assert_equal([[[[]]]], treemap([[[[]]]]) {|v| nil}) assert_equal([[[[nil]]]], treemap([[[[1]]]]) {|v| nil}) assert_equal([[nil, nil, nil], nil, [nil]], treemap([[6, 2, 6], 0, [1]]) {|v| nil }) end def test_ary assert_equal([[[[]]]], treemap([[[[]]]]) {|v| [v,v]}) assert_equal([[[[[1,1]]]]], treemap([[[[1]]]]) {|v| [v,v]}) assert_equal([[[6,6], [2,2], [6,6]], [0,0], [[1,1]]], treemap([[6, 2, 6], 0, [1]]) {|v| [v,v] }) end def test_range assert_equal([2,4,6], treemap(1..3) {|v| v * 2}) end end class TestSearch < Test::Unit::TestCase def test_empty assert_equal(false, search([], 1)) end def test_flat assert_equal(false, search([1], 0)) assert_equal(true, search([1], 1)) assert_equal(false, search([1], 2)) assert_equal(false, search([1,2], 0)) assert_equal(true, search([1,2], 1)) assert_equal(true, search([1,2], 2)) assert_equal(false, search([1,2,3], 0)) assert_equal(true, search([1,2,3], 1)) assert_equal(true, search([1,2,3], 2)) end def test_nest assert_equal(false, search([[]], 2)) assert_equal(true, search([[1]], 1)) assert_equal(false, search([[1],[],[2,3,[[[4,5],6]]]], 0)) assert_equal(true, search([[1],[],[2,3,[[[4,5],6]]]], 1)) assert_equal(true, search([[1],[],[2,3,[[[4,5],6]]]], 2)) assert_equal(true, search([[1],[],[2,3,[[[4,5],6]]]], 3)) assert_equal(true, search([[1],[],[2,3,[[[4,5],6]]]], 4)) assert_equal(true, search([[1],[],[2,3,[[[4,5],6]]]], 5)) assert_equal(true, search([[1],[],[2,3,[[[4,5],6]]]], 6)) assert_equal(false, search([[1],[],[2,3,[[[4,5],6]]]], 7)) end end end