@Test
public void testTypedResolver_OnChange()
{
final String key = "non.existing.key";
final AtomicInteger valueChanged = new AtomicInteger(0);
ConfigResolver.TypedResolver<String> resolver = ConfigResolver.resolve(key)
.logChanges(true)
.onChange((k, oldValue, newValue) ->
{
Assert.assertEquals(key, k);
valueChanged.incrementAndGet();
});
Assert.assertNull(resolver.getValue());
setTestConfigSourceValue(key, "somevalue");
Assert.assertEquals("somevalue", resolver.getValue());
Assert.assertEquals(1, valueChanged.get());
setTestConfigSourceValue(key, "newvalue");
Assert.assertEquals("newvalue", resolver.getValue());
Assert.assertEquals(2, valueChanged.get());
Assert.assertEquals("newvalue", resolver.getValue());
Assert.assertEquals(2, valueChanged.get());
setTestConfigSourceValue(key, null);
Assert.assertNull(resolver.getValue());
Assert.assertEquals(3, valueChanged.get());
}