From eb31a43df723520597a92ea4835963db3944273c Mon Sep 17 00:00:00 2001
From: Thomas Fabre <tfabre@takima.fr>
Date: Fri, 23 Jun 2023 13:31:54 +0200
Subject: [PATCH] Refactor fours with Roll and generify summing method

---
 src/main/java/io/takima/Yatzy.java     | 23 ++++++++++-------------
 src/test/java/io/takima/YatzyTest.java |  6 +++---
 2 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/src/main/java/io/takima/Yatzy.java b/src/main/java/io/takima/Yatzy.java
index 55ae70c..cabdd3f 100644
--- a/src/main/java/io/takima/Yatzy.java
+++ b/src/main/java/io/takima/Yatzy.java
@@ -19,16 +19,23 @@ public final class Yatzy {
         return 0;
     }
 
+    private static int sumDiceThatMatchWithValue(Roll roll, int value) {
+        return roll.toStream().filter(dice -> dice == value).sum();
+    }
     public static int ones(Roll roll) {
-        return roll.toStream().filter(dice -> dice == 1).sum();
+        return sumDiceThatMatchWithValue(roll, 1);
     }
 
     public static int twos(Roll roll) {
-        return roll.toStream().filter(dice -> dice == 2).sum();
+        return sumDiceThatMatchWithValue(roll, 2);
     }
 
     public static int threes(Roll roll) {
-        return roll.toStream().filter(dice -> dice == 3).sum();
+        return sumDiceThatMatchWithValue(roll, 3);
+    }
+
+    public static int fours(Roll roll) {
+        return sumDiceThatMatchWithValue(roll, 4);
     }
 
     public static int pair(int d1, int d2, int d3, int d4, int d5) {
@@ -168,16 +175,6 @@ public final class Yatzy {
             return 0;
     }
 
-    public int fours() {
-        int sum = 0;
-        for (int at = 0; at != 5; at++) {
-            if (dice[at] == 4) {
-                sum += 4;
-            }
-        }
-        return sum;
-    }
-
     public int fives() {
         int s = 0;
         for (int i = 0; i < dice.length; i++) {
diff --git a/src/test/java/io/takima/YatzyTest.java b/src/test/java/io/takima/YatzyTest.java
index bfcd597..707d73a 100644
--- a/src/test/java/io/takima/YatzyTest.java
+++ b/src/test/java/io/takima/YatzyTest.java
@@ -57,9 +57,9 @@ class YatzyTest {
     @Test
     void foursShouldSumAllFourDices() {
         assertAll(
-            () -> assertEquals(12, new Yatzy(4, 4, 4, 5, 5).fours()),
-            () -> assertEquals(8, new Yatzy(4, 4, 5, 5, 5).fours()),
-            () -> assertEquals(4, new Yatzy(4, 5, 5, 5, 5).fours())
+            () -> assertEquals(12, Yatzy.fours(roll(4, 4, 4, 5, 5))),
+            () -> assertEquals(8, Yatzy.fours(roll(4, 4, 5, 5, 5))),
+            () -> assertEquals(4, Yatzy.fours(roll(4, 5, 5, 5, 5)))
         );
     }
 
-- 
GitLab