### Question:
SubConfiguration implements Configuration { public String get(String propertyName){ return cfg.get(prefix + propertyName); } SubConfiguration();  SubConfiguration(Configuration cfg, String prefix); void setConfiguration(Configuration newCfg); void setPrefix(String newPrefix); String get(String propertyName); String[] getAll(String propertyName); int[] getInts(String propertyName); long[] getLongs(String propertyName); double[] getDoubles(String propertyName); boolean[] getBooleans(String propertyName); String get(String propertyName, String defaultValue); boolean getBoolean(String propertyName); boolean getBoolean(String propertyName, boolean defaultValue); double getDouble(String propertyName); double getDouble(String propertyName, double defaultValue); long getLong(String propertyName); long getLong(String propertyName, long defaultValue); int getInt(String propertyName); int getInt(String propertyName, int defaultValue); void put(String name, Object value); Object getObject(String propertyName); @Override Set<String> keySet();  }### Answer:
@Test public void testGet() throws Throwable { Configuration cfg = new SimpleConfiguration(); SubConfiguration subConfiguration = new SubConfiguration(cfg, "testSubConfigurationPrefix"); String result = subConfiguration.get("testSubConfigurationPropertyName"); assertEquals("", result, "result"); assertSame(cfg, subConfiguration.cfg, "subConfiguration.cfg"); }
@Test public void testGet1() throws Throwable { Configuration cfg = new SimpleConfiguration(); SubConfiguration subConfiguration = new SubConfiguration(cfg, "testSubConfigurationPrefix"); String result = subConfiguration.get("testSubConfigurationPropertyName", "testSubConfigurationDefaultValue"); assertEquals("testSubConfigurationDefaultValue", result, "result"); assertSame(cfg, subConfiguration.cfg, "subConfiguration.cfg"); }
@Test public void testGetThrowsNullPointerException() throws Throwable { Configuration cfg = new SubConfiguration(); SubConfiguration subConfiguration = new SubConfiguration(cfg, "testSubConfigurationPrefix"); try { subConfiguration.get("testSubConfigurationPropertyName"); fail("Expected NullPointerException to be thrown"); } catch (NullPointerException ex) { if (isJavaVersionAtMost(JAVA_14)) { assertNull(ex.getMessage(), "ex.getMessage()"); } else { assertEquals("Cannot invoke \"org.jpos.core.Configuration.get(String)\" because \"this.cfg\" is null", ex.getMessage(), "ex.getMessage()"); } assertSame(cfg, subConfiguration.cfg, "subConfiguration.cfg"); } }
@Test public void testGetThrowsNullPointerException1() throws Throwable { SubConfiguration subConfiguration = new SubConfiguration(); try { subConfiguration.get("testSubConfigurationPropertyName", "testSubConfigurationDefaultValue"); fail("Expected NullPointerException to be thrown"); } catch (NullPointerException ex) { if (isJavaVersionAtMost(JAVA_14)) { assertNull(ex.getMessage(), "ex.getMessage()"); } else { assertEquals("Cannot invoke \"org.jpos.core.Configuration.get(String, String)\" because \"this.cfg\" is null", ex.getMessage(), "ex.getMessage()"); } assertNull(subConfiguration.cfg, "subConfiguration.cfg"); } }