### Question:
LazyPropertiesDescription extends BasePropertiesDescription implements PropertiesDescription { @Override public Predicate get(String key) { Object value = entity.getProperty(key, null); if (value == null) { return undefined(); } return equalTo(value); } LazyPropertiesDescription(Entity entity); @Override Predicate get(String key); @Override Iterable<String> getKeys(); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void shouldReturnEqualPredicatesForExistingKeys() { PropertiesDescription description = lazy(); assertEquals(equalTo(2), description.get("two")); assertEquals(equalTo("3"), description.get("three")); assertEquals(equalTo(new int[]{4, 5}), description.get("array")); }
@Test public void shouldReturnUndefinedForNonExistingKeys() { PropertiesDescription description = lazy(); assertEquals(undefined(), description.get("non-existing")); }