public void DataContainerAutoUpdater_ShouldAddNewValues() { string path = Path.GetTempFileName(); DataContainerBase A = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("D", 3) .Build(); A.FilePath = path; A.SaveAsXml(path); var tester = new AutoUpateTester(A); Assert.False(tester.UpdateStartedInvoked); Assert.False(tester.UpdateFinishedInvoked); // allow adding new items tester.AutoUpdater.CanAddItems = true; tester.AutoUpdater.PollingInterval = 10; IDataContainer Updated = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("C", 3) .Data("D", 5) .Build(); Updated.SaveAsXml(path); // wait timer Thread.Sleep((int)tester.AutoUpdater.PollingInterval + 20); Assert.True(tester.UpdateStartedInvoked); Assert.True(tester.UpdateFinishedInvoked); // 1 new property added Assert.Equal(4, A.Count); // new value is present Assert.True(A.ContainsData("C")); // has correct value Assert.Equal(3, (int)A["C"]); File.Delete(path); }
public void DataContainerAutoUpdater_ShouldRemoveValues() { string path = Path.GetTempFileName(); DataContainerBase A = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("D", 3) .Build(); A.FilePath = path; A.SaveAsXml(path); var tester = new AutoUpateTester(A); tester.AutoUpdater.PollingInterval = 10; Assert.False(tester.UpdateStartedInvoked); Assert.False(tester.UpdateFinishedInvoked); // allow removing items tester.AutoUpdater.CanRemoveItems = true; IDataContainer Updated = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("D", 5) .Build(); Updated.SaveAsXml(path); // wait timer Thread.Sleep((int)tester.AutoUpdater.PollingInterval + 20); Assert.True(tester.UpdateStartedInvoked); Assert.True(tester.UpdateFinishedInvoked); // 1 new property removed Assert.Equal(2, A.Count); // new value is not present Assert.False(A.ContainsData("B")); File.Delete(path); }