### Question:
PropertyValuesPredicateEvaluator implements PredicateEvaluator { protected PredicateEvaluator getPredicateEvaluator(Predicate predicate) { if (isFulltextOperation(predicate)) { return fulltextEvaluator; } else { return propertyEvaluator; } }  @Override String getXPathExpression(Predicate predicate, EvaluationContext evaluationContext); @Override boolean includes(final Predicate predicate, final Row row, final EvaluationContext evaluationContext); @Override boolean canXpath(final Predicate predicate, final EvaluationContext evaluationContext); @Override boolean canFilter(final Predicate predicate, final EvaluationContext evaluationContext); @Override boolean isFiltering(final Predicate predicate, final EvaluationContext evaluationContext); @Override String[] getOrderByProperties(Predicate predicate, EvaluationContext evaluationContext); @Override Comparator<Row> getOrderByComparator(Predicate predicate, EvaluationContext evaluationContext); @Override FacetExtractor getFacetExtractor(Predicate predicate, EvaluationContext evaluationContext); static final String PREDICATE_NAME; static final String VALUES; }### Answer:
@Test public void getPredicateEvaluator_AsPropertyPredicate() { predicate.set("operation", "equals"); PredicateEvaluator actual = propertyValuesPredicateEvaluator.getPredicateEvaluator(predicate); assertTrue(actual instanceof JcrPropertyPredicateEvaluator); }
@Test public void getPredicateEvaluator_AsFulltextPredicate() { predicate.set("operation", "startsWith"); PredicateEvaluator actual = propertyValuesPredicateEvaluator.getPredicateEvaluator(predicate); assertTrue(actual instanceof FulltextPredicateEvaluator); predicate.set("operation", "contains"); actual = propertyValuesPredicateEvaluator.getPredicateEvaluator(predicate); assertTrue(actual instanceof FulltextPredicateEvaluator); }