blob: 0478ab9b3d6467dc08b4253ecf209ec8188dc436 [file] [log] [blame]
class MinusTest extends GroovyTestCase {
void doTestMinus(String type, def a, b, c, d) {
assertEquals(type, [ a, b ], [ a, b, c ] - [ c ])
assertEquals(type, [ a, b ], [ a, b, c ] - [ c, d ])
assertEquals(type, [], [ a, b, c ] - [ a, b, c ])
assertEquals(type, [], [ a, b, c ] - [ c, b, a ])
assertEquals(type, [ a, b, c ], [ a, b, c ] - [])
assertEquals(type, [], [] - [ a, b, c ])
}
void doTestMinusDupplicates(String type, def a, b, c, d) {
assertEquals(type, [a, a], [a, a] - [])
assertEquals(type, [a, b, b, c], [a, b, b, c] - [])
assertEquals(type, [b, b, c], [a, b, b, c] - [a])
assertEquals(type, [a], [a, b, b, c] - [b, c])
assertEquals(type, [], [a] - [ a, a ])
}
void doTestMinusWithNull(String type, def a, b, c, d) {
assertEquals(type, [ a, b, c ], [ a, b, c ] - [ null ])
assertEquals(type, [ a, b, c ], [ a, b, c , null] - [ null ])
assertEquals(type, [ a, b ], [ a, b, c, null ] - [ null, c ])
assertEquals(type, [], [] - [ a, b, c, null ])
assertEquals(type, [ a, b, c, null ], [ a, b, c, null ] - [ ])
assertEquals(type, [ a, b, null ], [ a, b, c, null ] - [ c ])
}
void testMinusComparable() {
def a = 'a'
def b = 'b'
def c = 'c'
def d = 'd'
doTestMinus('Comparable', a, b, c, d)
doTestMinusDupplicates('Comparable', a, b, c, d)
doTestMinusWithNull('Comparable', a, b, c, d)
}
void testMinusNumber() {
def a = 1
def b = 2
def c = 3
def d = 4
doTestMinus('Number', a, b, c, d)
doTestMinusDupplicates('Number', a, b, c, d)
doTestMinusWithNull('Number', a, b, c, d)
}
void testMinusNumbersMixed() {
def a = 1
def b = new BigInteger('2')
def c = 3.0d
def d = new BigDecimal('4.0')
doTestMinus('NumbersMixed', a, b, c, d)
doTestMinusDupplicates('NumbersMixed', a, b, c, d)
doTestMinusWithNull('NumbersMixed', a, b, c, d)
}
void testMinusNonComparable() {
def a = new Object()
def b = new Object()
def c = new Object()
def d = new Object()
doTestMinus('NonComparable', a, b, c, d)
doTestMinusDupplicates('NonComparable', a, b, c, d)
doTestMinusWithNull('NonComparable', a, b, c, d)
}
void testMinusMixed() {
def a = new Object()
def b = 2
def c = '3'
def d = new BigDecimal('4.0')
doTestMinus('Mixed', a, b, c, d)
doTestMinusDupplicates('Mixed', a, b, c, d)
doTestMinusWithNull('Mixed', a, b, c, d)
}
}