Resolves #10 - The equality predicates have been refactored
This commit is contained in:
		
							parent
							
								
									50a3f3be67
								
							
						
					
					
						commit
						d2dfe23083
					
				@ -0,0 +1,24 @@
 | 
			
		||||
---
 | 
			
		||||
Test
 | 
			
		||||
---
 | 
			
		||||
| script           | lisp interpreter fixture                |
 | 
			
		||||
| #    | Object with multiple methods                        |
 | 
			
		||||
| show | evaluate  |!-
 | 
			
		||||
 | 
			
		||||
(defun counter-class-multi ()
 | 
			
		||||
  (let ((counter 0))
 | 
			
		||||
    (lambda (msg)
 | 
			
		||||
      (case msg
 | 
			
		||||
        ((:inc)
 | 
			
		||||
          (setq counter (+ counter 1)))
 | 
			
		||||
        ((:dec)
 | 
			
		||||
          (setq counter (- counter 1)))))))
 | 
			
		||||
 | 
			
		||||
                                                           -!|
 | 
			
		||||
| show  | evaluate | (setq my-counter (counter-class-multi)) |
 | 
			
		||||
| check | evaluate | (funcall my-counter :inc)               | 1 |
 | 
			
		||||
| check | evaluate | (funcall my-counter :inc)               | 2 |
 | 
			
		||||
| check | evaluate | (funcall my-counter :inc)               | 3 |
 | 
			
		||||
| check | evaluate | (funcall my-counter :dec)               | 2 |
 | 
			
		||||
| check | evaluate | (funcall my-counter :dec)               | 1 |
 | 
			
		||||
| check | evaluate | (funcall my-counter :dec)               | 0 |
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
|LispInterpreter.MultipleMethodClosure||11:52:11 Tue, Feb 28, 2017|
 | 
			
		||||
|LispInterpreter.LexicalClosures||12:10:13 Mon, Feb 27, 2017|
 | 
			
		||||
|LispInterpreter.TestClosure||11:24:27 Mon, Feb 27, 2017|
 | 
			
		||||
|LispInterpreter.TestOne||09:26:08 Fri, Feb 24, 2017|
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,11 @@ public class EQ extends LispFunction {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression atomEq(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return (firstArgument.toString().equals(secondArgument.toString())) ? Symbol.T : Nil.getInstance();
 | 
			
		||||
        return isEq(firstArgument, secondArgument) ? Symbol.T : Nil.getInstance();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isEq(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return firstArgument.toString().equals(secondArgument.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression listEq(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
 | 
			
		||||
@ -25,9 +25,21 @@ public class EQUAL extends LispFunction {
 | 
			
		||||
        SExpression firstArgument = argumentList.getFirst();
 | 
			
		||||
        SExpression secondArgument = rest.getFirst();
 | 
			
		||||
 | 
			
		||||
        if (!isListPair(firstArgument, secondArgument))
 | 
			
		||||
        return equal(firstArgument, secondArgument);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression equal(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        if (isListPair(firstArgument, secondArgument))
 | 
			
		||||
            return listEqual(firstArgument, secondArgument);
 | 
			
		||||
 | 
			
		||||
        return atomEqual(firstArgument, secondArgument);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isListPair(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return firstArgument.isCons() && secondArgument.isCons();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression listEqual(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        Cons listOne = (Cons) firstArgument;
 | 
			
		||||
        Cons listTwo = (Cons) secondArgument;
 | 
			
		||||
        SExpression listOneFirst = listOne.getFirst();
 | 
			
		||||
@ -41,20 +53,8 @@ public class EQUAL extends LispFunction {
 | 
			
		||||
        return logicalConjunction(firstEqual, restEqual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isListPair(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return firstArgument.isCons() && secondArgument.isCons();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression equal(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return isEqual(firstArgument, secondArgument) ? Symbol.T : Nil.getInstance();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isEqual(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return firstArgument.toString().equals(secondArgument.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Cons makeArgumentList(SExpression listOneFirst, SExpression listTwoFirst) {
 | 
			
		||||
        return new Cons(listOneFirst, LIST.makeList(listTwoFirst));
 | 
			
		||||
    private Cons makeArgumentList(SExpression one, SExpression two) {
 | 
			
		||||
        return new Cons(one, LIST.makeList(two));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression logicalConjunction(SExpression firstEqual, SExpression restEqual) {
 | 
			
		||||
@ -65,4 +65,12 @@ public class EQUAL extends LispFunction {
 | 
			
		||||
        return (firstEqual == Symbol.T) && (restEqual == Symbol.T);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SExpression atomEqual(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return isEqual(firstArgument, secondArgument) ? Symbol.T : Nil.getInstance();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isEqual(SExpression firstArgument, SExpression secondArgument) {
 | 
			
		||||
        return firstArgument.toString().equals(secondArgument.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,11 +4,11 @@ import function.*;
 | 
			
		||||
import sexpression.*;
 | 
			
		||||
 | 
			
		||||
@FunctionNames({ "=" })
 | 
			
		||||
public class EQUALSP extends LispFunction {
 | 
			
		||||
public class NUMERIC_EQUAL extends LispFunction {
 | 
			
		||||
 | 
			
		||||
    private ArgumentValidator argumentValidator;
 | 
			
		||||
 | 
			
		||||
    public EQUALSP() {
 | 
			
		||||
    public NUMERIC_EQUAL() {
 | 
			
		||||
        this.argumentValidator = new ArgumentValidator("=");
 | 
			
		||||
        this.argumentValidator.setMinimumNumberOfArguments(1);
 | 
			
		||||
        this.argumentValidator.setEveryArgumentExpectedType(LispNumber.class);
 | 
			
		||||
@ -4,11 +4,11 @@ import function.*;
 | 
			
		||||
import sexpression.*;
 | 
			
		||||
 | 
			
		||||
@FunctionNames({ ">" })
 | 
			
		||||
public class GREATERP extends LispFunction {
 | 
			
		||||
public class NUMERIC_GREATER extends LispFunction {
 | 
			
		||||
 | 
			
		||||
    private ArgumentValidator argumentValidator;
 | 
			
		||||
 | 
			
		||||
    public GREATERP() {
 | 
			
		||||
    public NUMERIC_GREATER() {
 | 
			
		||||
        this.argumentValidator = new ArgumentValidator(">");
 | 
			
		||||
        this.argumentValidator.setMinimumNumberOfArguments(1);
 | 
			
		||||
        this.argumentValidator.setEveryArgumentExpectedType(LispNumber.class);
 | 
			
		||||
@ -4,11 +4,11 @@ import function.*;
 | 
			
		||||
import sexpression.*;
 | 
			
		||||
 | 
			
		||||
@FunctionNames({ "<" })
 | 
			
		||||
public class LESSP extends LispFunction {
 | 
			
		||||
public class NUMERIC_LESS extends LispFunction {
 | 
			
		||||
 | 
			
		||||
    private ArgumentValidator argumentValidator;
 | 
			
		||||
 | 
			
		||||
    public LESSP() {
 | 
			
		||||
    public NUMERIC_LESS() {
 | 
			
		||||
        this.argumentValidator = new ArgumentValidator("<");
 | 
			
		||||
        this.argumentValidator.setMinimumNumberOfArguments(1);
 | 
			
		||||
        this.argumentValidator.setEveryArgumentExpectedType(LispNumber.class);
 | 
			
		||||
@ -46,16 +46,16 @@ public class FunctionTable {
 | 
			
		||||
        allBuiltIns.add(DIVIDE.class);
 | 
			
		||||
        allBuiltIns.add(EQ.class);
 | 
			
		||||
        allBuiltIns.add(EQUAL.class);
 | 
			
		||||
        allBuiltIns.add(EQUALSP.class);
 | 
			
		||||
        allBuiltIns.add(NUMERIC_EQUAL.class);
 | 
			
		||||
        allBuiltIns.add(EVAL.class);
 | 
			
		||||
        allBuiltIns.add(EXIT.class);
 | 
			
		||||
        allBuiltIns.add(FIRST.class);
 | 
			
		||||
        allBuiltIns.add(FUNCALL.class);
 | 
			
		||||
        allBuiltIns.add(GREATERP.class);
 | 
			
		||||
        allBuiltIns.add(NUMERIC_GREATER.class);
 | 
			
		||||
        allBuiltIns.add(IF.class);
 | 
			
		||||
        allBuiltIns.add(LAMBDA.class);
 | 
			
		||||
        allBuiltIns.add(LENGTH.class);
 | 
			
		||||
        allBuiltIns.add(LESSP.class);
 | 
			
		||||
        allBuiltIns.add(NUMERIC_LESS.class);
 | 
			
		||||
        allBuiltIns.add(LET.class);
 | 
			
		||||
        allBuiltIns.add(LIST.class);
 | 
			
		||||
        allBuiltIns.add(LISTP.class);
 | 
			
		||||
 | 
			
		||||
@ -10,28 +10,63 @@ import function.ArgumentValidator.*;
 | 
			
		||||
public class EQTester {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqWithEqualAtoms() {
 | 
			
		||||
    public void eqWithEqualAtoms() {
 | 
			
		||||
        String input = "(eq 1 1)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqWithUnequalAtoms() {
 | 
			
		||||
    public void eqWithUnequalAtoms() {
 | 
			
		||||
        String input = "(eq 1 2)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqWithAtomAndList() {
 | 
			
		||||
    public void eqWithTwoEqualNumbers() {
 | 
			
		||||
        String input = "(eq -4 -4)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void eqWithTwoUnequalNumbers() {
 | 
			
		||||
        String input = "(eq +5 +7)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void eqWithTwoEqualStrings() {
 | 
			
		||||
        String input = "(eq \"potato\" \"potato\")";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void eqWithTwoUnequalStrings() {
 | 
			
		||||
        String input = "(eq \"tomato\" \"potato\")";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void eqWithTwoDifferentCasedStrings() {
 | 
			
		||||
        String input = "(eq \"Potato\" \"potato\")";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void eqWithAtomAndList() {
 | 
			
		||||
        String input = "(eq 1 '(2))";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqWithSameList() {
 | 
			
		||||
    public void eqWithSameList() {
 | 
			
		||||
        String initializeL1 = "(setf l1 '(1 2 3))";
 | 
			
		||||
        String initializeL2 = "(setf l2 l1)";
 | 
			
		||||
        String input = "(eq l1 l2)";
 | 
			
		||||
@ -43,26 +78,26 @@ public class EQTester {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqWithEqualLists() {
 | 
			
		||||
    public void eqWithEqualLists() {
 | 
			
		||||
        String input = "(eq '(1 2) '(1 2))";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqWithUnequalLists() {
 | 
			
		||||
    public void eqWithUnequalLists() {
 | 
			
		||||
        String input = "(eq '(1 2) '(3 4))";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooManyArgumentsException.class)
 | 
			
		||||
    public void testEqWithTooManyArguments() {
 | 
			
		||||
    public void eqWithTooManyArguments() {
 | 
			
		||||
        evaluateString("(eq 'one 'two 'three)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void testEqWithTooFewArguments() {
 | 
			
		||||
    public void eqWithTooFewArguments() {
 | 
			
		||||
        evaluateString("(eq 'one)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,61 +10,96 @@ import function.ArgumentValidator.*;
 | 
			
		||||
public class EQUALTester {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithTwoEqualAtoms() {
 | 
			
		||||
    public void equalWithTwoEqualAtoms() {
 | 
			
		||||
        String input = "(equal 'a 'a)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithTwoUnequalAtoms() {
 | 
			
		||||
    public void equalWithTwoUnequalAtoms() {
 | 
			
		||||
        String input = "(equal 'a 'b)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithAtomAndList() {
 | 
			
		||||
    public void equalWithTwoEqualNumbers() {
 | 
			
		||||
        String input = "(equal -4 -4)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void equalWithTwoUnequalNumbers() {
 | 
			
		||||
        String input = "(equal +5 +7)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void equalWithTwoEqualStrings() {
 | 
			
		||||
        String input = "(equal \"potato\" \"potato\")";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void equalWithTwoUnequalStrings() {
 | 
			
		||||
        String input = "(equal \"tomato\" \"potato\")";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void equalWithTwoDifferentCasedStrings() {
 | 
			
		||||
        String input = "(equal \"Potato\" \"potato\")";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void equalWithAtomAndList() {
 | 
			
		||||
        String input = "(equal \"string\" '(m i k e))";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithListAndAtom() {
 | 
			
		||||
    public void equalWithListAndAtom() {
 | 
			
		||||
        String input = "(equal '(m i k e) \"string\")";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithTwoEqualLists() {
 | 
			
		||||
    public void equalWithTwoEqualLists() {
 | 
			
		||||
        String input = "(equal '(1 2 3) '(1 2 3))";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithTwoUnequalLists() {
 | 
			
		||||
    public void equalWithTwoUnequalLists() {
 | 
			
		||||
        String input = "(equal '(1 2 3) '(1 3 3))";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualWithTwoEqualNestedLists() {
 | 
			
		||||
    public void equalWithTwoEqualNestedLists() {
 | 
			
		||||
        String input = "(equal '(1 ((2) 3)) '(1 ((2) 3)))";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooManyArgumentsException.class)
 | 
			
		||||
    public void testEqualWithTooManyArguments() {
 | 
			
		||||
    public void equalWithTooManyArguments() {
 | 
			
		||||
        evaluateString("(equal 1 2 3)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void testEqualWithTooFewArguments() {
 | 
			
		||||
    public void equalWithTooFewArguments() {
 | 
			
		||||
        evaluateString("(equal 1)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,22 +10,22 @@ import function.ArgumentValidator.*;
 | 
			
		||||
public class LISTPTester {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testListpWithList_ReturnsT() {
 | 
			
		||||
    public void listpWithList() {
 | 
			
		||||
        assertT(evaluateString("(listp '(1))"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testListWithNonList_ReturnsNil() {
 | 
			
		||||
    public void listpWithNonList() {
 | 
			
		||||
        assertNil(evaluateString("(listp 1)"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void testListpWithTooFewArguments() {
 | 
			
		||||
    public void listpWithTooFewArguments() {
 | 
			
		||||
        evaluateString("(listp)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooManyArgumentsException.class)
 | 
			
		||||
    public void testListpWithTooManyArguments() {
 | 
			
		||||
    public void listpWithTooManyArguments() {
 | 
			
		||||
        evaluateString("(listp '() '())");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -7,50 +7,50 @@ import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import function.ArgumentValidator.*;
 | 
			
		||||
 | 
			
		||||
public class EQUALSPTester {
 | 
			
		||||
public class NUMERIC_EQUALTester {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualspWithOneNumber() {
 | 
			
		||||
    public void numericEqualWithOneNumber() {
 | 
			
		||||
        String input = "(= 1)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualspWithEqualNumbers() {
 | 
			
		||||
    public void numericEqualWithEqualNumbers() {
 | 
			
		||||
        String input = "(= 1 1)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualspWithNonEqualNumbers() {
 | 
			
		||||
    public void numericEqualWithNonEqualNumbers() {
 | 
			
		||||
        String input = "(= 1 2)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualspWithManyEqualNumbers() {
 | 
			
		||||
    public void numericEqualWithManyEqualNumbers() {
 | 
			
		||||
        String input = "(= 4 4 4 4 4 4 4 4 4 4)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testEqualspWithManyNonEqualNumbers() {
 | 
			
		||||
    public void numericEqualWithManyNonEqualNumbers() {
 | 
			
		||||
        String input = "(= 4 4 4 4 5 4 4 4 4 4)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void testEqualspWithNonNumbers() {
 | 
			
		||||
    public void numericEqualWithNonNumbers() {
 | 
			
		||||
        evaluateString("(= 'x 'x)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void testEqualspWithTooFewArguments() {
 | 
			
		||||
    public void numericEqualWithTooFewArguments() {
 | 
			
		||||
        evaluateString("(=)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -7,50 +7,50 @@ import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import function.ArgumentValidator.*;
 | 
			
		||||
 | 
			
		||||
public class GREATERPTester {
 | 
			
		||||
public class NUMERIC_GREATERTester {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGreaterpWithOneNumber_ReturnsT() {
 | 
			
		||||
    public void greaterThanWithOneNumber_ReturnsT() {
 | 
			
		||||
        String input = "(> 1)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGreaterpWithTwoNumbers_ReturnsNil() {
 | 
			
		||||
    public void greaterThanWithTwoNumbers_ReturnsNil() {
 | 
			
		||||
        String input = "(> 1 2)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGreaterpWithTwoNumbers_ReturnsT() {
 | 
			
		||||
    public void greaterThanWithTwoNumbers_ReturnsT() {
 | 
			
		||||
        String input = "(> 3 2)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGreaterpWithManyNumbers_ReturnsNil() {
 | 
			
		||||
    public void greaterThanWithManyNumbers_ReturnsNil() {
 | 
			
		||||
        String input = "(> 4 3 2 5 1)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGreaterpWithManyNumbers_ReturnsT() {
 | 
			
		||||
    public void greaterThanWithManyNumbers() {
 | 
			
		||||
        String input = "(> 4 3 2 1 0)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void testGreaterpWithNonNumbers() {
 | 
			
		||||
    public void greaterThanWithNonNumbers() {
 | 
			
		||||
        evaluateString("(> 'x 'x)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void testGreaterpWithTooFewArguments() {
 | 
			
		||||
    public void greaterThanWithTooFewArguments() {
 | 
			
		||||
        evaluateString("(>)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -7,50 +7,50 @@ import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import function.ArgumentValidator.*;
 | 
			
		||||
 | 
			
		||||
public class LESSPTester {
 | 
			
		||||
public class NUMERIC_LESSTester {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testLesspWithOneNumber_ReturnsT() {
 | 
			
		||||
    public void lessThanWithOneNumber_ReturnsT() {
 | 
			
		||||
        String input = "(< 1)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testLesspWithTwoNumbers_ReturnsNil() {
 | 
			
		||||
    public void lessThanWithTwoNumbers_ReturnsNil() {
 | 
			
		||||
        String input = "(< 2 1)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testLesspWithTwoNumbers_ReturnsT() {
 | 
			
		||||
    public void lessThanWithTwoNumbers_ReturnsT() {
 | 
			
		||||
        String input = "(< 2 3)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testLesspWithManyNumbers_ReturnsNil() {
 | 
			
		||||
    public void lessThanWithManyNumbers_ReturnsNil() {
 | 
			
		||||
        String input = "(< 4 3 2 5 1)";
 | 
			
		||||
 | 
			
		||||
        assertNil(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testLesspWithManyNumbers_ReturnsT() {
 | 
			
		||||
    public void lessThanWithManyNumbers_ReturnsT() {
 | 
			
		||||
        String input = "(< 0 1 2 3 4)";
 | 
			
		||||
 | 
			
		||||
        assertT(evaluateString(input));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = BadArgumentTypeException.class)
 | 
			
		||||
    public void testLesspWithNonNumbers() {
 | 
			
		||||
    public void lessThanWithNonNumbers() {
 | 
			
		||||
        evaluateString("(< '(1) '(2))");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test(expected = TooFewArgumentsException.class)
 | 
			
		||||
    public void testLesspWithTooFewArguments() {
 | 
			
		||||
    public void lessThanWithTooFewArguments() {
 | 
			
		||||
        evaluateString("(<)");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user