@Test public void addAllIterable() { // Add an arbitrary iterable that isn't a collection or ArrayTagSet Collection<Tag> tags = Collections.singletonList(new BasicTag("app", "foo")); ArrayTagSet ts = ArrayTagSet.EMPTY.addAll(tags::iterator); Assertions.assertEquals(ArrayTagSet.EMPTY.addAll(tags), ts); }
@Test public void testMergeMultipleValuesAsMap() { Map<String, String> extra = new HashMap<>(); ArrayTagSet initial = ArrayTagSet.create("k3", "v3"); ArrayTagSet expected = ArrayTagSet.create("k1", "v1") .addAll(ArrayTagSet.create("k2", "v2")) .addAll(ArrayTagSet.create("k3", "v3")); extra.put("k1", "v1"); extra.put("k2", "v2"); ArrayTagSet actual = initial.addAll(extra); Assertions.assertEquals(expected, actual); }
@Test public void testMergeSingleValueAsMap() { Map<String, String> extra = new HashMap<>(); ArrayTagSet initial = ArrayTagSet.create("k3", "v3"); ArrayTagSet expected = ArrayTagSet.create("k1", "v1").addAll(ArrayTagSet.create("k3", "v3")); extra.put("k1", "v1"); ArrayTagSet actual = initial.addAll(extra); Assertions.assertEquals(expected, actual); }
@Test public void addAllTagArrayEmpty() { ArrayTagSet ts = ArrayTagSet.EMPTY.addAll(new Tag[0]); Assertions.assertSame(ArrayTagSet.EMPTY, ts); }
@Test public void addAllStringArrayEmpty() { ArrayTagSet ts = ArrayTagSet.EMPTY.addAll(new String[0]); Assertions.assertSame(ArrayTagSet.EMPTY, ts); }
@Test public void testMergeMultipleValuesAsList() { ArrayList<Tag> prefix = new ArrayList<>(); ArrayTagSet initial = ArrayTagSet.create("k3", "v3"); ArrayTagSet expected = ArrayTagSet.create("k1", "v1") .addAll(ArrayTagSet.create("k2", "v2")) .addAll(ArrayTagSet.create("k3", "v3")); prefix.add(new BasicTag("k1", "v1")); prefix.add(new BasicTag("k2", "v2")); ArrayTagSet actual = initial.addAll(prefix); Assertions.assertEquals(expected, actual); }
@Test public void testMergeSingleValueAsList() { ArrayList<Tag> prefix = new ArrayList<>(); ArrayTagSet initial = ArrayTagSet.create("k3", "v3"); ArrayTagSet expected = ArrayTagSet.create("k1", "v1").addAll(ArrayTagSet.create("k3", "v3")); prefix.add(new BasicTag("k1", "v1")); ArrayTagSet actual = initial.addAll(prefix); Assertions.assertEquals(expected, actual); }
@Test public void testMergeEmptyMap() { ArrayTagSet expected = ArrayTagSet.create("k3", "v3"); ArrayTagSet actual = expected.addAll(new HashMap<>()); Assertions.assertSame(expected, actual); }
@Test public void testMergeEmptyList() { ArrayTagSet expected = ArrayTagSet.create("k3", "v3"); ArrayTagSet actual = expected.addAll(new ArrayList<>()); Assertions.assertSame(expected, actual); }
@Test public void testCreateFromMultiValueMap() { Map<String, String> tags = new HashMap<>(); tags.put("k1", "v1"); tags.put("k2", "v2"); Assertions.assertEquals(ArrayTagSet.create("k1", "v1") .addAll(ArrayTagSet.create("k2", "v2")), ArrayTagSet.create(tags)); }
@Test public void testCreateFromMapWithMultipleValues() { Map<String, String> m = new HashMap<>(); m.put("k1", "v1"); m.put("k2", "v2"); ArrayTagSet ts1 = ArrayTagSet.create(m); ArrayTagSet ts2 = ArrayTagSet.create("k1", "v1").addAll(ArrayTagSet.create("k2", "v2")); Assertions.assertEquals(ts1, ts2); }
@Test public void testMergeNullMap() { Assertions.assertThrows(NullPointerException.class, () -> { ArrayTagSet expected = ArrayTagSet.create("k3", "v3"); expected.addAll((Map<String, String>) null); }); }
@Test public void testMergeNullList() { Assertions.assertThrows(NullPointerException.class, () -> { ArrayTagSet expected = ArrayTagSet.create("k3", "v3"); expected.addAll((Iterable<Tag>) null); }); }
@Test public void addAllDedupMerge() { ArrayTagSet ts = ArrayTagSet.EMPTY .addAll(new String[] {"a", "1", "a", "2", "a", "3"}) .addAll(new String[] {"a", "4", "a", "5", "a", "6", "b", "1"}); ArrayTagSet expected = ArrayTagSet.EMPTY .add(new BasicTag("a", "6")) .add(new BasicTag("b", "1")); Assertions.assertEquals(expected, ts); } }
@Test public void testCreateFromMultiValueIterable() { List<Tag> coll = new ArrayList<>(); coll.add(new BasicTag("k1", "v1")); coll.add(new BasicTag("k2", "v2")); ArrayTagSet ts1 = ArrayTagSet.create(coll); ArrayTagSet ts2 = ArrayTagSet.create("k1", "v1").addAll(ArrayTagSet.create("k2", "v2")); Assertions.assertEquals(ts1, ts2); }
@Test public void addAllDedupEmpty() { ArrayTagSet ts = ArrayTagSet.EMPTY.addAll(new String[] {"a", "1", "a", "2", "a", "3"}); Assertions.assertEquals(ArrayTagSet.EMPTY.add(new BasicTag("a", "3")), ts); }
@Test public void testToString() { ArrayTagSet ts1 = ArrayTagSet.create("k1", "v1"); ArrayTagSet ts2 = ArrayTagSet.create("k2", "v2").addAll(ts1); ArrayTagSet ts3 = ArrayTagSet.create("k3", "v3").addAll(ts2); Assertions.assertEquals(":k1=v1", ts1.toString()); Assertions.assertEquals(":k1=v1:k2=v2", ts2.toString()); Assertions.assertEquals(":k1=v1:k2=v2:k3=v3", ts3.toString()); }
@Test public void testMergeTagWithSameKey() { ArrayTagSet initial = ArrayTagSet.create("k1", "v1"); ArrayTagSet expected = ArrayTagSet.create("k1", "v2"); ArrayTagSet actual = initial.addAll(expected); Assertions.assertNotSame(expected, actual); Assertions.assertEquals(expected, actual); }
@Test public void equalsContractTest() { ArrayTagSet ts1 = ArrayTagSet.create("k1", "v1"); ArrayTagSet ts2 = ArrayTagSet.create("k2", "v2").addAll(ts1); EqualsVerifier .forClass(DefaultId.class) .withPrefabValues(ArrayTagSet.class, ts1, ts2) .suppress(Warning.NULL_FIELDS) .verify(); }