### Question:
ExpressionOperation extends AbstractOperation { @Override public Set<String> getDependencies() { final Set<String> dependencies = new HashSet<>(); expression.accept(ListingPropertyVisitor.VISITOR, dependencies); return dependencies; } ExpressionOperation(GenericName name, Expression expression);  ExpressionOperation(Map<String, ?> identification, Expression expression); @Override ParameterDescriptorGroup getParameters(); @Override IdentifiedType getResult(); @Override Set<String> getDependencies(); @Override Property apply(Feature feature, ParameterValueGroup parameters);  }### Answer:
@Test public void testGetValue() { final Expression exp = FF.add(FF.property("att1"), FF.property("att2")); final FeatureTypeBuilder ftb = new FeatureTypeBuilder(); ftb.setName("test"); ftb.addAttribute(Integer.class).setName("att1"); ftb.addAttribute(Integer.class).setName("att2"); final ExpressionOperation operation = new ExpressionOperation(NamesExt.create(null, "calc"), exp); final Set<String> dependencies = operation.getDependencies(); assertEquals(2, dependencies.size()); Assert.assertTrue(dependencies.contains("att1")); Assert.assertTrue(dependencies.contains("att2")); ftb.addProperty(operation); final FeatureType sft = ftb.build(); final Feature sf = sft.newInstance(); sf.setPropertyValue("att1", 45); sf.setPropertyValue("att2", 12); final Object calcValue = sf.getPropertyValue("calc"); Assert.assertNotNull(calcValue); Assert.assertTrue(calcValue instanceof Number); assertEquals(57l, ((Number)calcValue).longValue()); }