blob: 594107b4b6d73779ade3b6f241ee37fb7b4a621d [file] [log] [blame]
class ListTest extends GroovyTestCase {
void testList() {
x = [10, 11]
assert x.size() == 2
x.add("cheese")
assert x.size() == 3
assert x.contains(10)
assert x.contains(11)
assert x.contains("cheese")
assert x.get(0) == 10
assert x.get(1) == 11
assert x.get(2) == "cheese"
// subscript operator
assert x[0] == 10
assert x[1] == 11
assert x[2] == "cheese"
x[3] = 12
assert x[3] == 12
if ( x.contains("cheese") ) {
// ignore
}
else {
assert false : "x should contain cheese!"
}
if ( x.contains(10) ) {
// ignore
}
else {
assert false : "x should contain 1!"
}
}
void testEmptyList() {
x = []
assert x.size() == 0
x.add("cheese")
assert x.get(0) == "cheese"
assert x.size() == 1
assert x[0] == "cheese"
}
void testSubscript() {
x = []
x[1] = 'cheese'
assert x[0] == null
assert x[1] == 'cheese'
x[2] = 'gromit'
x[3] = 'wallace'
assert x.size() == 4
x[-1] = 'nice'
assert x[3] == 'nice'
x[-2] = 'cheese'
assert x[2] == 'cheese'
}
void testClosure() {
l = [1, 2, 3, "abc"]
block = {i| println(i) }
l.each(block)
l.each {i| println(i) }
}
void testMax() {
l = [1, 2, 5, 3, 7, 1]
assert l.max() == 7
l = [7, 2, 3]
assert l.max() == 7
l = [1, 2, 7]
assert l.max() == 7
}
void testMin() {
l = [6, 4, 5, 1, 7, 2]
assert l.min() == 1
l = [7, 1, 3]
assert l.min() == 1
l = [1, 2, 7]
assert l.min() == 1
}
void testPlus() {
l1 = [6, 4, 5, 1, 7, 2]
l2 = [6, 4, 5, 1, 7, [4,5]]
assert l1 + l2 == [6, 4, 5, 1, 7, 2, 6, 4, 5, 1, 7, [4,5]]
}
void testPlusOneElement() {
l1 = [6, 4, 5, 1, 7, 2]
l2 = "erererer"
assert l1 + l2 == [6, 4, 5, 1, 7, 2, "erererer"]
}
void testListAppend() {
list = [1, 2]
list << 3 << 4 << 5
assert list == [1, 2, 3, 4, 5]
x = [] << 'a' << 'hello' << [2, 3] << 5
assert x == ['a', 'hello', [2, 3], 5]
}
void testTimes() {
l = [4,7,8]
assert l * 3 == [4, 7, 8, 4, 7, 8, 4, 7, 8]
}
void testMinus() {
l1 = [1, 1, 2, 2, 3, 3, 3, 4, 5]
l2 = [1, 2, 4]
assert l1 - l2 == [3, 5]
}
void testMinusDifferentTypes() {
l1 = [1, 1, "wrer", 2, 3, 3, "wrewer", 4, 5, "w", "w"]
l2 = [1, 2, "w"]
assert l1 - l2 == ["wrer", 3, "wrewer", 4, 5]
}
void testIntersect() {
l1 = [1, 1, "wrer", 2, 3, 3, "wrewer", 4, 5, "w", "w"]
l2 = [1, 2, "f", "w"]
assert l1.intersect(l2) == [1, 2, "w"]
}
void testFlatten() {
l= [[[4, 5, 6, [46, 7, "erer"]], 4, [3, 6, 78]], 4]
assert l.flatten() == [4, 5, 6, 46, 7, "erer", 4, 3, 6, 78, 4]
}
void testFlattenWithRanges() {
flat = [1, 3, 20..24, 33].flatten()
assert flat == [1, 3, 20, 21, 22, 23, 24, 33]
}
void testListsAndRangesCompare() {
l = [1, 2, 3]
r = 1..3
assert r == l
assert l == r
}
void testRemove() {
l = ['a', 'b', 'c']
l.remove(1)
assert l == ['a', 'c']
l.remove(0)
assert l == ['c']
assert l.size() == 1
}
void testPop() {
l = []
l << 'a' << 'b'
value = l.pop()
assert value == 'b'
assert l == ['a']
l.add('c')
value = l.pop()
assert value == 'c'
value = l.pop()
assert value == 'a'
try {
value = l.pop()
fail("Should have thrown an exception")
}
catch (UnsupportedOperationException e) {
println "Worked: caught expected exception: ${e}"
}
}
}