package function.builtin.math; import static testutil.TestUtilities.*; import org.junit.Test; import function.ArgumentValidator.*; import testutil.SymbolAndFunctionCleaner; public class DIVIDETest extends SymbolAndFunctionCleaner { @Test public void divideWithOne() { String input = "(/ 1)"; assertSExpressionsMatch(parseString("1"), evaluateString(input)); } @Test public void divideWithTwo() { String input = "(/ 2)"; assertSExpressionsMatch(parseString("0"), evaluateString(input)); } @Test public void divideTwoNumbers() { String input = "(/ 24 3)"; assertSExpressionsMatch(parseString("8"), evaluateString(input)); } @Test public void divideSeveralNumbers() { String input = "(/ 256 2 2 8)"; assertSExpressionsMatch(parseString("8"), evaluateString(input)); } @Test public void divideTwoNumbersWithRemainder() { String input = "(/ 9 2)"; assertSExpressionsMatch(parseString("4"), evaluateString(input)); } @Test public void divideSeveralNumbersWithRemainder() { String input = "(/ 19 2 5)"; assertSExpressionsMatch(parseString("1"), evaluateString(input)); } @Test(expected = BadArgumentTypeException.class) public void divideWithNonNumber() { evaluateString("(/ 'x)"); } @Test(expected = TooFewArgumentsException.class) public void divideWithTooFewArguments() { evaluateString("(/)"); } }