From 4b33771cb9010e7bf71fd8cefa93c56cc5c8f418 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Mon, 12 Jan 2026 01:49:57 +0530 Subject: [PATCH 1/8] Update tests bird watcher --- .../src/test/java/BirdWatcherTest.java | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java index 5b1746082..2542b7658 100644 --- a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java +++ b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java @@ -1,26 +1,27 @@ +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.BeforeEach; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; public class BirdWatcherTest { - private static final int DAY1 = 0; - private static final int DAY2 = 2; - private static final int DAY3 = 5; - private static final int DAY4 = 3; - private static final int DAY5 = 7; - private static final int DAY6 = 8; - private static final int TODAY = 4; + private static final int DAY1 = 7; + private static final int DAY2 = 0; + private static final int DAY3 = 4; + private static final int DAY4 = 8; + private static final int DAY5 = 5; + private static final int DAY6 = 2; + private static final int TODAY = 3; private BirdWatcher birdWatcher; - private final int[] lastWeek = {DAY1, DAY2, DAY3, DAY4, DAY5, DAY6, TODAY}; + private final int[] currentWeek = {DAY1, DAY2, DAY3, DAY4, DAY5, DAY6, TODAY}; + private final int[] lastWeek = {0, 2, 5, 3, 7, 8, 4}; @BeforeEach public void setUp() { - birdWatcher = new BirdWatcher(lastWeek); + birdWatcher = new BirdWatcher(currentWeek); } @Test @@ -28,7 +29,7 @@ public void setUp() { @DisplayName("The getLastWeek method correctly returns last week's counts") public void itTestGetLastWeek() { assertThat(birdWatcher.getLastWeek()) - .containsExactly(DAY1, DAY2, DAY3, DAY4, DAY5, DAY6, TODAY); + .isEqualTo(lastWeek); } @Test @@ -42,13 +43,16 @@ public void itTestGetToday() { @Tag("task:3") @DisplayName("The incrementTodaysCount method correctly increments today's counts") public void itIncrementTodaysCount() { + int firstSixDaysBeforeIncrement = birdWatcher.getCountForFirstDays(6); birdWatcher.incrementTodaysCount(); + int firstSixDaysAfterIncrement = birdWatcher.getCountForFirstDays(6); assertThat(birdWatcher.getToday()).isEqualTo(TODAY + 1); + assertThat(firstSixDaysAfterIncrement).isEqualTo(firstSixDaysBeforeIncrement); } @Test @Tag("task:4") - @DisplayName("The hasDayWithoutBirds method returns true when day had no visits") + @DisplayName("The hasDayWithoutBirds method returns true when at least one day had no visits") public void itHasDayWithoutBirds() { assertThat(birdWatcher.hasDayWithoutBirds()).isTrue(); } @@ -88,7 +92,7 @@ public void itTestGetCountForMoreDaysThanTheArraySize() { @Tag("task:6") @DisplayName("The getBusyDays method returns the correct count of busy days") public void itTestGetCountForBusyDays() { - // DAY3, DAY5 and DAY6 are all >= 5 birds + // DAY1, DAY4 and DAY5 are all >= 5 birds assertThat(birdWatcher.getBusyDays()).isEqualTo(3); } From a7cce70e1c1e48bd0a97b76e7a06ffdc149d6d6a Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sun, 18 Jan 2026 21:41:05 +0530 Subject: [PATCH 2/8] Add itIncrementDoesNotChangeCountForOtherDays test Added a test to verify that incrementTodaysCount does not affect counts for other days. --- .../bird-watcher/src/test/java/BirdWatcherTest.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java index 2542b7658..f01baa607 100644 --- a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java +++ b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java @@ -43,11 +43,16 @@ public void itTestGetToday() { @Tag("task:3") @DisplayName("The incrementTodaysCount method correctly increments today's counts") public void itIncrementTodaysCount() { - int firstSixDaysBeforeIncrement = birdWatcher.getCountForFirstDays(6); birdWatcher.incrementTodaysCount(); - int firstSixDaysAfterIncrement = birdWatcher.getCountForFirstDays(6); assertThat(birdWatcher.getToday()).isEqualTo(TODAY + 1); - assertThat(firstSixDaysAfterIncrement).isEqualTo(firstSixDaysBeforeIncrement); + } + + @Test + @Tag("task:3") + @DisplayName("The incrementTodaysCount does not change count for other days") + public void itIncrementDoesNotChangeCountForOtherDays() { + birdWatcher.incrementTodaysCount(); + assertThat(birdWatcher.getCountForFirstDays(6)).isEqualTo(DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6); } @Test From 1b9b968b0333ee0f3c7b436636d14a0a0048b2c8 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sun, 18 Jan 2026 21:50:29 +0530 Subject: [PATCH 3/8] Fix indentation --- .../concept/bird-watcher/src/test/java/BirdWatcherTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java index f01baa607..e02184507 100644 --- a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java +++ b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java @@ -51,8 +51,8 @@ public void itIncrementTodaysCount() { @Tag("task:3") @DisplayName("The incrementTodaysCount does not change count for other days") public void itIncrementDoesNotChangeCountForOtherDays() { - birdWatcher.incrementTodaysCount(); - assertThat(birdWatcher.getCountForFirstDays(6)).isEqualTo(DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6); + birdWatcher.incrementTodaysCount(); + assertThat(birdWatcher.getCountForFirstDays(6)).isEqualTo(DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6); } @Test From 596d751ac197a8f53f86059279a3fe2c7b34293f Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sat, 9 May 2026 01:46:51 +0530 Subject: [PATCH 4/8] Refactor BirdWatcherTest to use new array for each test --- .../src/test/java/BirdWatcherTest.java | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java index e02184507..ba8b7af4a 100644 --- a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java +++ b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java @@ -1,4 +1,3 @@ -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -7,58 +6,48 @@ public class BirdWatcherTest { - private static final int DAY1 = 7; - private static final int DAY2 = 0; - private static final int DAY3 = 4; - private static final int DAY4 = 8; - private static final int DAY5 = 5; - private static final int DAY6 = 2; - private static final int TODAY = 3; - - private BirdWatcher birdWatcher; - private final int[] currentWeek = {DAY1, DAY2, DAY3, DAY4, DAY5, DAY6, TODAY}; - private final int[] lastWeek = {0, 2, 5, 3, 7, 8, 4}; - - @BeforeEach - public void setUp() { - birdWatcher = new BirdWatcher(currentWeek); - } - @Test @Tag("task:1") @DisplayName("The getLastWeek method correctly returns last week's counts") public void itTestGetLastWeek() { - assertThat(birdWatcher.getLastWeek()) - .isEqualTo(lastWeek); + assertThat(BirdWatcher.getLastWeek()).isEqualTo(new int[] {0, 2, 5, 3, 7, 8, 4}); } @Test @Tag("task:2") @DisplayName("The getToday method correctly returns today's counts") public void itTestGetToday() { - assertThat(birdWatcher.getToday()).isEqualTo(TODAY); + int[] counts = new int[] {8, 8, 9, 5, 4, 7, 10}; + BirdWatched birdWatcher = new BirdWatcher(counts); + assertThat(birdWatcher.getToday()).isEqualTo(10); } @Test @Tag("task:3") @DisplayName("The incrementTodaysCount method correctly increments today's counts") public void itIncrementTodaysCount() { + int[] counts = new int[] {8, 8, 9, 2, 1, 6, 4}; + BirdWatched birdWatcher = new BirdWatcher(counts); birdWatcher.incrementTodaysCount(); - assertThat(birdWatcher.getToday()).isEqualTo(TODAY + 1); + assertThat(birdWatcher.getToday()).isEqualTo(5); } @Test @Tag("task:3") @DisplayName("The incrementTodaysCount does not change count for other days") public void itIncrementDoesNotChangeCountForOtherDays() { + int[] counts = new int[] {5, 1, 0, 4, 2, 3, 0}; + BirdWatched birdWatcher = new BirdWatcher(counts); birdWatcher.incrementTodaysCount(); - assertThat(birdWatcher.getCountForFirstDays(6)).isEqualTo(DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6); + assertThat(birdWatcher.getCountForFirstDays(6)).isEqualTo(15); } @Test @Tag("task:4") @DisplayName("The hasDayWithoutBirds method returns true when at least one day had no visits") public void itHasDayWithoutBirds() { + int[] counts = new int[] {5, 5, 4, 0, 7, 6, 7}; + BirdWatched birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.hasDayWithoutBirds()).isTrue(); } @@ -66,7 +55,8 @@ public void itHasDayWithoutBirds() { @Tag("task:4") @DisplayName("The hasDayWithoutBirds method returns false when no day had zero visits") public void itShouldNotHaveDaysWithoutBirds() { - birdWatcher = new BirdWatcher(new int[]{1, 2, 5, 3, 7, 8, 4}); + int[] counts = new int[] {4, 5, 9, 10, 9, 4, 3}; + BirdWatched birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.hasDayWithoutBirds()).isFalse(); } @@ -74,7 +64,8 @@ public void itShouldNotHaveDaysWithoutBirds() { @Tag("task:4") @DisplayName("The hasDayWithoutBirds method returns true if the last day has zero visits") public void itHasLastDayWithoutBirds() { - birdWatcher = new BirdWatcher(new int[]{1, 2, 5, 3, 7, 8, 0}); + int[] counts = new int[] {1, 2, 5, 3, 7, 8, 0}; + BirdWatched birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.hasDayWithoutBirds()).isTrue(); } @@ -82,30 +73,35 @@ public void itHasLastDayWithoutBirds() { @Tag("task:5") @DisplayName("The getCountForFirstDays method returns correct visits' count for given number of days") public void itTestGetCountForFirstDays() { - assertThat(birdWatcher.getCountForFirstDays(4)).isEqualTo(DAY1 + DAY2 + DAY3 + DAY4); + int[] counts = new int[] {5, 9, 12, 6, 8, 8, 17}; + BirdWatched birdWatcher = new BirdWatcher(counts); + assertThat(birdWatcher.getCountForFirstDays(4)).isEqualTo(32); } @Test @Tag("task:5") @DisplayName("The getCountForFirstDays method returns overall count when number of days is higher than array size") public void itTestGetCountForMoreDaysThanTheArraySize() { - assertThat(birdWatcher.getCountForFirstDays(10)) - .isEqualTo(DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6 + TODAY); + int[] counts = new int[] {5, 9, 12, 6, 8, 8, 17}; + BirdWatched birdWatcher = new BirdWatcher(counts); + assertThat(birdWatcher.getCountForFirstDays(65)).isEqualTo(); } @Test @Tag("task:6") @DisplayName("The getBusyDays method returns the correct count of busy days") public void itTestGetCountForBusyDays() { - // DAY1, DAY4 and DAY5 are all >= 5 birds - assertThat(birdWatcher.getBusyDays()).isEqualTo(3); + int[] counts = new int[] {4, 9, 5, 7, 8, 8, 2}; + BirdWatched birdWatcher = new BirdWatcher(counts); + assertThat(birdWatcher.getBusyDays()).isEqualTo(5); } @Test @Tag("task:6") @DisplayName("The getBusyDays method correctly returns zero in case of no busy days") public void itShouldNotHaveBusyDays() { - birdWatcher = new BirdWatcher(new int[]{1, 2, 3, 3, 2, 1, 4}); + int[] counts = new int[] {1, 2, 3, 3, 2, 1, 4}; + BirdWatched birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.getBusyDays()).isEqualTo(0); } } From b37271b5dbfcde105bbfab770f9646b2fd9e7f12 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sat, 9 May 2026 01:47:36 +0530 Subject: [PATCH 5/8] Change getLastWeek to static method --- exercises/concept/bird-watcher/src/main/java/BirdWatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/bird-watcher/src/main/java/BirdWatcher.java b/exercises/concept/bird-watcher/src/main/java/BirdWatcher.java index c19dd38e6..ccdd53ad2 100644 --- a/exercises/concept/bird-watcher/src/main/java/BirdWatcher.java +++ b/exercises/concept/bird-watcher/src/main/java/BirdWatcher.java @@ -6,7 +6,7 @@ public BirdWatcher(int[] birdsPerDay) { this.birdsPerDay = birdsPerDay.clone(); } - public int[] getLastWeek() { + public static int[] getLastWeek() { throw new UnsupportedOperationException("Please implement the BirdWatcher.getLastWeek() method"); } From 17088b2af1533ca430e44809cfcc596efe144530 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sat, 9 May 2026 01:48:32 +0530 Subject: [PATCH 6/8] Change getLastWeek to static method --- .../bird-watcher/.meta/src/reference/java/BirdWatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/bird-watcher/.meta/src/reference/java/BirdWatcher.java b/exercises/concept/bird-watcher/.meta/src/reference/java/BirdWatcher.java index 027e38a4c..e0884d13e 100644 --- a/exercises/concept/bird-watcher/.meta/src/reference/java/BirdWatcher.java +++ b/exercises/concept/bird-watcher/.meta/src/reference/java/BirdWatcher.java @@ -6,7 +6,7 @@ public BirdWatcher(int[] birdsPerDay) { this.birdsPerDay = birdsPerDay.clone(); } - public int[] getLastWeek() { + public static int[] getLastWeek() { return new int[] { 0, 2, 5, 3, 7, 8, 4 }; } From f89eb6744b64007403c70d93af45f672ce1b527d Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sat, 9 May 2026 01:50:09 +0530 Subject: [PATCH 7/8] Fix class name from BirdWatched to BirdWatcher --- .../src/test/java/BirdWatcherTest.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java index ba8b7af4a..cbb64f68e 100644 --- a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java +++ b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java @@ -18,7 +18,7 @@ public void itTestGetLastWeek() { @DisplayName("The getToday method correctly returns today's counts") public void itTestGetToday() { int[] counts = new int[] {8, 8, 9, 5, 4, 7, 10}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.getToday()).isEqualTo(10); } @@ -27,7 +27,7 @@ public void itTestGetToday() { @DisplayName("The incrementTodaysCount method correctly increments today's counts") public void itIncrementTodaysCount() { int[] counts = new int[] {8, 8, 9, 2, 1, 6, 4}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); birdWatcher.incrementTodaysCount(); assertThat(birdWatcher.getToday()).isEqualTo(5); } @@ -37,7 +37,7 @@ public void itIncrementTodaysCount() { @DisplayName("The incrementTodaysCount does not change count for other days") public void itIncrementDoesNotChangeCountForOtherDays() { int[] counts = new int[] {5, 1, 0, 4, 2, 3, 0}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); birdWatcher.incrementTodaysCount(); assertThat(birdWatcher.getCountForFirstDays(6)).isEqualTo(15); } @@ -47,7 +47,7 @@ public void itIncrementDoesNotChangeCountForOtherDays() { @DisplayName("The hasDayWithoutBirds method returns true when at least one day had no visits") public void itHasDayWithoutBirds() { int[] counts = new int[] {5, 5, 4, 0, 7, 6, 7}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.hasDayWithoutBirds()).isTrue(); } @@ -56,7 +56,7 @@ public void itHasDayWithoutBirds() { @DisplayName("The hasDayWithoutBirds method returns false when no day had zero visits") public void itShouldNotHaveDaysWithoutBirds() { int[] counts = new int[] {4, 5, 9, 10, 9, 4, 3}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.hasDayWithoutBirds()).isFalse(); } @@ -65,7 +65,7 @@ public void itShouldNotHaveDaysWithoutBirds() { @DisplayName("The hasDayWithoutBirds method returns true if the last day has zero visits") public void itHasLastDayWithoutBirds() { int[] counts = new int[] {1, 2, 5, 3, 7, 8, 0}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.hasDayWithoutBirds()).isTrue(); } @@ -74,7 +74,7 @@ public void itHasLastDayWithoutBirds() { @DisplayName("The getCountForFirstDays method returns correct visits' count for given number of days") public void itTestGetCountForFirstDays() { int[] counts = new int[] {5, 9, 12, 6, 8, 8, 17}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.getCountForFirstDays(4)).isEqualTo(32); } @@ -83,7 +83,7 @@ public void itTestGetCountForFirstDays() { @DisplayName("The getCountForFirstDays method returns overall count when number of days is higher than array size") public void itTestGetCountForMoreDaysThanTheArraySize() { int[] counts = new int[] {5, 9, 12, 6, 8, 8, 17}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.getCountForFirstDays(65)).isEqualTo(); } @@ -92,7 +92,7 @@ public void itTestGetCountForMoreDaysThanTheArraySize() { @DisplayName("The getBusyDays method returns the correct count of busy days") public void itTestGetCountForBusyDays() { int[] counts = new int[] {4, 9, 5, 7, 8, 8, 2}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.getBusyDays()).isEqualTo(5); } @@ -101,7 +101,7 @@ public void itTestGetCountForBusyDays() { @DisplayName("The getBusyDays method correctly returns zero in case of no busy days") public void itShouldNotHaveBusyDays() { int[] counts = new int[] {1, 2, 3, 3, 2, 1, 4}; - BirdWatched birdWatcher = new BirdWatcher(counts); + BirdWatcher birdWatcher = new BirdWatcher(counts); assertThat(birdWatcher.getBusyDays()).isEqualTo(0); } } From 3a1f2f2e7d44cd6d563e7e9fbdd699d73a99dd4f Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Sat, 9 May 2026 01:51:31 +0530 Subject: [PATCH 8/8] Fix assertion in getCountForFirstDays test --- .../concept/bird-watcher/src/test/java/BirdWatcherTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java index cbb64f68e..a811bf54a 100644 --- a/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java +++ b/exercises/concept/bird-watcher/src/test/java/BirdWatcherTest.java @@ -84,7 +84,7 @@ public void itTestGetCountForFirstDays() { public void itTestGetCountForMoreDaysThanTheArraySize() { int[] counts = new int[] {5, 9, 12, 6, 8, 8, 17}; BirdWatcher birdWatcher = new BirdWatcher(counts); - assertThat(birdWatcher.getCountForFirstDays(65)).isEqualTo(); + assertThat(birdWatcher.getCountForFirstDays(10)).isEqualTo(65); } @Test