require 'test/unit' $KCODE = 'none' class TestArray < Test::Unit::TestCase def test_array assert_equal([1, 2, 3, 4], [1, 2] + [3, 4]) assert_equal([1, 2, 1, 2], [1, 2] * 2) assert_equal("1:2", [1, 2] * ":") assert_equal([1, 2].hash, [1, 2].hash) assert_equal([2,3], [1,2,3] & [2,3,4]) assert_equal([1,2,3,4], [1,2,3] | [2,3,4]) assert_equal([1,2,3] - [2,3], [1]) $x = [0, 1, 2, 3, 4, 5] assert_equal(2, $x[2]) assert_equal([1, 2, 3], $x[1..3]) assert_equal([1, 2, 3], $x[1,3]) $x[0, 2] = 10 assert($x[0] == 10 && $x[1] == 2) $x[0, 0] = -1 assert($x[0] == -1 && $x[1] == 10) $x[-1, 1] = 20 assert($x[-1] == 20 && $x.pop == 20) end def test_array_andor assert_equal([2], ([1,2,3]&[2,4,6])) assert_equal([1,2,3,4,6], ([1,2,3]|[2,4,6])) end def test_compact $x = [nil, 1, nil, nil, 5, nil, nil] $x.compact! assert_equal([1, 5], $x) end def test_uniq $x = [1, 1, 4, 2, 5, 4, 5, 1, 2] $x.uniq! assert_equal([1, 4, 2, 5], $x) # empty? assert(!$x.empty?) $x = [] assert($x.empty?) end def test_sort $x = ["it", "came", "to", "pass", "that", "..."] $x = $x.sort.join(" ") assert_equal("... came it pass that to", $x) $x = [2,5,3,1,7] $x.sort!{|a,b| a<=>b} # sort with condition assert_equal([1,2,3,5,7], $x) $x.sort!{|a,b| b-a} # reverse sort assert_equal([7,5,3,2,1], $x) end def test_split $x = "The Boassert of Mormon" assert_equal($x.reverse, $x.split(//).reverse!.join) assert_equal($x.reverse, $x.reverse!) assert_equal("g:n:i:r:t:s: :e:t:y:b: :1", "1 byte string".split(//).reverse.join(":")) $x = "a b c d" assert_equal(['a', 'b', 'c', 'd'], $x.split) assert_equal(['a', 'b', 'c', 'd'], $x.split(' ')) end def test_misc assert(defined? "a".chomp) assert_equal(["a", "b", "c"], "abc".scan(/./)) assert_equal([["1a"], ["2b"], ["3c"]], "1a2b3c".scan(/(\d.)/)) # non-greedy match assert_equal([["a", "12"], ["b", "22"]], "a=12;b=22".scan(/(.*?)=(\d*);?/)) $x = [1] assert_equal('1:1:1:1:1', ($x * 5).join(":")) assert_equal('1', ($x * 1).join(":")) assert_equal('', ($x * 0).join(":")) *$x = *(1..7).to_a assert_equal(7, $x.size) assert_equal([1, 2, 3, 4, 5, 6, 7], $x) $x = [1,2,3] $x[1,0] = $x assert_equal([1,1,2,3,2,3], $x) $x = [1,2,3] $x[-1,0] = $x assert_equal([1,2,1,2,3,3], $x) $x = [1,2,3] $x.concat($x) assert_equal([1,2,3,1,2,3], $x) end end