Added tests for FactorialRecursion
(#5109)
* Added tests for `FactorialRecursion` * Apply suggestions from code review Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com> --------- Co-authored-by: Maria Paszkiewicz SCC <maria.paszkiewicz@kit.edu> Co-authored-by: Piotr Idzik <65706193+vil02@users.noreply.github.com>
This commit is contained in:
parent
05626f7a79
commit
8129686e2e
@ -1,16 +1,8 @@
|
|||||||
package com.thealgorithms.maths;
|
package com.thealgorithms.maths;
|
||||||
|
|
||||||
public class FactorialRecursion {
|
public final class FactorialRecursion {
|
||||||
|
private FactorialRecursion() {
|
||||||
/* Driver Code */
|
|
||||||
public static void main(String[] args) {
|
|
||||||
assert factorial(0) == 1;
|
|
||||||
assert factorial(1) == 1;
|
|
||||||
assert factorial(2) == 2;
|
|
||||||
assert factorial(3) == 6;
|
|
||||||
assert factorial(5) == 120;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recursive FactorialRecursion Method
|
* Recursive FactorialRecursion Method
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.thealgorithms.maths;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
|
||||||
|
public class FactorialRecursionTest {
|
||||||
|
@ParameterizedTest
|
||||||
|
@MethodSource("inputStream")
|
||||||
|
void testFactorialRecursion(long expected, int number) {
|
||||||
|
assertEquals(expected, FactorialRecursion.factorial(number));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Stream<Arguments> inputStream() {
|
||||||
|
return Stream.of(Arguments.of(1, 0), Arguments.of(1, 1), Arguments.of(2, 2), Arguments.of(6, 3), Arguments.of(120, 5));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testThrowsForNegativeInput() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> FactorialRecursion.factorial(-1));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user