@Test public void testMissingColumnNotSpecifiedInDimensionList() { assertFilterMatches(new RegexDimFilter("dim4", "", null), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim4", "a", null), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim4", "b", null), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim4", "c", null), ImmutableList.of()); }
@Test public void testMissingColumnSpecifiedInDimensionList() { assertFilterMatches(new RegexDimFilter("dim3", "", null), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim3", "a", null), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim3", "b", null), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim3", "c", null), ImmutableList.of()); }
@Test public void testSingleValueStringColumnWithoutNulls() { assertFilterMatches(new RegexDimFilter("dim0", ".*", null), ImmutableList.of("0", "1", "2", "3", "4", "5")); assertFilterMatches(new RegexDimFilter("dim0", "0", null), ImmutableList.of("0")); assertFilterMatches(new RegexDimFilter("dim0", "5", null), ImmutableList.of("5")); }
@Test public void testMultiValueStringColumn() { if (NullHandling.replaceWithDefault()) { assertFilterMatches(new RegexDimFilter("dim2", ".*", null), ImmutableList.of("0", "3", "4")); } else { assertFilterMatches(new RegexDimFilter("dim2", ".*", null), ImmutableList.of("0", "2", "3", "4")); } assertFilterMatches(new RegexDimFilter("dim2", "a", null), ImmutableList.of("0", "3")); assertFilterMatches(new RegexDimFilter("dim2", "b", null), ImmutableList.of("0")); assertFilterMatches(new RegexDimFilter("dim2", "c", null), ImmutableList.of("4")); assertFilterMatches(new RegexDimFilter("dim2", "d", null), ImmutableList.of()); }
@Test public void testEquals() { RegexDimFilter regexDimFilter = new RegexDimFilter("dim", "reg", null); RegexDimFilter regexDimFilter2 = new RegexDimFilter("di", "mreg", null); RegexDimFilter regexDimFilter3 = new RegexDimFilter("di", "mreg", null); Assert.assertNotEquals(regexDimFilter, regexDimFilter2); Assert.assertEquals(regexDimFilter2, regexDimFilter3); RegexDimExtractionFn regexFn = new RegexDimExtractionFn(".*", false, null); RegexDimFilter regexDimFilter4 = new RegexDimFilter("dim", "reg", regexFn); RegexDimFilter regexDimFilter5 = new RegexDimFilter("dim", "reg", regexFn); Assert.assertNotEquals(regexDimFilter, regexDimFilter4); Assert.assertEquals(regexDimFilter4, regexDimFilter5); }
@Test public void testSingleValueStringColumnWithNulls() { // RegexFilter always returns false for null row values. if (NullHandling.replaceWithDefault()) { assertFilterMatches(new RegexDimFilter("dim1", ".*", null), ImmutableList.of("1", "2", "3", "4", "5")); } else { assertFilterMatches(new RegexDimFilter("dim1", ".*", null), ImmutableList.of("0", "1", "2", "3", "4", "5")); } assertFilterMatches(new RegexDimFilter("dim1", "10", null), ImmutableList.of("1")); assertFilterMatches(new RegexDimFilter("dim1", "2", null), ImmutableList.of("2")); assertFilterMatches(new RegexDimFilter("dim1", "1", null), ImmutableList.of("1", "3")); assertFilterMatches(new RegexDimFilter("dim1", ".*def", null), ImmutableList.of("4")); assertFilterMatches(new RegexDimFilter("dim1", "abc", null), ImmutableList.of("5")); assertFilterMatches(new RegexDimFilter("dim1", "ab.*", null), ImmutableList.of("4", "5")); }
@Test public void testRegexWithExtractionFn() { String nullJsFn = "function(str) { if (str === null) { return 'NOT_NULL_ANYMORE'; } else { return str;} }"; ExtractionFn changeNullFn = new JavaScriptExtractionFn(nullJsFn, false, JavaScriptConfig.getEnabledInstance()); if (NullHandling.replaceWithDefault()) { assertFilterMatches(new RegexDimFilter("dim1", ".*ANYMORE", changeNullFn), ImmutableList.of("0")); assertFilterMatches(new RegexDimFilter("dim2", ".*ANYMORE", changeNullFn), ImmutableList.of("1", "2", "5")); } else { assertFilterMatches(new RegexDimFilter("dim1", ".*ANYMORE", changeNullFn), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim2", ".*ANYMORE", changeNullFn), ImmutableList.of("1", "5")); } assertFilterMatches(new RegexDimFilter("dim1", "ab.*", changeNullFn), ImmutableList.of("4", "5")); assertFilterMatches(new RegexDimFilter("dim2", "a.*", changeNullFn), ImmutableList.of("0", "3")); assertFilterMatches(new RegexDimFilter("dim3", ".*ANYMORE", changeNullFn), ImmutableList.of("0", "1", "2", "3", "4", "5")); assertFilterMatches(new RegexDimFilter("dim3", "a.*", changeNullFn), ImmutableList.of()); assertFilterMatches(new RegexDimFilter("dim4", ".*ANYMORE", changeNullFn), ImmutableList.of("0", "1", "2", "3", "4", "5")); assertFilterMatches(new RegexDimFilter("dim4", "a.*", changeNullFn), ImmutableList.of()); } }
@Test public void testGetCacheKey() { RegexDimFilter regexDimFilter = new RegexDimFilter("dim", "reg", null); RegexDimFilter regexDimFilter2 = new RegexDimFilter("di", "mreg", null); Assert.assertFalse(Arrays.equals(regexDimFilter.getCacheKey(), regexDimFilter2.getCacheKey())); RegexDimExtractionFn regexFn = new RegexDimExtractionFn(".*", false, null); RegexDimFilter regexDimFilter3 = new RegexDimFilter("dim", "reg", regexFn); Assert.assertFalse(Arrays.equals(regexDimFilter.getCacheKey(), regexDimFilter3.getCacheKey())); }
@Test public void testHashcode() { RegexDimFilter regexDimFilter = new RegexDimFilter("dim", "reg", null); RegexDimFilter regexDimFilter2 = new RegexDimFilter("di", "mreg", null); RegexDimFilter regexDimFilter3 = new RegexDimFilter("di", "mreg", null); Assert.assertNotEquals(regexDimFilter.hashCode(), regexDimFilter2.hashCode()); Assert.assertEquals(regexDimFilter2.hashCode(), regexDimFilter3.hashCode()); RegexDimExtractionFn regexFn = new RegexDimExtractionFn(".*", false, null); RegexDimFilter regexDimFilter4 = new RegexDimFilter("dim", "reg", regexFn); RegexDimFilter regexDimFilter5 = new RegexDimFilter("dim", "reg", regexFn); Assert.assertNotEquals(regexDimFilter.hashCode(), regexDimFilter4.hashCode()); Assert.assertEquals(regexDimFilter4.hashCode(), regexDimFilter5.hashCode()); }
new BoundDimFilter("dimSequential", "-1", "-1", true, true, null, null, StringComparators.ALPHANUMERIC), new JavaScriptDimFilter("dimSequential", "function(x) { return false }", null, JavaScriptConfig.getEnabledInstance()), new RegexDimFilter("dimSequential", "X", null), new SearchQueryDimFilter("dimSequential", new ContainsSearchQuerySpec("X", false), null), new InDimFilter("dimSequential", Collections.singletonList("X"), null)
new RegexDimFilter(LONG_COLUMN, ".*day", exfn), ImmutableList.of("1", "2", "3", "4", "5", "6") );
new RegexDimFilter(columnName, ".*day", exfn), ImmutableList.of("1", "2", "3", "4", "5", "6") );
new RegexDimFilter(ColumnHolder.TIME_COLUMN_NAME, ".*day", exfn), ImmutableList.of("0", "1", "2", "3", "4", "5") );
JavaScriptConfig.getEnabledInstance() ), new RegexDimFilter("dimSequential", "X", null), new SearchQueryDimFilter("dimSequential", new ContainsSearchQuerySpec("X", false), null), new InDimFilter("dimSequential", Collections.singletonList("X"), null)
new RegexDimFilter(ColumnHolder.TIME_COLUMN_NAME, "4", null), ImmutableList.of("4") );
@Test public void testGroupByWithRegEx() { GroupByQuery.Builder builder = GroupByQuery .builder() .setDataSource(QueryRunnerTestHelper.dataSource) .setInterval("2011-04-02/2011-04-04") .setDimFilter(new RegexDimFilter("quality", "auto.*", null)) .setDimensions(new DefaultDimensionSpec("quality", "quality")) .setAggregatorSpecs(QueryRunnerTestHelper.rowsCount) .setGranularity(new PeriodGranularity(new Period("P1M"), null, null)); final GroupByQuery query = builder.build(); List<Row> expectedResults = Collections.singletonList( GroupByQueryRunnerTestHelper.createExpectedRow("2011-04-01", "quality", "automotive", "rows", 2L) ); QueryRunner<Row> mergeRunner = factory.getToolchest().mergeResults(runner); Map<String, Object> context = new HashMap<>(); TestHelper.assertExpectedObjects(expectedResults, mergeRunner.run(QueryPlus.wrap(query), context), "no-limit"); }
StringComparators.ALPHANUMERIC )); superFilterList.add(new RegexDimFilter("null_column", "EMPTY", extractionFn)); superFilterList.add( new SearchQueryDimFilter("null_column", new ContainsSearchQuerySpec("EMPTY", true), extractionFn)
.dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .filters(new RegexDimFilter(QueryRunnerTestHelper.marketDimension, "^.p.*$", null)) // spot and upfront .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(
new RegexDimFilter("dim", "a", null) ); selector = new TestFloatColumnSelector(values);
new RegexDimFilter("dim", "aAARDVARK", extractionFn) ); selector = new TestFloatColumnSelector(values);