private static PagedSearchResult<ProductProjection> executeSearchWithFacets(final FacetExpression<ProductProjection> facetExpr) { return executeSearch(ProductProjectionSearch.ofStaged().withFacets(facetExpr)); } }
private static void testRangeStats(final RangeFacetExpression<ProductProjection> facetExpr, final Consumer<RangeStats> test) { final List<RangeStats> ranges = executeSearchWithFacets(facetExpr).getFacetResult(facetExpr).getRanges(); assertThat(ranges).hasSize(1); test.accept(ranges.get(0)); }
@Test public void onNumberRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofNumber(ATTR_NAME_NUMBER).onlyGreaterThanOrEqualTo(valueOf(0)), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("0.0"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("5.0"); assertThat(rangeStats.getMax()).isEqualTo("10.0"); assertThat(rangeStats.getSum()).isEqualTo("15.0"); assertThat(rangeStats.getMean()).isEqualTo(7.50D); }); }
@Test public void onNumberSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofNumberSet(ATTR_NAME_NUMBER_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("5.0", 2L), TermStats.of("10.0", 1L))); }
@Test public void onDateSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofDateSet(ATTR_NAME_DATE_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("2001-09-11", 2L), TermStats.of("2002-10-12", 1L))); }
@Test public void onBooleanSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofBooleanSet(ATTR_NAME_BOOLEAN_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of(BOOL_TRUE, 2L), TermStats.of(BOOL_FALSE, 1L))); }
@Test public void onNumberRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofNumberSet(ATTR_NAME_NUMBER_SET).onlyGreaterThanOrEqualTo(valueOf(0)), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("0.0"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("5.0"); assertThat(rangeStats.getMax()).isEqualTo("10.0"); assertThat(rangeStats.getSum()).isEqualTo("20.0"); assertThat(rangeStats.getMean()).isEqualTo(6.666666666666667D); }); }
private static void testTermStats(final TermFacetExpression<ProductProjection> facetExpr, final Consumer<List<TermStats>> test) { final List<TermStats> termStats = executeSearchWithFacets(facetExpr).getFacetResult(facetExpr).getTerms(); test.accept(termStats); }
@Test public void onTimeSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofTimeSet(ATTR_NAME_TIME_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("22:05:09.203", 2L), TermStats.of("23:06:10.204", 1L))); }
@Test public void onTimeRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofTimeSet(ATTR_NAME_TIME_SET).onlyGreaterThanOrEqualTo(TIME_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getMax()).isEqualTo("8.3170204E7"); assertThat(rangeStats.getSum()).isEqualTo("2.4218861E8"); assertThat(rangeStats.getMean()).isEqualTo(8.072953666666667E7D); }); }
@Test public void onTextSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofStringSet(ATTR_NAME_TEXT_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of(TEXT_FOO, 2L), TermStats.of(TEXT_BAR, 1L))); }
@Test public void onDatetimeRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDateTimeSet(ATTR_NAME_DATE_TIME_SET).onlyGreaterThanOrEqualTo(DATE_TIME_2001_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getMax()).isEqualTo("1.034463970204E12"); assertThat(rangeStats.getSum()).isEqualTo("3.03495578861E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0116519295366666E12D); }); }
@Test public void onDatetimeSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofDateTimeSet(ATTR_NAME_DATE_TIME_SET).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("2001-09-11T22:05:09.203+0000", 2L), TermStats.of("2002-10-12T23:06:10.204+0000", 1L))); }
@Test public void onTimeRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofTime(ATTR_NAME_TIME).onlyGreaterThanOrEqualTo(TIME_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("7.9509203E7"); assertThat(rangeStats.getMax()).isEqualTo("8.3170204E7"); assertThat(rangeStats.getSum()).isEqualTo("1.62679407E8"); assertThat(rangeStats.getMean()).isEqualTo(8.13397035E7D); }); }
@Test public void onMoneyAmountSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofMoneySet(ATTR_NAME_MONEY_SET).centAmount().allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("50000", 2L), TermStats.of("100000", 1L))); }
@Test public void onDateRangedSetAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDateSet(ATTR_NAME_DATE_SET).onlyGreaterThanOrEqualTo(DATE_2001), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getMax()).isEqualTo("1.0343808E12"); assertThat(rangeStats.getSum()).isEqualTo("3.0347136E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0115712E12D); }); }
@Test public void onMoneyCurrencySetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofMoneySet(ATTR_NAME_MONEY_SET).currency().allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of("EUR", 2L), TermStats.of("USD", 1L))); }
@Test public void onDateRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDate(ATTR_NAME_DATE).onlyGreaterThanOrEqualTo(DATE_2001), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.0001664E12"); assertThat(rangeStats.getMax()).isEqualTo("1.0343808E12"); assertThat(rangeStats.getSum()).isEqualTo("2.0345472E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0172736E12D); }); }
@Test public void onLocTextSetAttributes() throws Exception { testTermStats(FACET.allVariants().attribute().ofLocalizedStringSet(ATTR_NAME_LOC_TEXT_SET).locale(ENGLISH).allTerms(), termStats -> assertThat(termStats).containsExactly( TermStats.of(LOC_TEXT_FOO.get(ENGLISH), 2L), TermStats.of(LOC_TEXT_BAR.get(ENGLISH), 1L))); }
@Test public void onDatetimeRangedAttributes() throws Exception { testRangeStats(FACET.allVariants().attribute().ofDateTime(ATTR_NAME_DATE_TIME).onlyGreaterThanOrEqualTo(DATE_TIME_2001_22H), rangeStats -> { assertThat(rangeStats.getLowerEndpoint()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getUpperEndpoint()).isEqualTo(null); assertThat(rangeStats.getCount()).isEqualTo(2L); assertThat(rangeStats.getMin()).isEqualTo("1.000245909203E12"); assertThat(rangeStats.getMax()).isEqualTo("1.034463970204E12"); assertThat(rangeStats.getSum()).isEqualTo("2.034709879407E12"); assertThat(rangeStats.getMean()).isEqualTo(1.0173549397035E12D); }); }