public void ConsecutiveDataLoadTest() { var f = new GenDataDef(); f.AddSubClass("", "Parent"); f.AddClassInstanceProperty(f.GetClassId("Parent"), "Name"); f.AddSubClass("Parent", "Class", "Definition"); var d = new GenData(f); var minimal = LoadGenData("Minimal"); minimal.Last(1); Assert.AreEqual("Property", minimal.Context[1].GenObject.Attributes[0]); Assert.AreEqual(1, minimal.Context[3].Count); var basic = LoadGenData("Basic"); basic.Last(1); Assert.AreEqual("Property", basic.Context[1].GenObject.Attributes[0]); Assert.AreEqual(2, basic.Context[3].Count); var definition = LoadGenData("Definition"); definition.Last(1); Assert.AreEqual("Property", definition.Context[1].GenObject.Attributes[0]); Assert.AreEqual(7, definition.Context[3].Count); Assert.AreSame(minimal, d.Cache.Internal("definition", "Minimal", minimal)); Assert.AreSame(basic, d.Cache.Internal("definition", "Basic", basic)); var newDefinition = d.Cache.Internal("definition", "Definition", definition); Assert.AreNotSame(definition, newDefinition); Assert.AreSame(minimal, d.Cache.Internal("definition", "Minimal", minimal)); Assert.AreSame(basic, d.Cache.Internal("definition", "Basic", basic)); Assert.AreSame(newDefinition, d.Cache.Internal("definition", "Definition", definition)); Assert.AreSame(minimal, d.Cache["Minimal"]); Assert.AreSame(basic, d.Cache["Basic"]); Assert.AreSame(newDefinition, d.Cache["Definition"]); d.Cache.Merge(); CreateGenObject(d, d.Root, "Parent", "Minimal"); ((SubClassReference)d.Context[1].GenObject.SubClass[0]).Reference = "Minimal"; CreateGenObject(d, d.Root, "Parent", "Basic"); ((SubClassReference)d.Context[1].GenObject.SubClass[0]).Reference = "Basic"; CreateGenObject(d, d.Root, "Parent", "Definition"); ((SubClassReference)d.Context[1].GenObject.SubClass[0]).Reference = "Definition"; d.First(1); Assert.AreEqual("Minimal", d.Context[2].Reference); Assert.AreSame(minimal.GenDataBase, d.Context[2].GenObject.GenDataBase); d.Last(2); Assert.AreEqual("Property", d.Context[2].GenObject.Attributes[0]); Assert.AreEqual(1, d.Context[4].Count); d.Next(1); Assert.AreEqual("Basic", d.Context[2].Reference); Assert.AreSame(basic.GenDataBase, d.Context[2].GenObject.GenDataBase); d.Last(2); Assert.AreEqual("Property", d.Context[2].GenObject.Attributes[0]); Assert.AreEqual(2, d.Context[4].Count); d.Next(1); Assert.AreEqual("Definition", d.Context[2].Reference); Assert.AreSame(newDefinition.GenDataBase, d.Context[2].GenObject.GenDataBase); d.Last(2); Assert.AreEqual("Property", d.Context[2].GenObject.Attributes[0]); Assert.AreEqual(7, d.Context[4].Count); d.First(0); }