public void DataContainerBase_SetBinding_MustBindOneWayToSource() { const string PROP_NAME = "IntProperty"; const int VALUE = 42; const int NEW_VALUE = 14; DataContainerBase property = (DataContainerBase)PropertyContainerBuilder.Create() .Property(PROP_NAME, VALUE) .Build(); var bindingTarget = new BindingTestObject(); Assert.NotEqual(VALUE, bindingTarget.IntProperty); property.SetBinding(PROP_NAME, () => bindingTarget.IntProperty, BindingMode.OneWayToSource); Assert.Equal(VALUE, bindingTarget.IntProperty); property.SetValue(PROP_NAME, NEW_VALUE); Assert.NotEqual(NEW_VALUE, bindingTarget.IntProperty); Assert.Equal(VALUE, bindingTarget.IntProperty); bindingTarget.IntProperty = 32; int propertyValue = 0; property.GetValue(PROP_NAME, ref propertyValue); property.RemoveBinding(PROP_NAME, () => bindingTarget.IntProperty); Assert.Equal(propertyValue, bindingTarget.IntProperty); }
public List<ITreeItem> GetColumns(DataContainerBase table) { if( table.Columns.Count == 0 ) { table.Columns.AddRange(_db.GetColumns(table.Name, table.Parent.Name).ConvertAll(t => new Column(t))); } return table.Columns.Cast<ITreeItem>().ToList(); }
public List <ITreeItem> GetColumns(DataContainerBase table) { if (table.Columns.Count == 0) { table.Columns.AddRange(_db.GetColumns(table.Name, table.Parent.Name).ConvertAll(t => new Column(t))); } return(table.Columns.Cast <ITreeItem>().ToList()); }
public void DataContainerAutoUpdater_ShouldAddNewValuesWithMultiLevelData() { string path = Path.GetTempFileName(); DataContainerBase A = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("D", 3) .DataContainer("AB", b => b .Data("AB1", 1)) .Build(); A.FilePath = path; A.SaveAsXml(path); var tester = new AutoUpateTester(A); tester.AutoUpdater.PollingInterval = 10; // allow adding tester.AutoUpdater.CanAddItems = true; Assert.False(tester.UpdateStartedInvoked); Assert.False(tester.UpdateFinishedInvoked); IDataContainer Updated = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("D", 3) .DataContainer("AB", b => b .Data("AB1", 1) .Data("AB2", 2)) .Build(); Updated.SaveAsXml(path); // wait timer Thread.Sleep((int)tester.AutoUpdater.PollingInterval + 20); Assert.True(tester.UpdateStartedInvoked); Assert.True(tester.UpdateFinishedInvoked); IDataContainer AB = (IDataContainer)A["AB"]; // 1 value added Assert.Equal(2, AB.Count); // check if value exist Assert.True(AB.ContainsData("AB2")); // check it has correct value Assert.Equal(2, (int)AB["AB2"]); File.Delete(path); }
public void DataContainerBase_Get_MustReturnDefaultIfNotPresent() { const string PROP_NAME = "IntProperty"; DataContainerBase property = (DataContainerBase)PropertyContainerBuilder.Create() .Property(PROP_NAME, 42) .Build(); int prop = 0; bool containsProperty = property.GetValue("blah", ref prop); Assert.False(containsProperty); Assert.Equal(default, prop);
public void DataContainerBase_CanAccessChildDataFromRoot() { DataContainerBase Root = (DataContainerBase)DataContainerBuilder.Create("Root") .DataContainer("Child", b => b .DataContainer("GrandChild", c => c .Data("A", 1) .Data("B", 2))) .Build(); int a = Root.GetValue(new Key <int>("Child.GrandChild.A")); int b = Root.GetValue(new Key <int>("Child.GrandChild.B")); Assert.Equal(1, a); Assert.Equal(2, b); }
public void DataContainerBase_Morph_MustRecreatesSameObject(Type t) { var obj = Activator.CreateInstance(t); DataContainerBase data = (DataContainerBase)DataContainerBuilder.CreateObject("Untitiled", obj); var morphedData = data.Morph(); foreach (var prop in t.GetProperties()) { var expected = prop.GetValue(obj); var actualData = prop.GetValue(morphedData); Assert.Equal(expected, actualData); } }
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_ShouldUpdateValuesWithMultiLevelData() { string path = Path.GetTempFileName(); DataContainerBase A = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("D", 3) .DataContainer("AB", b => b .Data("AB1", 1)) .Build(); A.FilePath = path; A.SaveAsXml(path); var tester = new AutoUpateTester(A); tester.AutoUpdater.PollingInterval = 10; Assert.False(tester.UpdateStartedInvoked); Assert.False(tester.UpdateFinishedInvoked); IDataContainer Updated = (DataContainerBase)DataContainerBuilder.Create("A") .Data("A", 1) .Data("B", 2) .Data("D", 3) .DataContainer("AB", b => b .Data("AB1", 2)) .Build(); Updated.SaveAsXml(path); // wait timer Thread.Sleep((int)tester.AutoUpdater.PollingInterval + 20); Assert.True(tester.UpdateStartedInvoked); Assert.True(tester.UpdateFinishedInvoked); IDataContainer AB = (IDataContainer)A["AB"]; IDataContainer U_AB = (IDataContainer)Updated["AB"]; Assert.Equal(2, (int)AB["AB1"]); Assert.Equal(U_AB["AB1"], AB["AB1"]); 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); }
public void DataContainerBase_Get_MustGetCorrectValue() { const string PROP_NAME = "IntProperty"; DataContainerBase property = (DataContainerBase)PropertyContainerBuilder.Create() .Property(PROP_NAME, 42) .Build(); int prop = 0; bool containsProperty = property.GetValue(PROP_NAME, ref prop); Assert.True(containsProperty); Assert.NotEqual(0, prop); Assert.Equal(42, prop); int prop2 = property.GetValue <int>(PROP_NAME); Assert.NotEqual(0, prop2); Assert.Equal(42, prop2); }
public void DataContainerBase_Store_MustDeserialize(Type t) { var obj = Activator.CreateInstance(t); DataContainerBase data = (DataContainerBase)DataContainerBuilder.CreateObject("Untitiled", obj); var serializedData = XmlHelper.SerializeToString(data); var recreatedData = XmlHelper.DeserializeFromString <System.Configuration.DataContainer>(serializedData); Assert.NotNull(recreatedData); var morphedData = recreatedData.Morph(); foreach (var prop in t.GetProperties()) { var expected = prop.GetValue(obj); var actualData = prop.GetValue(morphedData); Assert.Equal(expected, actualData); } }