/** * Creates a matcher that matches if the examined {@link DisplayData.Item} contains a path * matching the specified namespace. */ public static Matcher<DisplayData.Item> hasPath(String... paths) { DisplayData.Path path = (paths.length == 0) ? DisplayData.Path.root() : DisplayData.Path.absolute(paths[0], Arrays.copyOfRange(paths, 1, paths.length)); return new FeatureMatcher<DisplayData.Item, DisplayData.Path>( is(path), " with namespace", "namespace") { @Override protected DisplayData.Path featureValueOf(DisplayData.Item actual) { return actual.getPath(); } }; }
private DisplayDataComparison checkSubset( DisplayData displayData, DisplayData included, String path) { DisplayDataComparison comparison = new DisplayDataComparison(displayData.items()); for (Item item : included.items()) { Item matchedItem = displayData .asMap() .get( DisplayData.Identifier.of( DisplayData.Path.absolute(path), item.getNamespace(), item.getKey())); if (matchedItem != null) { comparison.matched(matchedItem); } else { comparison.missing(item); } } return comparison; }
@Test public void testIdentifierEquality() { new EqualsTester() .addEqualityGroup( DisplayData.Identifier.of(DisplayData.Path.absolute("a"), DisplayDataTest.class, "1"), DisplayData.Identifier.of(DisplayData.Path.absolute("a"), DisplayDataTest.class, "1")) .addEqualityGroup( DisplayData.Identifier.of(DisplayData.Path.absolute("b"), DisplayDataTest.class, "1")) .addEqualityGroup( DisplayData.Identifier.of(DisplayData.Path.absolute("a"), Object.class, "1")) .addEqualityGroup( DisplayData.Identifier.of(DisplayData.Path.absolute("a"), DisplayDataTest.class, "2")) .testEquals(); }
@Test public void testAbsolute() { DisplayData.Path path = DisplayData.Path.absolute("a", "b", "c"); assertThat(path.getComponents(), hasItems("a", "b", "c")); }
@Test public void testPathEquality() { new EqualsTester() .addEqualityGroup(DisplayData.Path.root(), DisplayData.Path.root()) .addEqualityGroup(DisplayData.Path.root().extend("a"), DisplayData.Path.absolute("a")) .addEqualityGroup( DisplayData.Path.root().extend("a").extend("b"), DisplayData.Path.absolute("a", "b")) .testEquals(); }
@Test public void testAbsoluteValidationEmptySubsequentPath() { thrown.expect(IllegalArgumentException.class); DisplayData.Path.absolute("a", "b", "", "c"); }
@Test public void testAbsoluteValidationEmptyFirstPath() { thrown.expect(IllegalArgumentException.class); DisplayData.Path.absolute("", "foo", "bar"); }
@Test public void testAbsoluteValidationNullFirstPath() { thrown.expect(NullPointerException.class); DisplayData.Path.absolute(null, "foo", "bar"); }
@Test public void testAbsoluteValidationNullSubsequentPath() { thrown.expect(NullPointerException.class); DisplayData.Path.absolute("a", "b", null, "c"); }