/** * Creates a matcher that matches if the examined {@link DisplayData.Item} contains the specified * namespace. */ public static Matcher<DisplayData.Item> hasNamespace(Class<?> namespace) { return hasNamespace(Matchers.<Class<?>>is(namespace)); }
@Test public void testContextProperlyReset() { final HasDisplayData subComponent = new HasDisplayData() { @Override public void populateDisplayData(DisplayData.Builder builder) { builder.add(DisplayData.item("foo", "bar")); } }; HasDisplayData component = new HasDisplayData() { @Override public void populateDisplayData(DisplayData.Builder builder) { builder.include("p", subComponent).add(DisplayData.item("alpha", "bravo")); } }; DisplayData data = DisplayData.from(component); assertThat(data.items(), hasItem(allOf(hasKey("alpha"), hasNamespace(component.getClass())))); }
@Test public void testDisplayDataExcludedFromOverriddenBaseClass() { ExtendsBaseOptions options = PipelineOptionsFactory.as(ExtendsBaseOptions.class); options.setFoo("bar"); DisplayData displayData = DisplayData.from(options); assertThat(displayData, not(hasDisplayItem(hasNamespace(BaseOptions.class)))); }
@Test public void testDisplayDataIncludedForDisjointInterfaceHierarchies() { FooOptions fooOptions = PipelineOptionsFactory.as(FooOptions.class); fooOptions.setFoo("foo"); BarOptions barOptions = fooOptions.as(BarOptions.class); barOptions.setBar("bar"); DisplayData data = DisplayData.from(barOptions); assertThat(data, hasDisplayItem(allOf(hasKey("foo"), hasNamespace(FooOptions.class)))); assertThat(data, hasDisplayItem(allOf(hasKey("bar"), hasNamespace(BarOptions.class)))); }
@Test public void testDisplayDataForWrappedFn() { UniqueInts combineFn = new UniqueInts() { @Override public void populateDisplayData(DisplayData.Builder builder) { builder.add(DisplayData.item("foo", "bar")); } }; Combine.PerKey<?, ?, ?> combine = Combine.perKey(combineFn); DisplayData displayData = DisplayData.from(combine); assertThat(displayData, hasDisplayItem("combineFn", combineFn.getClass())); assertThat(displayData, hasDisplayItem(hasNamespace(combineFn.getClass()))); }
data, hasDisplayItem( allOf(hasKey("wrappedKey"), hasNamespace(wrapped.getClass()), hasPath(/* root */ )))); assertThat( data, hasDisplayItem( allOf(hasKey("subCompKey"), hasNamespace(subcomponent.getClass()), hasPath("p"))));
@Test public void testHasNamespace() { Matcher<DisplayData> matcher = hasDisplayItem(hasNamespace(SampleTransform.class)); assertFalse( matcher.matches( DisplayData.from( new PTransform<PCollection<String>, PCollection<String>>() { @Override public PCollection<String> expand(PCollection<String> input) { throw new IllegalArgumentException("Should never be applied"); } }))); assertThat(createDisplayDataWithItem("foo", "bar"), matcher); }
@Test public void testItemProperties() { final Instant value = Instant.now(); DisplayData data = DisplayData.from( new HasDisplayData() { @Override public void populateDisplayData(DisplayData.Builder builder) { builder.add( DisplayData.item("now", value) .withLabel("the current instant") .withLinkUrl("http://time.gov") .withNamespace(DisplayDataTest.class)); } }); @SuppressWarnings("unchecked") DisplayData.Item item = (DisplayData.Item) data.items().toArray()[0]; @SuppressWarnings("unchecked") Matcher<Item> matchesAllOf = allOf( hasNamespace(DisplayDataTest.class), hasKey("now"), hasType(DisplayData.Type.TIMESTAMP), hasValue(ISO_FORMATTER.print(value)), hasShortValue(nullValue(String.class)), hasLabel("the current instant"), hasUrl(is("http://time.gov"))); assertThat(item, matchesAllOf); }
@Test public void testDisplayDataInheritanceNamespace() { ExtendsBaseOptions options = PipelineOptionsFactory.as(ExtendsBaseOptions.class); options.setFoo("bar"); DisplayData displayData = DisplayData.from(options); assertThat( displayData, hasDisplayItem( allOf(hasKey("foo"), hasValue("bar"), hasNamespace(ExtendsBaseOptions.class)))); }
allOf( hasKey(not(isEmptyOrNullString())), hasNamespace( Matchers.<Class<?>>isOneOf( transform.getClass(), subComponent1.getClass(), subComponent2.getClass())),
@Test public void testDisplayDataItemProperties() { PipelineOptions options = PipelineOptionsFactory.create(); options.setTempLocation("myTemp"); DisplayData displayData = DisplayData.from(options); assertThat( displayData, hasDisplayItem( allOf( hasKey("tempLocation"), hasType(DisplayData.Type.STRING), hasValue("myTemp"), hasNamespace(PipelineOptions.class)))); }