package function.builtin.cons; import static testutil.TestUtilities.*; import org.junit.Test; import function.ArgumentValidator.*; public class LENGTHTester { @Test public void testLengthOfNil() { String input = "(length '())"; assertSExpressionsMatch(parseString("0"), evaluateString(input)); } @Test public void testLengthOfListOfOneElement() { String input = "(length '(1))"; assertSExpressionsMatch(parseString("1"), evaluateString(input)); } @Test public void testLengthOfListOfManyElements() { String input = "(length '(1 2 3 4 5))"; assertSExpressionsMatch(parseString("5"), evaluateString(input)); } @Test(expected = BadArgumentTypeException.class) public void testLengthWithNonList() { evaluateString("(length 'x)"); } @Test(expected = TooManyArgumentsException.class) public void testLengthWithTooManyArguments() { evaluateString("(length '(1 2) '(1 2))"); } @Test(expected = TooFewArgumentsException.class) public void testLengthWithTooFewArguments() { evaluateString("(length)"); } }