From 53161f6b35f44ae9c53a08dc09207931708ceab9 Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Wed, 25 Sep 2024 23:39:37 -0300 Subject: [PATCH] [REFACTOR] [Hacker Rank]: Project Euler #2: Even Fibonacci numbers. Load test cases from JSON. --- .../hackerrank/projecteuler/Euler002Test.java | 50 +++++++++++++------ .../projecteuler/euler002.testcases.json | 4 ++ 2 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler002.testcases.json diff --git a/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler002Test.java b/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler002Test.java index 2ab5cb4..5b4e663 100644 --- a/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler002Test.java +++ b/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler002Test.java @@ -2,25 +2,47 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import util.JsonLoader; +@TestInstance(Lifecycle.PER_CLASS) class Euler002Test { - @ParameterizedTest - @CsvSource({ - "10, 10, Sample Test case 0 -> 1", - "100, 44, Sample Test case 0 -> 2", - }) - void euler001( - int n, - long answer, - String testCase) { + public static class Euler002TestCase { + public Integer n; + public Long expected; + } + + private List testCases; + + @BeforeAll + public void setup() throws IOException { + String path = String.join("/", + "hackerrank", + "projecteuler", + "euler002.testcases.json"); + + this.testCases = JsonLoader.loadJson(path, Euler002TestCase.class); + } + + @Test void euler002() { - Long solutionFound = Euler002.euler002(n); + for (Euler002TestCase test : testCases) { + Long solutionFound = Euler002.euler002(test.n); - String log = String.format("Problem 002 %s answer must be: %d", testCase, answer); - assertEquals(answer, solutionFound, log); + assertEquals(test.expected, solutionFound, + "%s(%d) => must be: %s".formatted( + "Euler002.euler002", + test.n, + test.expected + ) + ); + } } } diff --git a/algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler002.testcases.json b/algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler002.testcases.json new file mode 100644 index 0000000..5af57f0 --- /dev/null +++ b/algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler002.testcases.json @@ -0,0 +1,4 @@ +[ + { "n": 10, "expected": 10 }, + { "n": 100, "expected": 44 } +]