This is the JUnit 5 solution to cover all kinds of inputs provided to find the factorial of a given number. This Unit test executes tests for the ‘RdInput’ function available in the class ‘FactorialOfNumJ8’.
package pack1;
import java.math.BigInteger;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
class JUnitTestFactorialOfNumJ8 {
FactorialOfNum_Using_CoreLogic FNUCL;
FactorialOfNum_Using_Recursion FNUR;
FactorialOfNum_Using_Stream FNUS;
@BeforeEach
void setUp() throws Exception {
FNUCL = new FactorialOfNum_Using_CoreLogic();
FNUR = new FactorialOfNum_Using_Recursion();
FNUS = new FactorialOfNum_Using_Stream();
}
@Test
@DisplayName("Positive inputs - Exp value and Actual matches")
void test1() {
Assertions.assertEquals(new BigInteger("3628800"), FNUCL.RdInput(BigInteger.valueOf(10)));
Assertions.assertEquals(new BigInteger("1307674368000"), FNUR.RdInput(BigInteger.valueOf(15)));
Assertions.assertEquals(new BigInteger("121645100408832000"), FNUS.RdInput(BigInteger.valueOf(19)));
}
@Test
@DisplayName("Positive inputs - Exp value and Actual matches")
void test2() {
Assertions.assertTrue(FNUCL.RdInput(BigInteger.valueOf(8)).compareTo(new BigInteger("40320")) == 0);
Assertions.assertTrue(FNUR.RdInput(BigInteger.valueOf(13)).compareTo(new BigInteger("6227020800")) == 0);
Assertions.assertTrue(FNUS.RdInput(BigInteger.valueOf(17)).compareTo(new BigInteger("355687428096000")) == 0);
}
@Test
@DisplayName("Negative inputs - Exp value and Actual not matches")
void test3() {
Assertions.assertNotEquals(new BigInteger("548800"), FNUCL.RdInput(BigInteger.valueOf(10)));
Assertions.assertNotEquals(new BigInteger("654674368000"), FNUR.RdInput(BigInteger.valueOf(15)));
Assertions.assertNotEquals(new BigInteger("76545100408832000"), FNUS.RdInput(BigInteger.valueOf(19)));
}
@Test
@DisplayName("Negative inputs - Exp value and Actual not matches")
void test4() {
Assertions.assertFalse(FNUCL.RdInput(BigInteger.valueOf(8)).compareTo(new BigInteger("54205")) == 0);
Assertions.assertFalse(FNUR.RdInput(BigInteger.valueOf(13)).compareTo(new BigInteger("67020800")) == 0);
Assertions.assertFalse(FNUS.RdInput(BigInteger.valueOf(17)).compareTo(new BigInteger("5653487428096000")) == 0);
}
@Test
@DisplayName("Null inputs - Factorial of Null not exits")
void test5() {
Assertions.assertEquals(new BigInteger("-1"), FNUCL.RdInput(null));
Assertions.assertEquals(new BigInteger("-1"), FNUR.RdInput(null));
Assertions.assertEquals(new BigInteger("-1"), FNUS.RdInput(null));
}
}
Output:
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_CoreLogic RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_CoreLogic'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 10 is 3628800
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Recursion RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Recursion'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 15 is 1307674368000
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Stream RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Stream'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 19 is 121645100408832000
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_CoreLogic RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_CoreLogic'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 8 is 40320
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Recursion RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Recursion'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 13 is 6227020800
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Stream RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Stream'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 17 is 355687428096000
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_CoreLogic RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_CoreLogic'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 10 is 3628800
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Recursion RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Recursion'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 15 is 1307674368000
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Stream RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Stream'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 19 is 121645100408832000
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_CoreLogic RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_CoreLogic'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 8 is 40320
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Recursion RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Recursion'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 13 is 6227020800
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Stream RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Stream'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: The provided Input validated Successfully
Factorial of 17 is 355687428096000
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_CoreLogic RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_CoreLogic'
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_CoreLogic RdInput
INFO: The given Input number is null
Factorial of Null not exits
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Recursion RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Recursion'
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Recursion RdInput
INFO: The given Input number is null
Factorial of Null not exits
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Stream RdInput
INFO: This method 'RdInput' called from the Class 'pack1.JUnitTestFactorialOfNumJ8'
Mar 31, 2023 9:41:57 PM pack1.NumberInput validateInputs
INFO: This method 'validateInputs()' called from the Class 'pack1.FactorialOfNum_Using_Stream'
Mar 31, 2023 9:41:57 PM pack1.FactorialOfNum_Using_Stream RdInput
INFO: The given Input number is null
Factorial of Null not exits


Leave a comment