package function.builtin.predicate; import static testutil.TestUtilities.*; import org.junit.Test; import function.ArgumentValidator.*; public class EQUALTester { @Test public void testEqualWithTwoEqualAtoms() { String input = "(equal 'a 'a)"; assertSExpressionsMatch(parseString("t"), evaluateString(input)); } @Test public void testEqualWithTwoUnequalAtoms() { String input = "(equal 'a 'b)"; assertSExpressionsMatch(parseString("nil"), evaluateString(input)); } @Test public void testEqualWithAtomAndList() { String input = "(equal \"string\" '(m i k e))"; assertSExpressionsMatch(parseString("nil"), evaluateString(input)); } @Test public void testEqualWithListAndAtom() { String input = "(equal '(m i k e) \"string\")"; assertSExpressionsMatch(parseString("nil"), evaluateString(input)); } @Test public void testEqualWithTwoEqualLists() { String input = "(equal '(1 2 3) '(1 2 3))"; assertSExpressionsMatch(parseString("t"), evaluateString(input)); } @Test public void testEqualWithTwoUnequalLists() { String input = "(equal '(1 2 3) '(1 3 3))"; assertSExpressionsMatch(parseString("nil"), evaluateString(input)); } @Test public void testEqualWithTwoEqualNestedLists() { String input = "(equal '(1 ((2) 3)) '(1 ((2) 3)))"; assertSExpressionsMatch(parseString("t"), evaluateString(input)); } @Test(expected = TooManyArgumentsException.class) public void testEqualWithTooManyArguments() { evaluateString("(equal 1 2 3)"); } @Test(expected = TooFewArgumentsException.class) public void testEqualWithTooFewArguments() { evaluateString("(equal 1)"); } }