refactor: cleanup EulersFunction (#5388)

This commit is contained in:
Alex Klymenko
2024-08-25 21:44:55 +02:00
committed by GitHub
parent f3851e3adc
commit 25b8010ea8
2 changed files with 35 additions and 33 deletions

View File

@ -3,37 +3,31 @@ package com.thealgorithms.others;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.HashMap;
import org.junit.jupiter.api.Test;
import java.util.stream.Stream;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
class EulersFunctionTest {
@Test
public void testGetEuler() {
HashMap<Integer, Integer> testCases = new HashMap<>();
testCases.put(1, 1);
testCases.put(2, 1);
testCases.put(3, 2);
testCases.put(4, 2);
testCases.put(5, 4);
testCases.put(6, 2);
testCases.put(10, 4);
testCases.put(21, 12);
testCases.put(69, 44);
testCases.put(47, 46);
testCases.put(46, 22);
testCases.put(55, 40);
testCases.put(34, 16);
testCases.put(20, 8);
testCases.put(20, 8);
testCases.put(1024, 512);
for (final var tc : testCases.entrySet()) {
assertEquals(tc.getValue(), EulersFunction.getEuler(tc.getKey()));
}
@ParameterizedTest
@MethodSource("provideNumbersForGetEuler")
void testGetEuler(int input, int expected) {
assertEquals(expected, EulersFunction.getEuler(input));
}
@Test
public void testGetEulerThrowsExceptionForNonPositiveInput() {
assertThrows(IllegalArgumentException.class, () -> EulersFunction.getEuler(0));
@ParameterizedTest
@MethodSource("provideInvalidNumbersForGetEuler")
void testGetEulerThrowsExceptionForNonPositiveInput(int input) {
assertThrows(IllegalArgumentException.class, () -> EulersFunction.getEuler(input));
}
private static Stream<Arguments> provideNumbersForGetEuler() {
return Stream.of(Arguments.of(1, 1), Arguments.of(2, 1), Arguments.of(3, 2), Arguments.of(4, 2), Arguments.of(5, 4), Arguments.of(6, 2), Arguments.of(10, 4), Arguments.of(21, 12), Arguments.of(69, 44), Arguments.of(47, 46), Arguments.of(46, 22), Arguments.of(55, 40), Arguments.of(34, 16),
Arguments.of(20, 8), Arguments.of(1024, 512));
}
private static Stream<Arguments> provideInvalidNumbersForGetEuler() {
return Stream.of(Arguments.of(0), Arguments.of(-1), Arguments.of(-10));
}
}