/** * Factory method to create a collection of {@link Tag}s. * * @param type * The type of all {@link Tag}s. * @param parent * The parent {@link Tag}. * @param values * The values to be wrapped in {@link Tag}. For each value a new {@link Tag} is * created. * @return A collection of Tags. */ public static Collection<Tag> tags(String type, Tag parent, Object... values) { return tags(type, parent, Arrays.asList(values)); }
@Test public void nullParentTag() { Collection<rocks.inspectit.server.diagnosis.engine.tag.Tag> tags = rocks.inspectit.server.diagnosis.engine.tag.Tags.tags("A", null, "TestInput1", "TestInput2"); rocks.inspectit.server.diagnosis.engine.tag.Tag[] tagArray = tags.toArray(new rocks.inspectit.server.diagnosis.engine.tag.Tag[0]); assertThat(tags, hasSize(2)); assertThat(tagArray[0].getType(), equalTo("A")); assertThat(tagArray[1].getType(), equalTo("A")); assertThat(tagArray[0].getValue().toString(), equalTo("TestInput1")); assertThat(tagArray[1].getValue().toString(), equalTo("TestInput2")); assertThat(tagArray[0].getParent(), equalTo(null)); assertThat(tagArray[1].getParent(), equalTo(null)); assertThat(tagArray[0].getState(), equalTo(TagState.LEAF)); assertThat(tagArray[1].getState(), equalTo(TagState.LEAF)); }
@Test public void shouldInjectValue() throws RuleExecutionException { // prepare when(input.getUnraveled()).thenReturn(Tags.tags("T1", null, "InjectedValue")); // execute new TagInjection("T1", RuleDummy.tagStringValueField()).execute(context); // verify assertThat(ruleImpl.tagStringValueField, is("InjectedValue")); }
@Test public void withParentTag() { rocks.inspectit.server.diagnosis.engine.tag.Tag tagA = rocks.inspectit.server.diagnosis.engine.tag.Tags.tag("A", "TestInput"); Collection<rocks.inspectit.server.diagnosis.engine.tag.Tag> tags = rocks.inspectit.server.diagnosis.engine.tag.Tags.tags("B", tagA, "TestInput1", "TestInput2"); rocks.inspectit.server.diagnosis.engine.tag.Tag[] tagArray = tags.toArray(new rocks.inspectit.server.diagnosis.engine.tag.Tag[0]); assertThat(tags, hasSize(2)); assertThat(tagArray[0].getType(), equalTo("B")); assertThat(tagArray[1].getType(), equalTo("B")); assertThat(tagArray[0].getValue().toString(), equalTo("TestInput1")); assertThat(tagArray[1].getValue().toString(), equalTo("TestInput2")); assertThat(tagArray[0].getParent(), equalTo(tagA)); assertThat(tagArray[1].getParent(), equalTo(tagA)); assertThat(tagArray[0].getState(), equalTo(TagState.LEAF)); assertThat(tagArray[1].getState(), equalTo(TagState.LEAF)); assertThat(tagA.getState(), equalTo(TagState.PARENT)); } }
throw new RuleExecutionException("If resultQuantity is MULTIPLE ensure that either an Array or a Collection is defined as return value", context); transformed.addAll(Tags.tags(getResultTag(), context.getRuleInput().getRoot(), values)); break; case SINGLE:
@Test public void shouldInjectTag() throws RuleExecutionException { // prepare when(input.getUnraveled()).thenReturn(Tags.tags("T1", null, "InjectedValue")); // execute new TagInjection("T1", RuleDummy.tagAsTagField(), TagValue.InjectionStrategy.BY_TAG).execute(context); // verify assertThat(ruleImpl.tagAsTagField, is(Tags.tag("T1", "InjectedValue"))); } }
@Test public void shouldProduceMultipleTagsFromSingleArray() throws Exception { Tag rootTag = Tags.rootTag("Input"); // prepare Mocks when(dummy.action2()).thenReturn(new String[] { "one", "two", "three" }); when(this.input.getRoot()).thenReturn(rootTag); // Create TestMethod ActionMethod action = new ActionMethod(RuleDummy.action2Method(), "T2", Action.Quantity.MULTIPLE); // execute Collection<Tag> result = action.execute(context); // verify Collection<Tag> tags = Tags.tags("T2", rootTag, "one", "two", "three"); assertThat(result, containsInAnyOrder(tags.toArray())); }
@Test public void shouldProduceMultipleTagsFromCollection() throws Exception { // prepare Mocks Tag rootTag = Tags.rootTag("Input"); when(dummy.action2()).thenReturn(new String[] { "one", "two", "three" }); when(this.input.getRoot()).thenReturn(rootTag); // Create TestMethod ActionMethod action = new ActionMethod(RuleDummy.action2Method(), "T2", Action.Quantity.MULTIPLE); // execute Collection<Tag> result = action.execute(context); // verify Collection<Tag> tags = Tags.tags("T2", rootTag, "one", "two", "three"); assertThat(result, containsInAnyOrder(tags.toArray())); }