Пример #1
0
        public void IDataContainer_ShouldRaisePropertyChanged()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .Build();

            var listener = new PropertyChangedListener(A);

            A["A"] = 55;
            Assert.Equal("A", listener.LastChangedProperty);
            Assert.Single(listener.PropertiesChanged);

            A["B"] = 23;
            Assert.Equal("B", listener.LastChangedProperty);
            Assert.Equal(2, listener.PropertiesChanged.Count);

            A["C"] = 29;
            Assert.Equal("C", listener.LastChangedProperty);
            Assert.Equal(3, listener.PropertiesChanged.Count);

            Assert.Contains("A", listener.PropertiesChanged);
            Assert.Contains("B", listener.PropertiesChanged);
            Assert.Contains("C", listener.PropertiesChanged);
        }
Пример #2
0
        public void IDataContainer_ShouldRaisePropertyChangedForNestedContainers()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("AA", b => b
                                              .Data("A1", 23)
                                              .Data("A2", 24)
                                              .DataContainer("AAA", b => b
                                                             .Data("AA1", 3)))
                               .Build();

            var listener = new PropertyChangedListener(A);

            A["A"] = 55;
            Assert.Equal("A", listener.LastChangedProperty);
            Assert.Single(listener.PropertiesChanged);

            IDataContainer AA = (IDataContainer)A["AA"];

            AA["A2"] = 42;
            Assert.Equal("AA.A2", listener.LastChangedProperty);
            Assert.Equal(2, listener.PropertiesChanged.Count);

            IDataContainer AAA = (IDataContainer)AA["AAA"];

            AAA["AA1"] = 5;
            Assert.Equal("AA.AAA.AA1", listener.LastChangedProperty);
            Assert.Equal(3, listener.PropertiesChanged.Count);
        }
        public void IDataContainer_InplaceIntersect_Works()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("AA", b => b
                                              .Data("A1", 11)
                                              .Data("A2", 12))
                               .Data("D", 4)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .Data("X", 4)
                               .Data("D", 2)
                               .Data("Z", 3)
                               .Build();

            int commonCount = A.GetAllKeys().Intersect(B.GetAllKeys()).Count();

            A.InplaceIntersect(B);

            Assert.Equal(commonCount, A.GetAllKeys().Count());
        }
Пример #4
0
        public void DataObjectFactory_RegisterDataObject_Works()
        {
            DataObjectFactory.RegisterDataObject <Utils.PersonDataObject>();

            IDataContainer dc = DataContainerBuilder.Create()
                                .Data("person", new Utils.Person {
                FirstName = "John", LastName = "Doe"
            })
                                .Build();

            string xml = XmlHelper.SerializeToString(dc);

            IDataContainer dcNew = XmlHelper.DeserializeFromString <System.Configuration.DataContainer>(xml);

            Assert.True(dcNew.ContainsData("person"));

            DataObject dobj = dcNew.Find("person");

            Assert.Equal("prsn", dobj.Type);

            Utils.Person p = dobj.GetValue() as Utils.Person;

            Assert.Equal("John", p.FirstName);
            Assert.Equal("Doe", p.LastName);
        }
        public void IDataContainer_Intersect_UsesValuesFromFirstForSameProperty()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 2)
                               .Data("B", 1)
                               .Build();

            IDataContainer AintersectB = A.Intersect(B);
            IDataContainer BintersectA = B.Intersect(A);

            int AA = (int)A["A"];
            int AB = (int)A["B"];

            int BA = (int)B["A"];
            int BB = (int)B["B"];

            int AUBA = (int)AintersectB["A"];
            int AUBB = (int)AintersectB["B"];
            int BUAA = (int)BintersectA["A"];
            int BUAB = (int)BintersectA["B"];

            Assert.Equal(AA, AUBA);
            Assert.Equal(AB, AUBB);

            Assert.Equal(BA, BUAA);
            Assert.Equal(BB, BUAB);
        }
Пример #6
0
        public void SnapShot_GetAllValuesMultiLevelData()
        {
            IDataContainer A = (DataContainerBase)DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("AB", b => b
                                              .Data("AB1", 1)
                                              .Data("AB2", 2))
                               .Build();

            SnapShot snapShot = A.GetSnapShot();

            Assert.Equal(5, snapShot.Count());
            Assert.Contains("A", snapShot.Keys);
            Assert.Contains("B", snapShot.Keys);
            Assert.Contains("C", snapShot.Keys);
            Assert.Contains("AB.AB1", snapShot.Keys);
            Assert.Contains("AB.AB2", snapShot.Keys);

            Assert.Equal(A["A"], snapShot["A"].Value);
            Assert.Equal(A["B"], snapShot["B"].Value);
            Assert.Equal(A["C"], snapShot["C"].Value);
            Assert.Equal(A["AB.AB1"], snapShot["AB.AB1"].Value);
            Assert.Equal(A["AB.AB2"], snapShot["AB.AB2"].Value);
        }
Пример #7
0
        public void SnapShot_Difference_OnlyHasValuesWhichAreDifferent()
        {
            IDataContainer A = (DataContainerBase)DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("AB", b => b
                                              .Data("AB1", 1)
                                              .Data("AB2", 2))
                               .Build();

            IDataContainer B = (DataContainerBase)DataContainerBuilder.Create("B")
                               .Data("A", 1)
                               .Data("B", 22)
                               .Data("C", 3)
                               .DataContainer("AB", b => b
                                              .Data("AB1", 1)
                                              .Data("AB2", 21))
                               .Build();

            SnapShotDiff diff = A.GetSnapShot() - B.GetSnapShot();

            Assert.Equal(2, diff.Count());
            Assert.Contains("B", diff.Keys);
            Assert.Contains("AB.AB2", diff.Keys);

            Assert.Equal(A["B"], diff["B"].Left);
            Assert.Equal(B["B"], diff["B"].Right);

            Assert.Equal(A["AB.AB2"], diff["AB.AB2"].Left);
            Assert.Equal(B["AB.AB2"], diff["AB.AB2"].Right);
        }
        public void IDataContainer_Intersect_MustWorkWithSingleLevelData()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("C", 3)
                               .Data("E", 5)
                               .Data("G", 7)
                               .Data("Z", 26)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("A")
                               .Data("B", 2)
                               .Data("D", 4)
                               .Data("F", 6)
                               .Data("H", 8)
                               .Data("Z", 28)
                               .Build();

            IDataContainer AintersectB = A.Intersect(B);

            Assert.Equal(1, AintersectB.Count); // only 1 common

            var keys = AintersectB.GetKeys().ToList();

            keys.Sort();
            Assert.Equal("Z", string.Join("", keys)); // all keys are present.
        }
        public void IDataContainer_Except_RemovesCommonProperties()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("AA", b => b
                                              .Data("A1", 11)
                                              .Data("A2", 12))
                               .Data("D", 4)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("F", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .Data("X", 4)
                               .Data("Y", 2)
                               .Data("Z", 3)
                               .Build();

            IDataContainer AdifferenceB = A.Except(B);
            IDataContainer BdifferenceA = B.Except(A);

            Assert.Equal(3, AdifferenceB.Count); // remove B,C from A
            Assert.Equal(4, BdifferenceA.Count); // remove B,C from B
        }
        public void IDataContainer_Union_MustWorkWithSingleLevelData()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("C", 3)
                               .Data("E", 5)
                               .Data("G", 7)
                               .Data("Z", 26)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("A")
                               .Data("B", 2)
                               .Data("D", 4)
                               .Data("F", 6)
                               .Data("H", 8)
                               .Data("Z", 28)
                               .Build();

            IDataContainer AunionB = A.Union(B);

            Assert.Equal(9, AunionB.Count); // 4 + 4 + 1 (common)

            var keys = AunionB.GetKeys().ToList();

            keys.Sort();
            Assert.Equal("ABCDEFGHZ", string.Join("", keys)); // all keys are present.
        }
        public void IDataContainer_Remove_RemovesCommonProperties()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("AA", b => b
                                              .Data("A1", 11)
                                              .Data("A2", 12))
                               .Data("D", 4)
                               .Build();

            var cloneA = A.Clone() as IDataContainer;

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("F", 1)
                               .Data("B", 2)
                               .Data("C", 3)
                               .Data("X", 4)
                               .Data("Y", 2)
                               .Data("Z", 3)
                               .Build();

            var cloneB = B.Clone() as IDataContainer;

            cloneA.Remove(B);
            cloneB.Remove(A);

            Assert.Equal(3, cloneA.Count); // remove B,C from A
            Assert.Equal(4, cloneB.Count); // remove B,C from B
        }
        public void IDataContainer_IsIdenticalReturnsFalseForMultiLevelDataWithSameNumberOfKeys()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .DataContainer("AA", b => b
                                              .Data("A1", 1)
                                              .Data("A3", 3))
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("CC", b => b
                                              .Data("C1", 1)
                                              .Data("C2", 2))
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 2)
                               .DataContainer("AA", b => b
                                              .Data("A3", 3))
                               .Data("B", 3)
                               .Data("C", 4)
                               .DataContainer("CC", b => b
                                              .Data("C1", 1)
                                              .Data("C2", 2)
                                              .Data("C3", 3))
                               .Build();

            Assert.False(A.IsIdentical(B));
            Assert.False(B.IsIdentical(A));
        }
        public void IDataContainer_IsIdenticalReturnsTrueForMultiLevelData()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .DataContainer("AA", b => b
                                              .Data("A1", 1)
                                              .Data("A2", 2)
                                              .Data("A3", 3))
                               .Data("B", 2)
                               .Data("C", 3)
                               .DataContainer("CC", b => b
                                              .Data("C1", 1)
                                              .Data("C2", 2))
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 2)
                               .DataContainer("AA", b => b
                                              .Data("A1", 1)
                                              .Data("A2", 2)
                                              .Data("A3", 3))
                               .Data("B", 3)
                               .Data("C", 4)
                               .DataContainer("CC", b => b
                                              .Data("C1", 1)
                                              .Data("C2", 2))
                               .Build();

            Assert.True(A.IsIdentical(B));
            Assert.True(B.IsIdentical(A));
        }
        public void IDataContainer_Union_UsesValuesFromFirstForSameProperty()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 2)
                               .Data("B", 1)
                               .Build();

            IDataContainer AunionB = A.Union(B);
            IDataContainer BunionA = B.Union(A);

            int AA = (int)A["A"];
            int AB = (int)A["B"];

            int BA = (int)B["A"];
            int BB = (int)B["B"];

            int AUBA = (int)AunionB["A"];
            int AUBB = (int)AunionB["B"];
            int BUAA = (int)BunionA["A"];
            int BUAB = (int)BunionA["B"];

            Assert.Equal(AA, AUBA);
            Assert.Equal(AB, AUBB);

            Assert.Equal(BA, BUAA);
            Assert.Equal(BB, BUAB);
        }
        public void DataContainerAutoSaver_WillNotUseFiltersIfUseFilterIsFalse()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Data("D", 3)
                               .Build();

            var tester = new AutoSaveTester(A);

            tester.AutoSaver.SaveDelay  = 10;
            tester.AutoSaver.UseFilters = false;
            tester.AutoSaver.AddFilter("D");

            Assert.False(tester.SavingStartedInvoked);
            Assert.False(tester.SavingFinishedInvoked);

            A["B"] = 5;

            // wait timer
            Thread.Sleep((int)tester.AutoSaver.SaveDelay + 20);

            Assert.True(tester.SavingStartedInvoked);
            Assert.True(tester.SavingFinishedInvoked);
        }
        [InlineData(typeof(UninitializedPOCO), 4)] // Should not create data for null properties, or should it ??
        public void DataContainerBuilder_CreateObject_MustCreatesObjectWithCorrectCount(Type t, int count)
        {
            var obj = Activator.CreateInstance(t);

            IDataContainer data = DataContainerBuilder.CreateObject("Untitiled", obj);

            Assert.Equal(count, data.Count);
        }
        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 DataContainerBuilder_CreateObject_MustCreateObjectWithCorrectValue(Type t)
        {
            var obj = Activator.CreateInstance(t);

            IDataContainer data = DataContainerBuilder.CreateObject("Untitiled", obj);

            foreach (var item in data)
            {
                var expected = t.GetProperty(item.Name).GetValue(obj);
                var actual   = item.GetValue();
                Assert.Equal(expected, actual);
            }
        }
Пример #19
0
        public void IDataContainer_Clone_WorksForValueTypes()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", new Color(1, 1, 1))
                               .Build();

            IDataContainer clone = (IDataContainer)A.Clone();

            Assert.Equal(A.Count, clone.Count);
            Assert.True(A.GetKeys().SequenceEqual(clone.GetKeys()));
            Assert.Equal(A["A"], clone["A"]);
            Assert.Equal(A["B"], clone["B"]);
        }
        public void IDataContainer_Intersect_MustWorkWithMultiLevelData()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .DataContainer("AA", b => b
                                              .Data("A1", 11)
                                              .Data("A2", 12)
                                              .Data("A3", 13))
                               .Data("C", 3)
                               .DataContainer("CC", b => b
                                              .Data("C1", 31)
                                              .Data("C3", 33))
                               .DataContainer("BB", b => b
                                              .Data("B1", 21)
                                              .Data("B2", 22))
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 1)
                               .Data("B", 2)
                               .DataContainer("AA", b => b
                                              .Data("A4", 14)
                                              .Data("A5", 15)
                                              .Data("A6", 16))
                               .Data("C", 3)
                               .DataContainer("CC", b => b
                                              .Data("C2", 32))
                               .DataContainer("BB", b => b
                                              .Data("B1", 23)
                                              .Data("B2", 24)
                                              .Data("B3", 25))
                               .Build();

            IDataContainer AintersectB = A.Intersect(B);

            Assert.Equal(6, AintersectB.Count); // both have same keys, 6

            IDataContainer AA = (IDataContainer)AintersectB["AA"];

            Assert.Equal(0, AA.Count); // nothing common

            IDataContainer CC = (IDataContainer)AintersectB["CC"];

            Assert.Equal(0, CC.Count); // nothing common

            IDataContainer BB = (IDataContainer)AintersectB["BB"];

            Assert.Equal(2, BB.Count); // 2 common, 1 only in B
        }
Пример #21
0
        public void IDataCointainer_Clone_WorksForReferenceTypes()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", new object())
                               .Data("B", new object())
                               .Build();

            IDataContainer clone = (IDataContainer)A.Clone();

            Assert.Equal(A.Count, clone.Count);
            Assert.True(A.GetKeys().SequenceEqual(clone.GetKeys()));

            Assert.NotSame(A["A"], clone["A"]);
            Assert.NotSame(A["B"], clone["B"]);
        }
        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 IDataContainer_IsIdenticalReturnsFalseForSingleLevelData()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Data("B", 2)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 2)
                               .Data("B", 3)
                               .Data("C", 4)
                               .Build();

            Assert.False(A.IsIdentical(B));
            Assert.False(B.IsIdentical(A));
        }
Пример #25
0
        public void IDataContainer_RaisesCollectionChangedOnClear()
        {
            IDataContainer A = DataContainerBuilder.Create()
                               .Data("A", 1)
                               .Data("B", 2)
                               .Build();

            var listener = new CollectionChangedListener(A);

            Assert.Null(listener.LastChange);

            A.Clear();

            Assert.NotNull(listener.LastChange);
            Assert.Equal(NotifyCollectionChangedAction.Reset, listener.LastChange.Action);
        }
        public void IDataContainer_Intersect_UsesFirstsNameForResultName()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 22)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("A", 33)
                               .Build();

            IDataContainer AintersectB = A.Intersect(B);
            IDataContainer BintersectA = B.Intersect(A);

            Assert.Equal(A.Name, AintersectB.Name);
            Assert.Equal(B.Name, BintersectA.Name);
        }
        public void IDataContainer_Union_UsesFirstsNameForResultName()
        {
            IDataContainer A = DataContainerBuilder.Create("A")
                               .Data("A", 22)
                               .Build();

            IDataContainer B = DataContainerBuilder.Create("B")
                               .Data("B", 33)
                               .Build();

            IDataContainer AunionB = A.Union(B);
            IDataContainer BunionA = B.Union(A);

            Assert.Equal(A.Name, AunionB.Name);
            Assert.Equal(B.Name, BunionA.Name);
        }
        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_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);
        }
Пример #30
0
        public void SnapShot_ValuesShouldNotChangeWhenIDataContainerChanges()
        {
            IDataContainer A = (DataContainerBase)DataContainerBuilder.Create("A")
                               .Data("A", 1)
                               .Build();

            SnapShot snapShot = A.GetSnapShot();

            Assert.Single(snapShot);
            Assert.Equal(A["A"], snapShot["A"].Value);

            object origValue = A["A"];

            A["A"] = 3;

            Assert.NotEqual(A["A"], snapShot["A"].Value);
            Assert.Equal(origValue, snapShot["A"].Value);
        }