public void TypeSpecifiedByDefaultType() { var config = GetNonTypeSpecifiedConfig(); var garplies = 0; var reloading = 0; var reloaded = 0; var defaultTypes = new DefaultTypes().Add(typeof(IFoo), typeof(Foo)); IFoo foo = new ProxyFoo(config.GetSection("foo"), defaultTypes, new ValueConverters(), null, null); ConfigReloadingProxy <IFoo> proxyFoo = (ConfigReloadingProxy <IFoo>)foo; Foo initialFoo = (Foo)proxyFoo.Object; foo.Qux = "xyz"; foo.Garply += (s, e) => { garplies++; }; proxyFoo.Reloading += (s, e) => { reloading++; }; proxyFoo.Reloaded += (s, e) => { reloaded++; }; initialFoo.OnGarply(); Assert.Equal(123, foo.Bar); Assert.Equal("xyz", foo.Qux); Assert.Equal(1, garplies); Assert.False(initialFoo.IsDisposed); Assert.Equal(0, reloading); Assert.Equal(0, reloaded); ChangeNonTypeSpecifiedConfig(config); Assert.True(initialFoo.IsDisposed); Assert.Equal(1, reloading); Assert.Equal(1, reloaded); Foo changedFoo = (Foo)proxyFoo.Object; changedFoo.OnGarply(); Assert.Equal(456, foo.Bar); Assert.Equal("xyz", foo.Qux); Assert.Equal(2, garplies); Assert.False(changedFoo.IsDisposed); ((IDisposable)foo).Dispose(); Assert.True(changedFoo.IsDisposed); }
public void WhenReloadOnChangeIsChangedToFalseObjectIsNotReloaded() { var config = GetConfig(); var garplies = 0; var reloading = 0; var reloaded = 0; IFoo foo = new ProxyFoo(config.GetSection("foo"), new DefaultTypes(), new ValueConverters(), null, null); ConfigReloadingProxy <IFoo> proxyFoo = (ConfigReloadingProxy <IFoo>)foo; Foo initialFoo = (Foo)proxyFoo.Object; foo.Qux = "xyz"; foo.Garply += (s, e) => { garplies++; }; proxyFoo.Reloading += (s, e) => { reloading++; }; proxyFoo.Reloaded += (s, e) => { reloaded++; }; initialFoo.OnGarply(); Assert.Equal(123, foo.Bar); Assert.Equal("xyz", foo.Qux); Assert.Equal(1, garplies); Assert.False(initialFoo.IsDisposed); Assert.Equal(0, reloading); Assert.Equal(0, reloaded); ChangeConfig(config, new KeyValuePair <string, string>("foo:reloadOnChange", "false")); Assert.False(initialFoo.IsDisposed); Assert.Equal(0, reloading); Assert.Equal(0, reloaded); Foo changedFoo = (Foo)proxyFoo.Object; Assert.Same(initialFoo, changedFoo); }