@Test
public void testFindFeatureWithJexlConditionDescriptor() {
props.setProperty(XmlPropertyReader.CONFIG_PROPERTY, CONFIG_FILE1);
propertyReader.initialize(props);
FeatureDescriptor featureDescriptor = propertyReader.getFeatureDescriptor("test");
assertNotNull(featureDescriptor);
assertEquals("test", featureDescriptor.getName());
assertEquals(FeatureState.ENABLED, featureDescriptor.getState());
assertNotNull(featureDescriptor.getRules());
Date expirationDate = featureDescriptor.getExpirationDate();
assertNotNull(expirationDate);
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(expirationDate);
assertEquals(2012, calendar.get(Calendar.YEAR));
assertEquals(11, calendar.get(Calendar.MONTH));
assertEquals(21, calendar.get(Calendar.DATE));
assertEquals(10, calendar.get(Calendar.HOUR_OF_DAY));
assertEquals(21, calendar.get(Calendar.MINUTE));
assertEquals(2, featureDescriptor.getRules().length);
assertNotNull(featureDescriptor.getRules()[0]);
assertEquals(FeatureState.ENABLED, featureDescriptor.getRules()[0].getState());
assertNotNull(featureDescriptor.getRules()[0].getConditions());
assertEquals(2, featureDescriptor.getRules()[0].getConditions().length);
assertNotNull(featureDescriptor.getRules()[0].getConditions()[0]);
assertEquals("a = 1", featureDescriptor.getRules()[0].getConditions()[1].getExpression());
assertEquals("a", featureDescriptor.getRules()[0].getConditions()[0].getContext());
assertEquals("prop", featureDescriptor.getRules()[0].getConditions()[0].getName());
assertEquals(FeatureOperation.EQUALS, featureDescriptor.getRules()[0].getConditions()[0].getOperation());
assertEquals("1", featureDescriptor.getRules()[0].getConditions()[0].getValue());
assertNotNull(featureDescriptor.getRules()[1]);
assertEquals(FeatureState.DISABLED, featureDescriptor.getRules()[1].getState());
assertNull(featureDescriptor.getRules()[1].getConditions());
}