top10: 1.3.0 - Refined input JSON to match the new general stats-format
[demos/kafka/wordcount] / src / test / java / de / juplo / kafka / wordcount / top10 / RankingTest.java
index e92d87c..0f36860 100644 (file)
@@ -108,7 +108,7 @@ public class RankingTest
             Stream.of(highestEntry),
             VALID_RANKINGS[0]
                 .stream()
-                .filter(entry -> !entry.getWord().equals(word)))
+                .filter(entry -> !entry.getKey().equals(word)))
         .toList();
     assertThat(ranking.getEntries()).containsExactlyElementsOf(expectedEntries);
   }
@@ -134,7 +134,53 @@ public class RankingTest
     Ranking ranking = Ranking.of(toArray(entryList));
     entryList.forEach(entry ->
       assertThatExceptionOfType(IllegalArgumentException.class)
-          .isThrownBy(() -> ranking.add(Entry.of(entry.getWord(), entry.getCounter() - 1))));
+          .isThrownBy(() -> ranking.add(Entry.of(entry.getKey(), entry.getCounter() - 1))));
+  }
+
+  @DisplayName("Identical rankings are considered equal")
+  @ParameterizedTest
+  @MethodSource("validRankingsProvider")
+  public void testIdenticalRankingsAreConsideredEaqual(List<Entry> entryList)
+  {
+    assertThat(Ranking.of(toArray(entryList))).isEqualTo(Ranking.of(toArray(entryList)));
+  }
+
+  @DisplayName("Two empty rankings are considered equal")
+  @Test
+  public void testTwoEmptyRankingsAreConsideredEaqual()
+  {
+    assertThat(Ranking.of()).isEqualTo(Ranking.of());
+  }
+
+  @DisplayName("A changed ranking is not considered equal to its unchanged counter-part")
+  @ParameterizedTest
+  @MethodSource("validRankingsProvider")
+  public void testChangedRankingsDoNotEaqualUnchangedOne(List<Entry> entryList)
+  {
+    Ranking changed = Ranking.of(toArray(entryList));
+    changed.add(Entry.of("devilish", 666l));
+    assertThat(changed).isNotEqualTo(Ranking.of(toArray(entryList)));
+  }
+
+  @DisplayName("Rankigs are considered equal, if only the order of words with the same count differ")
+  @Test
+  public void testRankingWithDifferentOrderForSameCountAreEqual()
+  {
+    assertThat(
+        Ranking.of(
+            Entry.of("a1",10l),
+            Entry.of("a2",10l),
+            Entry.of("b1", 9l),
+            Entry.of("b2",9l),
+            Entry.of("c1", 8l),
+            Entry.of("c2", 8l)))
+        .isEqualTo(Ranking.of(
+            Entry.of("a2",10l),
+            Entry.of("a1",10l),
+            Entry.of("b2", 9l),
+            Entry.of("b1",9l),
+            Entry.of("c2", 8l),
+            Entry.of("c1", 8l)));
   }