@Test
public void testGoodResolveProps() throws IOException {

  final Props propsGrandParent = new Props();
  final Props propsParent = new Props(propsGrandParent);
  final Props props = new Props(propsParent);
  // Testing props in general
  props.put("letter", "a");
  propsParent.put("letter", "b");
  propsGrandParent.put("letter", "c");
  Assert.assertEquals("a", props.get("letter"));
  propsParent.put("my", "name");
  propsParent.put("your", "eyes");
  propsGrandParent.put("their", "ears");
  propsGrandParent.put("your", "hair");
  Assert.assertEquals("name", props.get("my"));
  Assert.assertEquals("eyes", props.get("your"));
  Assert.assertEquals("ears", props.get("their"));
  props.put("res1", "${my}");
  props.put("res2", "${their} ${letter}");
  props.put("res7", "${my} ${res5}");
  propsParent.put("res3", "${your} ${their} ${res4}");
  propsGrandParent.put("res4", "${letter}");
  propsGrandParent.put("res5", "${their}");
  propsParent.put("res6", " t ${your} ${your} ${their} ${res5}");
  final Props resolved = PropsUtils.resolveProps(props);
  Assert.assertEquals("name", resolved.get("res1"));
  Assert.assertEquals("ears a", resolved.get("res2"));
  Assert.assertEquals("eyes ears a", resolved.get("res3"));
  Assert.assertEquals("a", resolved.get("res4"));
  Assert.assertEquals("ears", resolved.get("res5"));
  Assert.assertEquals(" t eyes eyes ears ears", resolved.get("res6"));
  Assert.assertEquals("name ears", resolved.get("res7"));
}