@Override protected FreqMap _apply(final FreqMap a, final FreqMap b) { for (final Entry<String, Long> entry : b.entrySet()) { if (a.containsKey(entry.getKey())) { a.put(entry.getKey(), a.get(entry.getKey()) + entry.getValue()); } else { a.put(entry.getKey(), entry.getValue()); } } return a; } }
@Test public void shouldNotMutateOriginalValue() { //given final Regex predicate = new Regex("^\\wo\\w$"); final FreqMapPredicator fRegexPredicator = new FreqMapPredicator(predicate); //when final FreqMap fRegex = fRegexPredicator.apply(freqMap); //then assertEquals(fRegex.size(), 2); assertTrue(fRegex.containsKey("cow")); assertTrue(fRegex.containsKey("dog")); assertEquals(freqMap.size(), 4); assertTrue(freqMap.containsKey("cat")); assertTrue(freqMap.containsKey("dog")); assertTrue(freqMap.containsKey("catdog")); assertTrue(freqMap.containsKey("cow")); }
@Test public void shouldFilterMapWithMultipleResults() { //given final Regex predicate = new Regex("^\\wo\\w$"); final FreqMapPredicator fRegexPredicator = new FreqMapPredicator(predicate); //when final FreqMap fRegex = fRegexPredicator.apply(freqMap); //then assertEquals(fRegex.size(), 2); assertTrue(fRegex.containsKey("cow")); assertTrue(fRegex.containsKey("dog")); }
@Test public void testUpsertOverloadedCreateDefaultValue() { //given final String key = "test"; final Long expected = 1L; //when freqMap.upsert(key); //then assertTrue(freqMap.containsKey(key)); assertEquals(freqMap.get(key), expected); }
@Test public void testUpsertCreatesNewKeyValue() { //given final String key = "test"; final Long value = 6L; //when freqMap.upsert(key, value); //then assertTrue(freqMap.containsKey(key)); assertEquals(value, freqMap.get(key)); }
@Test public void shouldSkipEntryWithNullValues() throws SerialisationException { // Given final FreqMap freqMap = new FreqMap(); freqMap.put("v", null); freqMap.put("w", 5L); freqMap.put("x", null); freqMap.put("y", 20L); freqMap.put("z", null); // When final byte[] serialised = serialiser.serialise(freqMap); final FreqMap deserialised = serialiser.deserialise(serialised); assertFalse(deserialised.containsKey("v")); assertEquals((Long) 5L, deserialised.get("w")); assertFalse(deserialised.containsKey("x")); assertEquals((Long) 20L, deserialised.get("y")); assertFalse(deserialised.containsKey("z")); }
@Test public void shouldFilterMapWithSingleResult() { //given final Regex predicate = new Regex("^c.*o.*g$"); final FreqMapPredicator fRegexPredicator = new FreqMapPredicator(predicate); //when final FreqMap fRegex = fRegexPredicator.apply(freqMap); //then assertEquals(fRegex.size(), 1); assertTrue(fRegex.containsKey("catdog")); }
@Test public void shouldSkipEntryWithNullKey() throws SerialisationException { // Given final FreqMap freqMap = new FreqMap(); freqMap.put(null, 10L); freqMap.put("y", 5L); freqMap.put("z", 20L); // When final byte[] serialised = serialiser.serialise(freqMap); final FreqMap deserialised = serialiser.deserialise(serialised); assertFalse(deserialised.containsKey("x")); assertEquals((Long) 5L, deserialised.get("y")); assertEquals((Long) 20L, deserialised.get("z")); }
@Override protected FreqMap _apply(final FreqMap a, final FreqMap b) { for (final Entry<String, Long> entry : b.entrySet()) { if (a.containsKey(entry.getKey())) { a.put(entry.getKey(), a.get(entry.getKey()) + entry.getValue()); } else { a.put(entry.getKey(), entry.getValue()); } } return a; } }