final ElementFilter filter = new ElementFilter.Builder() .select(TestPropertyNames.PROP_1, TestPropertyNames.PROP_2) .execute(new Not<>(new Or.Builder<>() .select(0) .execute(new IsMoreThan(2)) .select(1) .execute(new IsEqual("some value")) .build())) .build();
@Test public void shouldFilterMapWithSingleResult() { //given final Regex predicate = new Regex("^c.*o.*g$"); final FreqMapPredicator fRegexPredicator = new FreqMapPredicator(predicate); //when final FreqMap fRegex = fRegexPredicator.apply(freqMap); //then assertEquals(fRegex.size(), 1); assertTrue(fRegex.containsKey("catdog")); }
.preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.COUNT) .execute(new IsMoreThan(5)) .build()) .aggregator(new ElementAggregator.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.COUNT) .execute(new IsLessThan(10)) .build()) .transformer(new ElementTransformer.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new IsEqual("9")) .build()) .build(); assertEquals(1, preFilterComponents.size()); assertArrayEquals(new String[]{TestPropertyNames.COUNT}, preFilterComponents.get(0).getSelection()); assertEquals(new IsMoreThan(5), preFilterComponents.get(0).getPredicate()); assertEquals(1, postFilterComponents.size()); assertArrayEquals(new String[]{TestPropertyNames.COUNT}, postFilterComponents.get(0).getSelection()); assertEquals(new IsLessThan(10), postFilterComponents.get(0).getPredicate()); assertEquals(1, postTransformFilterComponents.size()); assertArrayEquals(new String[]{TestPropertyNames.PROP_1}, postTransformFilterComponents.get(0).getSelection()); assertEquals(new IsEqual("9"), postTransformFilterComponents.get(0).getPredicate());
@Test public void shouldAddGlobalPreAggFiltersToGroup() { // Given final ElementFilter filter = new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build(); final View view = new View.Builder() .globalEntities(new GlobalViewElementDefinition.Builder() .groups(TestGroups.ENTITY) .preAggregationFilter(filter) .build()) .entity(TestGroups.ENTITY) .build(); // When view.expandGlobalDefinitions(); // Then assertTrue(view.hasPreAggregationFilters()); assertEquals(Exists.class.getSimpleName(), view.getEntity(TestGroups.ENTITY).getPreAggregationFilter() .getComponents().get(0).getPredicate() .getClass().getSimpleName()); }
final ElementFilter filter = new ElementFilter.Builder() .select(TestPropertyNames.PROP_1, TestPropertyNames.PROP_2) .execute(new Or.Builder<>() .select(0) .execute(new IsMoreThan(2)) .select(1) .execute(new IsEqual("some value")) .build()) .build();
@Test public void shouldReturnTrueWhenViewHasPreAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldJsonSerialiseAndDeserialise() throws SerialisationException { //given final FreqMapPredicator nullPredicator = new FreqMapPredicator(); final FreqMapPredicator regexPredicator = new FreqMapPredicator(new Regex("^\\wo\\w$")); //when final String json = new String(JSONSerialiser.serialise(nullPredicator, true)); final String json2 = new String(JSONSerialiser.serialise(regexPredicator, false)); //then JsonAssert.assertEquals(String.format("{%n" + " \"class\" : \"uk.gov.gchq.gaffer.types.function.FreqMapPredicator\"%n" + "}"), json); JsonAssert.assertEquals("{\"class\":\"uk.gov.gchq.gaffer.types.function.FreqMapPredicator\"," + "\"predicate\":{\"class\":\"uk.gov.gchq.koryphe.impl.predicate.Regex\",\"value\":" + "{\"java.util.regex.Pattern\":\"^\\\\wo\\\\w$\"}}}", json2); final FreqMapPredicator deserializedNull = JSONSerialiser.deserialise(json, FreqMapPredicator.class); final FreqMapPredicator deserializedRegex = JSONSerialiser.deserialise(json2, FreqMapPredicator.class); assertEquals(deserializedNull.apply(freqMap).size(), freqMap.size()); assertEquals(deserializedRegex.apply(freqMap).size(), 2); } }
@Test public void shouldReturnTrueWhenViewHasPostTransformEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldFilterMapWithMultipleResults() { //given final Regex predicate = new Regex("^\\wo\\w$"); final FreqMapPredicator fRegexPredicator = new FreqMapPredicator(predicate); //when final FreqMap fRegex = fRegexPredicator.apply(freqMap); //then assertEquals(fRegex.size(), 2); assertTrue(fRegex.containsKey("cow")); assertTrue(fRegex.containsKey("dog")); }
@Test public void shouldReturnTrueWhenViewHasPostAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldNotMutateOriginalValue() { //given final Regex predicate = new Regex("^\\wo\\w$"); final FreqMapPredicator fRegexPredicator = new FreqMapPredicator(predicate); //when final FreqMap fRegex = fRegexPredicator.apply(freqMap); //then assertEquals(fRegex.size(), 2); assertTrue(fRegex.containsKey("cow")); assertTrue(fRegex.containsKey("dog")); assertEquals(freqMap.size(), 4); assertTrue(freqMap.containsKey("cat")); assertTrue(freqMap.containsKey("dog")); assertTrue(freqMap.containsKey("catdog")); assertTrue(freqMap.containsKey("cow")); }
@Test public void shouldReturnTrueWhenViewHasPostAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPreAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPreAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPreAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }