@Test
public void testDefault() throws Exception {

    // test valid values loaded by default with fully qualified class path.
    assertThat(factory.getInstance(OpenMonFactory.JAMON)).isInstanceOf(Jamon.class);
    assertThat(factory.getInstance(OpenMonFactory.JAVA_SIMON)).isInstanceOf(JavaSimon.class);
    assertThat(factory.getInstance(OpenMonFactory.METRICS)).isInstanceOf(Metrics.class);
    assertThat(factory.getInstance(OpenMonFactory.SYSOUT)).isInstanceOf(SysOut.class);
    assertThat(factory.getInstance(OpenMonFactory.NULL_IMP)).isInstanceOf(NullImp.class);
    assertThat(factory.getInstance(OpenMonFactory.NEW_RELIC)).isInstanceOf(NewRelicImp.class);
    assertThat(factory.getInstance(OpenMonFactory.STATSD)).isInstanceOf(StatsD.class);
    // test getting instance with the class name only (case insensitive)
    assertThat(factory.getInstance("jamon")).isInstanceOf(Jamon.class);
    assertThat(factory.getInstance("JAMon")).isInstanceOf(Jamon.class);
    assertThat(factory.getInstance("com.i.do.not.Exist")).
            describedAs("The default value should be returned if the constructor fails").
            isEqualTo(defaultValue);
}