119 lines
2.5 KiB
Kotlin
119 lines
2.5 KiB
Kotlin
package function.builtin.predicate
|
|
|
|
import function.ArgumentValidator.TooFewArgumentsException
|
|
import function.ArgumentValidator.TooManyArgumentsException
|
|
import org.junit.jupiter.api.Assertions.assertThrows
|
|
import org.junit.jupiter.api.Test
|
|
import testutil.LispTestInstance
|
|
import testutil.SymbolAndFunctionCleaner
|
|
import testutil.TestUtilities.evaluateString
|
|
import testutil.TypeAssertions.assertNil
|
|
import testutil.TypeAssertions.assertT
|
|
|
|
@LispTestInstance
|
|
class EqTest : SymbolAndFunctionCleaner() {
|
|
|
|
@Test
|
|
fun eqWithEqualAtoms() {
|
|
val input = "(eq 1 1)"
|
|
|
|
assertT(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithEqualAtomsAndAlias() {
|
|
val input = "(eq? 1 1)"
|
|
|
|
assertT(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithUnequalAtoms() {
|
|
val input = "(eq 1 2)"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTwoEqualNumbers() {
|
|
val input = "(eq -4 -4)"
|
|
|
|
assertT(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTwoUnequalNumbers() {
|
|
val input = "(eq +5 +7)"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTwoEqualStrings() {
|
|
val input = "(eq \"potato\" \"potato\")"
|
|
|
|
assertT(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTwoUnequalStrings() {
|
|
val input = "(eq \"tomato\" \"potato\")"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTwoDifferentCasedStrings() {
|
|
val input = "(eq \"Potato\" \"potato\")"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithAtomAndList() {
|
|
val input = "(eq 1 '(2))"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithSameList() {
|
|
val initializeL1 = "(setq l1 '(1 2 3))"
|
|
val initializeL2 = "(setq l2 l1)"
|
|
val input = "(eq l1 l2)"
|
|
|
|
evaluateString(initializeL1)
|
|
evaluateString(initializeL2)
|
|
|
|
assertT(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithEqualLists() {
|
|
val input = "(eq '(1 2) '(1 2))"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithUnequalLists() {
|
|
val input = "(eq '(1 2) '(3 4))"
|
|
|
|
assertNil(evaluateString(input))
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTooManyArguments() {
|
|
assertThrows(TooManyArgumentsException::class.java) {
|
|
evaluateString("(eq 'one 'two 'three)")
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun eqWithTooFewArguments() {
|
|
assertThrows(TooFewArgumentsException::class.java) {
|
|
evaluateString("(eq 'one)")
|
|
}
|
|
}
|
|
}
|