2003-09-04 12:18:59 -04:00
|
|
|
require 'test/unit'
|
|
|
|
|
|
|
|
class TestArray < Test::Unit::TestCase
|
|
|
|
def test_array
|
2003-09-05 11:15:43 -04:00
|
|
|
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] * ":")
|
|
|
|
|
2003-09-05 07:28:27 -04:00
|
|
|
assert_equal([1, 2].hash, [1, 2].hash)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
|
|
|
assert_equal([2,3], [1,2,3] & [2,3,4])
|
|
|
|
assert_equal([1,2,3,4], [1,2,3] | [2,3,4])
|
2003-09-05 07:28:27 -04:00
|
|
|
assert_equal([1,2,3] - [2,3], [1])
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
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])
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x[0, 2] = 10
|
|
|
|
assert(x[0] == 10 && x[1] == 2)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x[0, 0] = -1
|
|
|
|
assert(x[0] == -1 && x[1] == 10)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x[-1, 1] = 20
|
|
|
|
assert(x[-1] == 20 && x.pop == 20)
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_array_andor
|
2003-09-05 11:15:43 -04:00
|
|
|
assert_equal([2], ([1,2,3]&[2,4,6]))
|
|
|
|
assert_equal([1,2,3,4,6], ([1,2,3]|[2,4,6]))
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2003-09-04 12:18:59 -04:00
|
|
|
def test_compact
|
2004-06-16 05:20:36 -04:00
|
|
|
x = [nil, 1, nil, nil, 5, nil, nil]
|
|
|
|
x.compact!
|
|
|
|
assert_equal([1, 5], x)
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_uniq
|
2004-06-16 05:20:36 -04:00
|
|
|
x = [1, 1, 4, 2, 5, 4, 5, 1, 2]
|
|
|
|
x.uniq!
|
|
|
|
assert_equal([1, 4, 2, 5], x)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2003-09-04 12:18:59 -04:00
|
|
|
# empty?
|
2004-06-16 05:20:36 -04:00
|
|
|
assert(!x.empty?)
|
|
|
|
x = []
|
|
|
|
assert(x.empty?)
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_sort
|
2004-06-16 05:20:36 -04:00
|
|
|
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)
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_split
|
2004-06-16 05:20:36 -04:00
|
|
|
x = "The Boassert of Mormon"
|
|
|
|
assert_equal(x.reverse, x.split(//).reverse!.join)
|
|
|
|
assert_equal(x.reverse, x.reverse!)
|
2003-09-05 11:15:43 -04:00
|
|
|
assert_equal("g:n:i:r:t:s: :e:t:y:b: :1", "1 byte string".split(//).reverse.join(":"))
|
2004-06-16 05:20:36 -04:00
|
|
|
x = "a b c d"
|
|
|
|
assert_equal(['a', 'b', 'c', 'd'], x.split)
|
|
|
|
assert_equal(['a', 'b', 'c', 'd'], x.split(' '))
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_misc
|
|
|
|
assert(defined? "a".chomp)
|
2003-09-05 11:15:43 -04:00
|
|
|
assert_equal(["a", "b", "c"], "abc".scan(/./))
|
|
|
|
assert_equal([["1a"], ["2b"], ["3c"]], "1a2b3c".scan(/(\d.)/))
|
2003-09-04 12:18:59 -04:00
|
|
|
# non-greedy match
|
2003-09-05 11:15:43 -04:00
|
|
|
assert_equal([["a", "12"], ["b", "22"]], "a=12;b=22".scan(/(.*?)=(\d*);?/))
|
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x = [1]
|
|
|
|
assert_equal('1:1:1:1:1', (x * 5).join(":"))
|
|
|
|
assert_equal('1', (x * 1).join(":"))
|
|
|
|
assert_equal('', (x * 0).join(":"))
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
*x = *(1..7).to_a
|
|
|
|
assert_equal(7, x.size)
|
|
|
|
assert_equal([1, 2, 3, 4, 5, 6, 7], x)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x = [1,2,3]
|
|
|
|
x[1,0] = x
|
|
|
|
assert_equal([1,1,2,3,2,3], x)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x = [1,2,3]
|
|
|
|
x[-1,0] = x
|
|
|
|
assert_equal([1,2,1,2,3,3], x)
|
2003-09-05 11:15:43 -04:00
|
|
|
|
2004-06-16 05:20:36 -04:00
|
|
|
x = [1,2,3]
|
|
|
|
x.concat(x)
|
|
|
|
assert_equal([1,2,3,1,2,3], x)
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|
2004-06-16 07:01:15 -04:00
|
|
|
|
|
|
|
def test_beg_end
|
|
|
|
x = [1, 2, 3, 4, 5]
|
|
|
|
|
|
|
|
assert_equal(1, x.first)
|
|
|
|
assert_equal([1], x.first(1))
|
|
|
|
assert_equal([1, 2, 3], x.first(3))
|
|
|
|
|
|
|
|
assert_equal(5, x.last)
|
|
|
|
assert_equal([5], x.last(1))
|
|
|
|
assert_equal([3, 4, 5], x.last(3))
|
|
|
|
|
|
|
|
assert_equal(1, x.shift)
|
|
|
|
assert_equal([2, 3, 4], x.shift(3))
|
|
|
|
assert_equal([5], x)
|
|
|
|
|
|
|
|
assert_equal([2, 3, 4, 5], x.unshift(2, 3, 4))
|
|
|
|
assert_equal([1, 2, 3, 4, 5], x.unshift(1))
|
|
|
|
assert_equal([1, 2, 3, 4, 5], x)
|
|
|
|
|
|
|
|
assert_equal(5, x.pop)
|
|
|
|
assert_equal([3, 4], x.pop(2))
|
|
|
|
assert_equal([1, 2], x)
|
|
|
|
|
|
|
|
assert_equal([1, 2, 3, 4], x.push(3, 4))
|
|
|
|
assert_equal([1, 2, 3, 4, 5], x.push(5))
|
|
|
|
assert_equal([1, 2, 3, 4, 5], x)
|
|
|
|
end
|
2003-09-04 12:18:59 -04:00
|
|
|
end
|