private List<Object> createItems() { List<Object> items = new ArrayList<>(ReplacementUtils.DEFAULT_MAX_NUMBER_OF_PRINTED_ITEMS * 2); for (int i = 0; i < ReplacementUtils.DEFAULT_MAX_NUMBER_OF_PRINTED_ITEMS * 2; i++) { items.add(buildPropertyValue(i)); } return items; }
@Test public void replaceWithMoreThanMaxItems() { List<Object> items = createItems(); Collection<String> replacements = ReplacementUtils.replaceWith(PROPERTY_NAME, items); validateReplacementsContainsExpectedProperties(replacements, items); validateReplacementsDoNotContainUnexpectedItems(replacements, items); }
private <T> void validateReplacements(Collection<String> replacements, List<T> items) { validateReplacementsContainsExpectedProperties(replacements, items); assertTrue(validateReplacementContains(replacements, PROPERTY_VALUE)); }
@Test public void replaceWithCustomSeparator() { List<Object> items = createItems(); String separator = ","; Collection<String> replacements = ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator); assertTrue(validateReplacementElementCount(replacements, separator, ReplacementUtils.DEFAULT_MAX_NUMBER_OF_PRINTED_ITEMS)); }
@Test public void separatorNotEmpty() { List<Object> items = createItems(); String separator = ""; assertThrows(IllegalArgumentException.class, () -> ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator , 5)); }
@Test public void replaceWithSingleItem() { List<Object> items = Collections.singletonList(PROPERTY_VALUE); validateReplacements(ReplacementUtils.replaceWith(PROPERTY_NAME, items), items); }
private <T> void validateReplacementsContainsExpectedProperties(Collection<String> replacements, List<T> items) { assertNotNull(replacements); assertEquals(2, replacements.size()); assertTrue(validateReplacementContains(replacements, "$" + PROPERTY_NAME + " ")); assertTrue(validateReplacementContains(replacements, "$" + PROPERTY_COUNTER_NAME + " ")); assertTrue(validateReplacementContains(replacements, String.valueOf(items.size()))); }
@Test public void replaceWithEmptyCollection() { Collection<String> replacements = ReplacementUtils.replaceWith(PROPERTY_NAME, Collections.emptyList()); validateReplacementsContainsExpectedProperties(replacements, Collections.emptyList()); }
@Test public void containBiggerThanDefaultNumberOfElements() { List<Object> items = createItems(); String separator = "sep"; // More than the default number of elements to show. int numOfElementsToShow = 8; Collection<String> replacements = ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator , numOfElementsToShow); assertTrue(validateReplacementElementCount(replacements, separator, numOfElementsToShow)); }
@Test public void failZeroValuesToShow() { List<Object> items = createItems(); String separator = ", "; assertThrows(IllegalArgumentException.class, () -> ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator , 0)); }
@Test public void replaceWithNameableCollection() { Nameable item = () -> PROPERTY_VALUE; List<Nameable> items = Collections.singletonList(item); validateReplacements(ReplacementUtils.replaceWithNameable(PROPERTY_NAME, items), items); }
@Test public void containLowerThanDefaultNumberOfElements() { List<Object> items = createItems(); String separator = "sep"; // Less than the default number of elements to show. int numOfElementsToShow = 3; Collection<String> replacements = ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator , numOfElementsToShow); assertTrue(validateReplacementElementCount(replacements, separator, numOfElementsToShow)); }
@Test public void replaceWithNullItem() { List<Object> items = Collections.singletonList(null); Collection<String> replacements = ReplacementUtils.replaceWith(PROPERTY_NAME, items); validateReplacementsContainsExpectedProperties(replacements, items); assertTrue(validateReplacementContains(replacements, "null")); }
@Test public void failNegativeNumOfValuesToShow() { List<Object> items = createItems(); String separator = ", "; assertThrows(IllegalArgumentException.class, () -> ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator , -5)); }
private void validateReplacementsDoNotContainUnexpectedItems(Collection<String> replacements, List<Object> items) { for (String replacement : replacements) { for (int i = ReplacementUtils.DEFAULT_MAX_NUMBER_OF_PRINTED_ITEMS; i < items.size(); i++) { assertFalse(replacement.contains(buildPropertyValue(i))); } } }
@Test public void separatorNotNull() { List<Object> items = createItems(); String separator = null; assertThrows(IllegalArgumentException.class, () -> ReplacementUtils.replaceWith(PROPERTY_NAME, items, separator, 5)); }