diff --git a/README.md b/README.md index 8402302c..e4f516f5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,14 @@ -# ScientificCalculator (maven) ZCW +======= +#Team Members +teAM MEMBER +Keerthana + +# com.zipcodewilmington.scientificcalculator.ScientificCalculator (maven) ZCW ## Description -In this project your team will build a small app to function as a calculator. This app will be built in Java, and will use the topics and techniques discussed during the week. +In this project your team will build a small app to function as a calculator. This app will be built in Java, and will use the topics and techniques discussed during the week.. Your team should work on this project in a single repository. Click the `fork` button in the top right corner to create a copy of this repository in one of your github accounts. You can go through the [GitHub forking tutorial](https://help.github.com/articles/fork-a-repo/) if you need additional practice with this. diff --git a/Untitled Diagram.drawio b/Untitled Diagram.drawio new file mode 100644 index 00000000..f94661ad --- /dev/null +++ b/Untitled Diagram.drawio @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index e7cb4f6b..d8cd763e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,14 @@ com.zipcodewilmington scientific_calculator 1.0-SNAPSHOT + + + junit + junit + 4.12 + test + + \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/BasicCalculator.java b/src/main/java/com/zipcodewilmington/scientificcalculator/BasicCalculator.java new file mode 100644 index 00000000..69f1427c --- /dev/null +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/BasicCalculator.java @@ -0,0 +1,60 @@ +package com.zipcodewilmington.scientificcalculator; + +public class BasicCalculator { + + private Double result; + + public BasicCalculator(){ + result = 0.0; + } + + public Double add(double num1, double num2){ + result = num1 + num2; + return result; + } + + public Double subtract(double num1, double num2){ + result = num1 - num2; + return result; + } + + public Double multiply(double num1, double num2){ + result = num1 * num2; + return result; + } + + public Double divide(double num1, double num2){ + result = num1 / num2; + return result; + } + + public Double squareRoot(Double num1) { + result = Math.sqrt(num1); + return result; + } + + public Double square(Double num1) { + result = Math.pow(num1, 2); + return result; + } + + public Double exponentiation(Double num1, Double num2) { + result = Math.pow(num1, num2); + return result; + } + + public Double inverse(Double num1) { + result = 1 / num1; + return result; + } + + public Double invertNumber(Double num1) { + result = -1 * num1; + return result; + } + + public Double percentage(Double num1) { + result = num1 / 100; + return result; + } +} diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java index 83f0e97f..29f74846 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Console.java @@ -7,6 +7,12 @@ */ public class Console { + private static int displayMode; + + public static void setDisplayMode(int givenDisplayMode) { + displayMode = givenDisplayMode; + } + public static void print(String output, Object... args) { System.out.printf(output, args); } @@ -15,6 +21,18 @@ public static void println(String output, Object... args) { print(output + "\n", args); } + public static void displayValue(String currentValue) { + Console.println(">>>>>>>> Display Value: %s <<<<<<<<<< \n", currentValue); + } + + public static void displayValue(double currentValue) { + Console.println(">>>>>>>> Display Value (in %s): %s <<<<<<<<<< \n", getDisplayMode(), applyDisplayMode(currentValue, displayMode)); + } + + public static void displayValue(double currentValue, String unitMode) { + Console.println(">>>>>>>> Display Value (Mode: %s): %s <<<<<<<<<< \n", unitMode, currentValue); + } + public static String getStringInput(String prompt) { Scanner scanner = new Scanner(System.in); println(prompt); @@ -22,11 +40,106 @@ public static String getStringInput(String prompt) { return userInput; } - public static Integer getIntegerInput(String prompt) { - return null; + public static Integer getIntegerInput(String prompt, int rangeStart, int rangeStop) { + + Scanner scanner = new Scanner(System.in); + println(prompt); + Integer inputValue = 0; + + while (true) { + try { + inputValue = Integer.valueOf(scanner.nextLine()); + if (inputValue >= rangeStart && inputValue <= rangeStop) { + break; + } + else { + println("Invalid Choice!"); + println(prompt); + } + } + catch(Exception e) { + println("Invalid Integer Number!"); + println(prompt); + } + } + + return inputValue; } public static Double getDoubleInput(String prompt) { - return null; + + Scanner scanner = new Scanner(System.in); + println(prompt + " (in %s): ", getDisplayMode()); + Double inputValue = 0.0; + + while (true) { + try { + inputValue = Double.valueOf(applyDisplayMode(scanner.nextLine(), displayMode)); + break; + } + catch(Exception e) { + println("Invalid Input!"); + println(prompt + "( in %s): ", getDisplayMode()); + } + } + + return inputValue; + } + + public static String applyDisplayMode(double currentValue, int displayMode) { + String output = null; + switch (displayMode) { + case 1: + output = String.valueOf(currentValue); + break; + case 2: + output = Integer.toBinaryString((int) Math.round(currentValue)); + break; + case 3: + output = Integer.toOctalString((int) Math.round(currentValue)); + break; + case 4: + output = Integer.toHexString((int) Math.round(currentValue)); + break; + } + return output; + } + + public static Integer applyDisplayMode(String inputValue, int displayMode) { + Integer output = null; + switch (displayMode) { + case 1: + output = Integer.parseInt(inputValue, 10); + break; + case 2: + output = Integer.parseInt(inputValue, 2); + break; + case 3: + output = Integer.parseInt(inputValue, 8); + break; + case 4: + output = Integer.parseInt(inputValue, 16); + break; + } + return output; + } + + public static String getDisplayMode() { + String displayModeValue = null; + switch (displayMode) { + case 1: + displayModeValue = "Decimal"; + break; + case 2: + displayModeValue = "Binary"; + break; + case 3: + displayModeValue = "Octal"; + break; + case 4: + displayModeValue = "HexaDecimal"; + break; + } + return displayModeValue; } } diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/Fibonacci.java b/src/main/java/com/zipcodewilmington/scientificcalculator/Fibonacci.java new file mode 100644 index 00000000..5addbc18 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/Fibonacci.java @@ -0,0 +1,19 @@ +package com.zipcodewilmington.scientificcalculator; + +public class Fibonacci { + + public static String fibonacci(Double num1){ + Double maxNumber = num1; + Integer previousNumber = 0; + Integer nextNumber = 1; + String fiboString = ""; + + for (int i = 1; i <= maxNumber; i++){ + fiboString += " " + previousNumber; + int sum = previousNumber + nextNumber; + previousNumber = nextNumber; + nextNumber = sum; + } + return fiboString; + } +} diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java index 5f421325..fda7bc8e 100644 --- a/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/MainApplication.java @@ -4,14 +4,256 @@ * Created by leon on 2/9/18. */ public class MainApplication { + + private double currentValue; + private int calculatorType; + + // Initialize all required fields + private BasicCalculator basicCalc; + private ScFunction scientificCalc; + private Fibonacci fibo; + + public MainApplication() { + basicCalc = new BasicCalculator(); + scientificCalc = new ScFunction(); + fibo = new Fibonacci(); + currentValue = 0.0; + Console.setDisplayMode(1); + } + public static void main(String[] args) { - Console.println("Welcome to my calculator!"); - String s = Console.getStringInput("Enter a string"); - Integer i = Console.getIntegerInput("Enter an integer"); - Double d = Console.getDoubleInput("Enter a double."); - - Console.println("The user input %s as a string", s); - Console.println("The user input %s as a integer", i); - Console.println("The user input %s as a d", d); + + MainApplication mainApplication = new MainApplication(); + mainApplication.runCalculator(); + } + + private void runCalculator() { + + // Print Welcome Note + Console.println("Welcome to Our Calculator!"); + + // Get Calculator Type + + calculatorType = Console.getIntegerInput("Please select between 1) Basic Calculator and 2) Scientific Calculator", 1, 2); + + // Get First Number to start + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + + // Creating infinite loop until user choose to exit + while (true) { + + try { + + if (calculatorType == 1) { + int choice = runBasicCalculator(); + if (choice == 14) { + break; + } + } else { + int choice = runScientificCalculator(); + if (choice == 17) { + break; + } + } + } catch (Exception e) { + Console.displayValue("Err"); + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + } + } + Console.println("Exit! Thank you"); + } + + private int runBasicCalculator() { + + double operandValue = 0; + int choice = Console.getIntegerInput("Please select from the options below\n " + + "1) Add \n " + + "2) Subtract\n " + + "3) Multiply \n " + + "4) Division\n " + + "5) Exponential\n" + + "6) Square\n" + + "7) SquareRoot\n" + + "8) Inverse\n" + + "9) Invert\n" + + "10) Percentage\n" + + "11) Switch to Scientific Calculator\n" + + "12) Switch to Display Mode\n" + + "13) Clear\n" + + "14) Exit", 1, 14); + + if (choice >= 1 && choice <= 5) { + operandValue = Console.getDoubleInput("Please enter the operand number"); + } + + switch (choice) { + case 1: + currentValue = basicCalc.add(currentValue, operandValue); + Console.displayValue(currentValue); + break; + case 2: + currentValue = basicCalc.subtract(currentValue, operandValue); + Console.displayValue(currentValue); + break; + case 3: + currentValue = basicCalc.multiply(currentValue, operandValue); + Console.displayValue(currentValue); + break; + case 4: + currentValue = basicCalc.divide(currentValue, operandValue); + if (Double.isInfinite(currentValue)) { + Console.displayValue("Err"); + currentValue = Console.getDoubleInput("Please enter the number"); + } + Console.displayValue(currentValue); + break; + case 5: + currentValue = basicCalc.exponentiation(currentValue, operandValue); + Console.displayValue(currentValue); + break; + case 6: + currentValue = basicCalc.square(currentValue); + Console.displayValue(currentValue); + break; + case 7: + currentValue = basicCalc.squareRoot(currentValue); + Console.displayValue(currentValue); + break; + case 8: + currentValue = basicCalc.inverse(currentValue); + Console.displayValue(currentValue); + break; + case 9: + currentValue = basicCalc.invertNumber(currentValue); + Console.displayValue(currentValue); + break; + case 10: + currentValue = basicCalc.percentage(currentValue); + Console.displayValue(currentValue); + break; + case 11: + calculatorType = 2; + Console.println("Switching to Scientific Calculator"); + Console.setDisplayMode(1); + Console.displayValue(currentValue); + break; + case 12: + Console.println("Switching to Display Mode"); + int displayMode = Console.getIntegerInput("Please select display mode\n 1) Decimal\n 2) Binary\n 3) Octal\n 4) HexaDecimal", 1, 4); + Console.setDisplayMode(displayMode); + Console.displayValue(currentValue); + break; + case 13: + currentValue = 0.0; + Console.displayValue(currentValue); + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + break; + } + + return choice; + } + + private int runScientificCalculator() { + + int choice = Console.getIntegerInput("Please select from the options below\n " + + "1) natural log\n" + + "2) base log\n" + + "3) inverse log\n" + + "4) change sign\n" + + "5) sine\n" + + "6) cos\n" + + "7) tan\n" + + "8) inverseCosine\n" + + "9) inverseTangent\n" + + "10) inverseSine\n" + + "11) factorial\n" + + "12) fibonacci\n" + + "13) Switch Unit Mode\n" + + "14) Choose Unit Mode\n" + + "15) Switch to Basic Calculator\n" + + "16) Enter New Number\n" + + "17) Exit", 1, 21); + + + switch (choice) { + case 1: + currentValue = scientificCalc.inverseNaturalLog(currentValue); + Console.displayValue(currentValue); + break; + case 2: + currentValue = scientificCalc.log(currentValue); + Console.displayValue(currentValue); + break; + case 3: + currentValue = scientificCalc.inverseLog(currentValue); + Console.displayValue(currentValue); + break; + case 4: + currentValue = scientificCalc.changesign(currentValue); + Console.displayValue(currentValue); + break; + case 5: + currentValue = scientificCalc.sin(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + break; + case 6: + currentValue = scientificCalc.cosine(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + break; + case 7: + currentValue = scientificCalc.tangent(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + break; + case 8: + currentValue = scientificCalc.inverseCosine(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + break; + case 9: + currentValue = scientificCalc.inverseTangent(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + break; + case 10: + currentValue = scientificCalc.inverseSin(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + break; + case 11: + currentValue = scientificCalc.factorial(currentValue); + Console.displayValue(currentValue); + break; + case 12: + String result = fibo.fibonacci(currentValue); + Console.displayValue(result); + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + break; + case 13: + scientificCalc.switchUnitMode(); + scientificCalc.applyUnitMode(currentValue); + Console.displayValue(currentValue, scientificCalc.getUnitMode()); + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + break; + case 14: + int choosenUnitMode = Console.getIntegerInput("Please select unit mode\n 1) Degree\n 2) Radian\n", 1, 2); + scientificCalc.setUnitMode(choosenUnitMode); + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + break; + case 15: + calculatorType = 1; + Console.setDisplayMode(1); + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + break; + case 16: + currentValue = Console.getDoubleInput("Please enter the number"); + Console.displayValue(currentValue); + break; + } + + return choice; } -} +} \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/scientificcalculator/ScFunction.java b/src/main/java/com/zipcodewilmington/scientificcalculator/ScFunction.java new file mode 100644 index 00000000..dfa028c7 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/scientificcalculator/ScFunction.java @@ -0,0 +1,144 @@ +package com.zipcodewilmington.scientificcalculator; + +public class ScFunction { + + private Double result; + + // 1 for degree & 2 for radian + private int unitsMode; + + public ScFunction() { + result = 0.0; // constructor to initialize variable + unitsMode = 1; + } + + public double sin(double num1) { + result = Math.sin(num1); + result = applyUnitMode(result); + return result; + // this works + } + + public double cosine(double num1) { + result = Math.cos(num1); + result = applyUnitMode(result); + return result; + // this works + } + + + public double tangent(double num1) { + result = Math.tan(num1); + result = applyUnitMode(result); + return result; + // this works + } + + + public double inverseSin(double num1) { + result = Math.asin(num1); + result = applyUnitMode(result); + return result; + // this works + // num1 NEEDS TO BE BETWEEN -1 AND 1 otherwise NaN. + } + + + public double inverseCosine(double num1) { + result = Math.acos(num1); + result = applyUnitMode(result); + return result; + // this works + // num1 NEEDS TO BE BETWEEN -1 AND 1 otherwise NaN + } + + + public double inverseTangent(double num1) { + result = Math.atan(num1); + result = applyUnitMode(result); + return result; + // this works + // no input restrictions + } + + + public double log(double num1) { + result = Math.log(num1); + return result; + // need to revisit--not sure + } + + + public double inverseLog(double num1) { + result = Math.exp(Math.pow(10, num1)); + return result; + // inputs are traditionally known as x and y + // needs two inputs + } + + public double inverseNaturalLog(double num1) { + result = Math.pow(Math.E, num1); + return result; + + } + + public double changesign(double num1) { + // Implement change sign + return num1; + } + + public double rad(double num1){ + result = Math.toRadians(num1); + return result; + } + + public double degree(double num1){ + result = Math.toDegrees(num1); + return result; + } + + //Fibonacci has own class + + + //Factorial + public Double factorial(Double num1) { + if (num1 == 0) + return 1.00; + else + return (num1 * factorial(num1 - 1)); + } + + public Double applyUnitMode(Double result) { + + if (unitsMode == 2) { + result = Math.toRadians(result); + } + return result; + } + + public void switchUnitMode() { + + if (unitsMode == 1) { + unitsMode = 2; + Console.println("Switched Unit Mode from Degree to Radian"); + } else { + unitsMode = 1; + Console.println("Switched Unit Mode from Radian to Degree"); + } + } + + public void setUnitMode(int givenUnitMode) { + + unitsMode = givenUnitMode; + } + + public String getUnitMode() { + if (unitsMode == 1) { + return "Degree"; + } else { + return "Radian"; + } + } +} + + diff --git a/src/test/java/com/zipcodewilmington/scientific_calculator/TestScCalculator.java b/src/test/java/com/zipcodewilmington/scientific_calculator/TestScCalculator.java new file mode 100644 index 00000000..615113a4 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/scientific_calculator/TestScCalculator.java @@ -0,0 +1,315 @@ +package com.zipcodewilmington.scientific_calculator; + + +import com.zipcodewilmington.scientificcalculator.BasicCalculator; +import com.zipcodewilmington.scientificcalculator.Console; +import com.zipcodewilmington.scientificcalculator.Fibonacci; +import com.zipcodewilmington.scientificcalculator.ScFunction; +import org.junit.Assert; + +import org.junit.Test; + +public class TestScCalculator { + + + + Fibonacci fibo = new Fibonacci(); + ScFunction scientificCal = new ScFunction(); + BasicCalculator basicCalc = new BasicCalculator(); + @Test + public void positiveintegerAdderTest() { + Double assumed = 2.; + + Double actual = basicCalc.add(1,1); + Assert.assertEquals(assumed, actual); + } + + @Test + public void NegativeIntegerAdderTest() { + Double assumed = -200.; + Double actual = basicCalc.add(0., -200.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SubtractionTestPositiveReturn() { + Double assumed = 3.; + Double actual = basicCalc.subtract(5., 2.); + Assert.assertEquals(assumed, actual); + + } + + @Test + public void SubtractionTestZeroReturn() { + Double assumed = 0.; + Double actual = basicCalc.subtract(3., 3.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SubtractionTestNegativeReturn() { + Double assumed = -1.; + Double actual = basicCalc.subtract(5., 6.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void MultiplicationPositiveReturn() { + Double assumed = 40.; + Double actual = basicCalc.multiply(20., 2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void MultiplicationZeroReturn() { + Double assumed = 0.; + Double actual = basicCalc.multiply(0., 5.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void MultiplicationNegativeReturn() { + Double assumed = -9.; + Double actual = basicCalc.multiply(-3., 3.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void MultiplicationBothNegativeNumbers() { + Double assumed = 9.; + Double actual = basicCalc.multiply(-3., -3.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void DivisionPositiveReturnWholeNumber() { + Double assumed = 10.; + Double actual = basicCalc.divide(20., 2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void DivisionPositiveReturnDecimal() { + Double assumed = 2.5; + Double actual = basicCalc.divide(5., 2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void squareRootReturnPositiveWholeNumber() { + Double assumed = 4.; + Double actual = basicCalc.squareRoot(16.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void squareRootReturnPositiveDecimal() { + Double assumed = 4.358898943540674; + Double actual = basicCalc.squareRoot(19.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SquareReturnPositiveWholeNumber() { + Double assumed = 100.; + Double actual = basicCalc.square(10.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SquareReturnNegativeWholeNumber() { + Double assumed = 25.; + Double actual = basicCalc.square(-5.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SquareReturnPositiveDecimal() { + Double assumed = 42.25; + Double actual = basicCalc.square(6.5); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SquareReturnNegativeDecimal() { + Double assumed = 30.25; + Double actual = basicCalc.square(-5.5); + Assert.assertEquals(assumed, actual); + } + + + + @Test + public void SinePositiveNumber() { + Double assumed = 0.9129452507276277; + Double actual = scientificCal.sin(20.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SineNegativeNumber() { + Double assumed = 0.5365729180004349; + Double actual = scientificCal.sin(-12.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void SineZeroNumber() { + Double assumed = 0.; + Double actual = scientificCal.sin(0.); + Assert.assertEquals(assumed, actual); + } + + + @Test + public void CosineNegativeNumber() { + Double assumed = -0.7596879128588213; + Double actual = scientificCal.cosine(-15.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void CosinePositiveNumber() { + Double assumed = -0.7596879128588213; + Double actual = scientificCal.cosine(-15.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void CosineZeroNumber() { + Double assumed = 1.; + Double actual = scientificCal.cosine(0.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void TangentZeroNumber() { + Double assumed = 0.; + Double actual = scientificCal.tangent(0.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void TangentPositiveNumber() { + Double assumed = -0.8559934009085188; + Double actual = scientificCal.tangent(15.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void TangentNegativeNumber() { + Double assumed = 0.8559934009085188; + Double actual = scientificCal.tangent(-15.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ExponentPositiveNumbers() { + Double assumed = 4.; + Double actual = basicCalc.exponentiation(2., 2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ExponentNegativeNumbers() { + Double assumed = 4.; + Double actual = basicCalc.exponentiation(-2., 2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ExponentNegativeExponentPositiveNumber() { + Double assumed = 0.0625; + Double actual = basicCalc.exponentiation(4., -2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ExponentNegativeExponentNegativeNumber() { + Double assumed = 0.0625; + Double actual = basicCalc.exponentiation(-4., -2.); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ExponentZeroPositiveNumber() { + Double assumed = 1.; + Double actual = basicCalc.exponentiation(2., .0); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ExponentZeroZeroNumber() { + Double assumed = 1.; + Double actual = basicCalc.exponentiation(0., .0); + Assert.assertEquals(assumed, actual); + } + @Test + public void Factorial(){ + Double assumed = 120.; + Double actual = scientificCal.factorial(5.); + Assert.assertEquals(assumed, actual); + } + @Test + public void Fibonacci(){ + String assumed = " 0 1 1 2 3"; + String actual = fibo.fibonacci(5.); + Assert.assertEquals(assumed, actual); + + } + @Test + public void Fibonacci2(){ + String assumed = " 0 1 1 2 3 5 8"; + String actual = fibo.fibonacci(7.); + Assert.assertEquals(assumed, actual); + + } + @Test + public void Fibonacci3BigNumber(){ + String assumed = " 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269"; + String actual = fibo.fibonacci(32.); + Assert.assertEquals(assumed, actual); + + } + @Test + public void ConvertToBinary() { + String assumed = "10100"; + String actual = Console.applyDisplayMode(20, 2); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ConvertToBinary2(){ + String assumed = "11111010000"; + String actual = Console.applyDisplayMode(2000, 2); + Assert.assertEquals(assumed, actual); + } + + @Test + public void ConvertToOctal(){ + String assumed = "12"; + String actual = Console.applyDisplayMode(10, 3); + Assert.assertEquals(assumed, actual); + } + @Test + public void ConvertToOctal2(){ + String assumed = "764"; + String actual = Console.applyDisplayMode(500, 3); + Assert.assertEquals(assumed, actual); + } + + @Test // Need to Fix this test + public void ConvertToHex(){ + String assumed = "b"; + String actual = Console.applyDisplayMode(11, 4); + Assert.assertEquals(assumed, actual); + } + @Test + public void ConvertToHex2(){ + String assumed = "9e"; + String actual = Console.applyDisplayMode(158.0, 4); + Assert.assertEquals(assumed, actual); + } + } + +