diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorDisplay.java b/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorDisplay.java index 8c2621d..ca2252c 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorDisplay.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorDisplay.java @@ -15,10 +15,10 @@ public static void menuOption1() { System.out.println("Here are some Scientific Functions. \nSine() \nCosine() \nTangent()"); break; case "3": - String userInput = Console.getStringInput("Time for some math? \n ( Y / N )"); - if(userInput.equalsIgnoreCase("Y")) { - break outerLoop; - } + String userInput = Console.getStringInput("Time for some math? \n ( Y / N )"); + if (userInput.equalsIgnoreCase("Y")) { + break outerLoop; + } break; default: Console.println("[ %s ] is not a valid input!", prompt); diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorEngine.java b/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorEngine.java index 315d5b4..c83459f 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorEngine.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/CalculatorEngine.java @@ -5,21 +5,57 @@ public class CalculatorEngine { private static Double value; public static Double sum(Double firstNum, Double secondNum) { - value = firstNum + secondNum; - return value; + return firstNum + secondNum; } + public static Double subtract(Double firstNum, Double secondNum) { - value = firstNum - secondNum; - return value; + return firstNum - secondNum; } public static Double divide(Double firstNum, Double secondNum) { - value = firstNum / secondNum; - return value; + return firstNum / secondNum; } public static Double multiply(Double firstNum, Double secondNum) { - value = firstNum * secondNum; + return firstNum * secondNum; + } + + public static Double squareRoot(Double firstNum){ + double s; + double value = firstNum / 2; + do { + s = value; + value = (s +(firstNum / s)) / 2; + } + while ((s - value) != 0); return value; } -} + + public static Double square(Double firstNum){ + return firstNum * firstNum; + } + + public static Double squareY(Double firstNum, Double secondNum) { + return Math.pow(firstNum, secondNum); + + } + + public static Double squareRootY(Double firstNum, Double secondNum){ + double xPre = Math.random() % 10; + double eps = 0.001; + double delX = 2147483647; + double xK = 0.00; + double A = firstNum; + double N = secondNum; + + + while (delX > eps){ + xK = ((N - 1.0) * xPre + A / Math.pow(xPre, N - 1)) / N; + delX = Math.abs(xK - xPre); + xPre = xK; + } + double value = Math.round(xK * 1000.00) / 1000.00; + return value; + } + + } diff --git a/src/test/java/com/zipcodewilmington/scientific_calculator/CalculatorEngineTest.java b/src/test/java/com/zipcodewilmington/scientific_calculator/CalculatorEngineTest.java index 7875439..fd83f0f 100644 --- a/src/test/java/com/zipcodewilmington/scientific_calculator/CalculatorEngineTest.java +++ b/src/test/java/com/zipcodewilmington/scientific_calculator/CalculatorEngineTest.java @@ -4,6 +4,8 @@ import org.junit.Assert; import org.junit.Test; +import static com.sun.tools.doclint.Entity.divide; +import static com.zipcodewilmington.scientificcalculator.CalculatorEngine.*; public class CalculatorEngineTest { @@ -11,10 +13,10 @@ public class CalculatorEngineTest { @Test public void testSum1() { // Given - CalculatorEngine calculatorEngine = new CalculatorEngine(); + CalculatorEngine CalculatorEngine = new CalculatorEngine(); // When Double result; - result = calculatorEngine.sum(2.00, 2.00); + result = CalculatorEngine.sum(2.00, 2.00); // Then if (result != 4.00) { // if 2 + 2 != 4 Assert.fail(); @@ -23,10 +25,10 @@ public void testSum1() { @Test public void testSum2() { // Given - CalculatorEngine calculatorEngine = new CalculatorEngine(); + CalculatorEngine CalculatorEngine = new CalculatorEngine(); // When Double result; - result = calculatorEngine.sum(1200.00, 500.00); + result = CalculatorEngine.sum(1200.00, 500.00); // Then if (result != 1700.00) { // if 1200 + 500 != 1700 Assert.fail(); @@ -59,38 +61,72 @@ public void testSubtract2() { @Test public void testDivide1() { - CalculatorEngine calculatorEngine = new CalculatorEngine(); - Double result; - result = calculatorEngine.divide(6.00, 3.00); - if (result != 2.00); { - } + Double expected = 100.00; + Double firstNum = 1000.00; + Double secondNum = 10.00; + Double actual = CalculatorEngine.divide(firstNum, secondNum); + Assert.assertEquals(expected, actual); } @Test public void testDivide2() { - CalculatorEngine calculatorEngine = new CalculatorEngine(); - Double result; - result = calculatorEngine.divide(33.33, 11.11); - if (result != 3.00); { - } + Double expected = 4.00; + Double firstNum = 20.00; + Double secondNum = 5.00; + Double actual = CalculatorEngine.divide(firstNum, secondNum); + Assert.assertEquals(expected, actual); } @Test public void testMultiply1() { - CalculatorEngine calculatorEngine = new CalculatorEngine(); - Double result; - result = calculatorEngine.multiply(5.00, 20.00); - if (result != 100.00); { + Double expected = 100.00; + Double firstNum = 20.00; + Double secondNum = 5.00; + Double actual = multiply(firstNum, secondNum); + Assert.assertEquals(expected, actual); } - } + @Test public void testMultiply2() { - CalculatorEngine calculatorEngine = new CalculatorEngine(); - Double result; - result = calculatorEngine.multiply(7.00, 20.00); - if (result != 140.00); { - } + Double expected = 4.00; + Double firstNum = 2.00; + Double secondNum = 2.0; + Double actual = multiply(firstNum, secondNum); + Assert.assertEquals(expected, actual); + } + + @Test + public void testSquareRoot(){ + Double expected = 2.00; + Double firstNum = 4.00; + Double actual = squareRoot(firstNum); + Assert.assertEquals(expected, actual); + } + + @Test + public void testSquare(){ + Double expected = 16.00; + Double firstNum = 4.00; + Double actual = square(firstNum); + Assert.assertEquals(expected, actual); + } + @Test + public void testSquareY(){ + Double expected = 7776.00; + Double firstNum = 6.00; + Double secondNumb = 5.00; + Double actual = CalculatorEngine.squareY(firstNum, secondNumb); + Assert.assertEquals(expected, actual); + } + + @Test + public void testSquareRootY(){ + Double expected = 1.431; + Double firstNum = 6.00; + Double secondNumb = 5.00; + Double actual = CalculatorEngine.squareRootY(firstNum, secondNumb); + Assert.assertEquals(expected, actual); } }