From 914b31717f1fb5b57476be8a2ef812a482bdbaae Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Thu, 26 Sep 2024 10:52:39 -0300 Subject: [PATCH 1/2] [REFACTOR] [Hacker Rank]: Project Euler #1: Multiples of 3 and 5. Load test cases from JSON. --- .../hackerrank/projecteuler/Euler001Test.java | 63 ++++++++++++------- .../projecteuler/euler001.testcases.json | 6 ++ 2 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler001.testcases.json diff --git a/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler001Test.java b/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler001Test.java index 786cc3d..19f7117 100644 --- a/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler001Test.java +++ b/algorithm-exercises-java/src/test/java/ae/hackerrank/projecteuler/Euler001Test.java @@ -2,31 +2,48 @@ 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 Euler001Test { + + public static class Euler001TestCase { + public Integer a; + public Integer b; + public Integer n; + public Long expected; + } + private List testCases; -class Euler001Test { + @BeforeAll + public void setup() throws IOException { + String path = String.join("/", + "hackerrank", + "projecteuler", + "euler001.testcases.json"); + + this.testCases = JsonLoader.loadJson(path, Euler001TestCase.class); + } + + @Test void euler001() { + + for (Euler001TestCase test : testCases) { + Long solutionFound = Euler001.euler001(test.a, test.b, test.n); - @ParameterizedTest - @CsvSource({ - "3, 5, 10, 23, Test Case 1", - "3, 5, 100, 2318, Test Case 2", - "3, 5, 1000, 233168, Test Case 3" - }) - void euler001( - int a, - int b, - int n, - long answer, - String testCase) { - - Long solutionFound = Euler001.euler001(a, b, n); - - String log = String.format("Problem 001 solved: %s. Answer must be %s", - testCase, - answer); - - assertEquals(answer, solutionFound, log); + assertEquals(test.expected, solutionFound, + "%s(%d, %d, %d) => must be: %s".formatted( + "Euler001.euler001", + test.a, test.b, test.n, + test.expected + ) + ); + } } } diff --git a/algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler001.testcases.json b/algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler001.testcases.json new file mode 100644 index 0000000..2021998 --- /dev/null +++ b/algorithm-exercises-java/src/test/resources/hackerrank/projecteuler/euler001.testcases.json @@ -0,0 +1,6 @@ +[ + { "a": 3, "b": 5, "n": 10, "expected": 23 }, + { "a": 5, "b": 3, "n": 10, "expected": 23 }, + { "a": 3, "b": 5, "n": 100, "expected": 2318 }, + { "a": 3, "b": 5, "n": 1000, "expected": 233168 } +] From 8f263df6b12de7640635bad295aba709daf40596 Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Thu, 26 Sep 2024 11:02:23 -0300 Subject: [PATCH 2/2] [CONFIG] [Github Actions] Docker flow, GITHUB_TOKEN env added. https://github.com/aquasecurity/trivy-action/issues/389#issuecomment-2371607148 --- .github/workflows/docker-image.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 425ef09..dae9cf8 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -189,6 +189,8 @@ jobs: uses: github/codeql-action/upload-sarif@v3 with: sarif_file: 'trivy-results.sarif' + env: + ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }} report: name: "Trivy (report)" @@ -211,3 +213,5 @@ jobs: with: image-ref: ${{ env.IMAGE_NAME }}:${{ github.sha }} format: 'table' + env: + ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }}