public void TestPrimitiveMember() { const string primitiveMemberBaseYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset1,SiliconStudio.Assets.Quantum.Tests Id: 10000000-0000-0000-0000-000000000000 Tags: [] MyString: MyBaseString "; const string primitiveMemberOverridenYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset1,SiliconStudio.Assets.Quantum.Tests Id: 30000000-0000-0000-0000-000000000000 Archetype: 10000000-0000-0000-0000-000000000000:MyAsset Tags: [] MyString*: MyDerivedString "; const string primitiveMemberToReconcileYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset1,SiliconStudio.Assets.Quantum.Tests Id: 20000000-0000-0000-0000-000000000000 Archetype: 10000000-0000-0000-0000-000000000000:MyAsset Tags: [] MyString: MyDerivedString "; var context = DeriveAssetTest <Types.MyAsset1> .LoadFromYaml(primitiveMemberBaseYaml, primitiveMemberOverridenYaml); Assert.AreEqual("MyBaseString", context.BaseAsset.MyString); Assert.AreEqual("MyDerivedString", context.DerivedAsset.MyString); context.DerivedGraph.ReconcileWithBase(); Assert.AreEqual("MyBaseString", context.BaseAsset.MyString); Assert.AreEqual("MyDerivedString", context.DerivedAsset.MyString); context = DeriveAssetTest <Types.MyAsset1> .LoadFromYaml(primitiveMemberBaseYaml, primitiveMemberToReconcileYaml); Assert.AreEqual("MyBaseString", context.BaseAsset.MyString); Assert.AreEqual("MyDerivedString", context.DerivedAsset.MyString); context.DerivedGraph.ReconcileWithBase(); Assert.AreEqual("MyBaseString", context.BaseAsset.MyString); Assert.AreEqual("MyBaseString", context.DerivedAsset.MyString); }
public void TestSimpleCollectionAddMultipleAndCheckOrder() { var asset = new Types.MyAsset2 { MyStrings = { "String1", "String2", "String3", "String4" } }; var context = DeriveAssetTest <Types.MyAsset2> .DeriveAsset(asset); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyStrings); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyStrings); var basePropertyNode = (AssetNode)((IGraphNode)context.BaseGraph.RootNode).TryGetChild(nameof(Types.MyAsset2.MyStrings)); var derivedPropertyNode = (AssetNode)((IGraphNode)context.DerivedGraph.RootNode).TryGetChild(nameof(Types.MyAsset2.MyStrings)); derivedPropertyNode.Content.Add("String3.5", new Index(3)); derivedPropertyNode.Content.Add("String1.5", new Index(1)); Assert.AreEqual(6, context.DerivedAsset.MyStrings.Count); AssertCollection(derivedPropertyNode.Content, "String1", "String1.5", "String2", "String3", "String3.5", "String4"); basePropertyNode.Content.Add("String0.1", new Index(0)); Assert.AreEqual(5, context.BaseAsset.MyStrings.Count); AssertCollection(basePropertyNode.Content, "String0.1", "String1", "String2", "String3", "String4"); Assert.AreEqual(7, context.DerivedAsset.MyStrings.Count); AssertCollection(derivedPropertyNode.Content, "String0.1", "String1", "String1.5", "String2", "String3", "String3.5", "String4"); basePropertyNode.Content.Add("String1.1", new Index(2)); Assert.AreEqual(6, context.BaseAsset.MyStrings.Count); AssertCollection(basePropertyNode.Content, "String0.1", "String1", "String1.1", "String2", "String3", "String4"); Assert.AreEqual(8, context.DerivedAsset.MyStrings.Count); AssertCollection(derivedPropertyNode.Content, "String0.1", "String1", "String1.1", "String1.5", "String2", "String3", "String3.5", "String4"); basePropertyNode.Content.Add("String2.1", new Index(4)); Assert.AreEqual(7, context.BaseAsset.MyStrings.Count); AssertCollection(basePropertyNode.Content, "String0.1", "String1", "String1.1", "String2", "String2.1", "String3", "String4"); Assert.AreEqual(9, context.DerivedAsset.MyStrings.Count); AssertCollection(derivedPropertyNode.Content, "String0.1", "String1", "String1.1", "String1.5", "String2", "String2.1", "String3", "String3.5", "String4"); basePropertyNode.Content.Add("String3.1", new Index(6)); Assert.AreEqual(8, context.BaseAsset.MyStrings.Count); AssertCollection(basePropertyNode.Content, "String0.1", "String1", "String1.1", "String2", "String2.1", "String3", "String3.1", "String4"); Assert.AreEqual(10, context.DerivedAsset.MyStrings.Count); AssertCollection(derivedPropertyNode.Content, "String0.1", "String1", "String1.1", "String1.5", "String2", "String2.1", "String3", "String3.1", "String3.5", "String4"); basePropertyNode.Content.Add("String4.1", new Index(8)); Assert.AreEqual(9, context.BaseAsset.MyStrings.Count); AssertCollection(basePropertyNode.Content, "String0.1", "String1", "String1.1", "String2", "String2.1", "String3", "String3.1", "String4", "String4.1"); Assert.AreEqual(11, context.DerivedAsset.MyStrings.Count); AssertCollection(derivedPropertyNode.Content, "String0.1", "String1", "String1.1", "String1.5", "String2", "String2.1", "String3", "String3.1", "String3.5", "String4", "String4.1"); Assert.AreEqual(9, baseIds.Count); Assert.AreEqual(11, derivedIds.Count); Assert.AreEqual(baseIds[0], derivedIds[0]); Assert.AreEqual(baseIds[1], derivedIds[1]); Assert.AreEqual(baseIds[2], derivedIds[2]); Assert.AreEqual(baseIds[3], derivedIds[4]); Assert.AreEqual(baseIds[4], derivedIds[5]); Assert.AreEqual(baseIds[5], derivedIds[6]); Assert.AreEqual(baseIds[6], derivedIds[7]); Assert.AreEqual(baseIds[7], derivedIds[9]); Assert.AreEqual(baseIds[8], derivedIds[10]); }
public void TestDictionaryAddedKeyInBase() { const string baseYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset3,SiliconStudio.Assets.Quantum.Tests Id: 10000000-0000-0000-0000-000000000000 Tags: [] MyDictionary: 0a0000000a0000000a0000000a000000~Key1: String1 15000000150000001500000015000000~Key2.5: String2.5 14000000140000001400000014000000~Key2: String2 "; const string derivedYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset3,SiliconStudio.Assets.Quantum.Tests Id: 20000000-0000-0000-0000-000000000000 Archetype: 10000000-0000-0000-0000-000000000000:MyAsset Tags: [] MyDictionary: 0a0000000a0000000a0000000a000000~Key1: String1 14000000140000001400000014000000~Key2: String2 "; var context = DeriveAssetTest <Types.MyAsset3> .LoadFromYaml(baseYaml, derivedYaml); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary); Assert.AreEqual(3, context.BaseAsset.MyDictionary.Count); Assert.AreEqual("String1", context.BaseAsset.MyDictionary["Key1"]); Assert.AreEqual("String2.5", context.BaseAsset.MyDictionary["Key2.5"]); Assert.AreEqual("String2", context.BaseAsset.MyDictionary["Key2"]); Assert.AreEqual(2, context.DerivedAsset.MyDictionary.Count); Assert.AreEqual("String1", context.DerivedAsset.MyDictionary["Key1"]); Assert.AreEqual("String2", context.DerivedAsset.MyDictionary["Key2"]); Assert.AreEqual(3, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), baseIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(21), baseIds["Key2.5"]); Assert.AreEqual(IdentifierGenerator.Get(20), baseIds["Key2"]); Assert.AreEqual(2, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), derivedIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(20), derivedIds["Key2"]); context.DerivedGraph.ReconcileWithBase(); Assert.AreEqual(3, context.BaseAsset.MyDictionary.Count); Assert.AreEqual("String1", context.BaseAsset.MyDictionary["Key1"]); Assert.AreEqual("String2.5", context.BaseAsset.MyDictionary["Key2.5"]); Assert.AreEqual("String2", context.BaseAsset.MyDictionary["Key2"]); Assert.AreEqual(3, context.DerivedAsset.MyDictionary.Count); Assert.AreEqual("String1", context.DerivedAsset.MyDictionary["Key1"]); Assert.AreEqual("String2.5", context.DerivedAsset.MyDictionary["Key2.5"]); Assert.AreEqual("String2", context.DerivedAsset.MyDictionary["Key2"]); Assert.AreEqual(3, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), baseIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(21), baseIds["Key2.5"]); Assert.AreEqual(IdentifierGenerator.Get(20), baseIds["Key2"]); Assert.AreEqual(3, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), derivedIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(21), derivedIds["Key2.5"]); Assert.AreEqual(IdentifierGenerator.Get(20), derivedIds["Key2"]); }
public void TestCollectionRemovedItemFromBase() { const string baseYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset2,SiliconStudio.Assets.Quantum.Tests Id: 10000000-0000-0000-0000-000000000000 Tags: [] Struct: MyStrings: {} MyStrings: 0a0000000a0000000a0000000a000000: String1 14000000140000001400000014000000: String3 "; const string derivedYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset2,SiliconStudio.Assets.Quantum.Tests Id: 20000000-0000-0000-0000-000000000000 Archetype: 10000000-0000-0000-0000-000000000000:MyAsset Tags: [] Struct: MyStrings: {} MyStrings: 0a0000000a0000000a0000000a000000: String1 24000000240000002400000024000000: String2 14000000140000001400000014000000: String3 "; var context = DeriveAssetTest <Types.MyAsset2> .LoadFromYaml(baseYaml, derivedYaml); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyStrings); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyStrings); Assert.AreEqual(2, context.BaseAsset.MyStrings.Count); Assert.AreEqual("String1", context.BaseAsset.MyStrings[0]); Assert.AreEqual("String3", context.BaseAsset.MyStrings[1]); Assert.AreEqual(3, context.DerivedAsset.MyStrings.Count); Assert.AreEqual("String1", context.DerivedAsset.MyStrings[0]); Assert.AreEqual("String2", context.DerivedAsset.MyStrings[1]); Assert.AreEqual("String3", context.DerivedAsset.MyStrings[2]); Assert.AreEqual(2, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), baseIds[0]); Assert.AreEqual(IdentifierGenerator.Get(20), baseIds[1]); Assert.AreEqual(3, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), derivedIds[0]); Assert.AreEqual(IdentifierGenerator.Get(36), derivedIds[1]); Assert.AreEqual(IdentifierGenerator.Get(20), derivedIds[2]); context.DerivedGraph.ReconcileWithBase(); Assert.AreEqual(2, context.BaseAsset.MyStrings.Count); Assert.AreEqual("String1", context.BaseAsset.MyStrings[0]); Assert.AreEqual("String3", context.BaseAsset.MyStrings[1]); Assert.AreEqual(2, context.DerivedAsset.MyStrings.Count); Assert.AreEqual("String1", context.DerivedAsset.MyStrings[0]); Assert.AreEqual("String3", context.DerivedAsset.MyStrings[1]); Assert.AreEqual(2, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), baseIds[0]); Assert.AreEqual(IdentifierGenerator.Get(20), baseIds[1]); Assert.AreEqual(2, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), derivedIds[0]); Assert.AreEqual(IdentifierGenerator.Get(20), derivedIds[1]); }
public static DeriveAssetTest <T> DeriveAsset(T baseAsset) { var derivedAsset = (T)baseAsset.CreateDerivedAsset("MyAsset"); var result = new DeriveAssetTest <T>(baseAsset, derivedAsset); result.BuildGraph(); return(result); }
public void TestDictionaryRemovedDeletedItemFromBase() { const string baseYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset3,SiliconStudio.Assets.Quantum.Tests Id: 10000000-0000-0000-0000-000000000000 Tags: [] MyDictionary: 0a0000000a0000000a0000000a000000~Key1: String1 24000000240000002400000024000000~Key3: String3 "; const string derivedYaml = @"!SiliconStudio.Assets.Quantum.Tests.Types+MyAsset3,SiliconStudio.Assets.Quantum.Tests Id: 20000000-0000-0000-0000-000000000000 Archetype: 10000000-0000-0000-0000-000000000000:MyAsset Tags: [] MyDictionary: 0a0000000a0000000a0000000a000000~Key1: String1 24000000240000002400000024000000~Key3: String2 14000000140000001400000014000000~: ~(Deleted) "; var context = DeriveAssetTest <Types.MyAsset3> .LoadFromYaml(baseYaml, derivedYaml); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary); Assert.AreEqual(2, context.BaseAsset.MyDictionary.Count); Assert.AreEqual("String1", context.BaseAsset.MyDictionary["Key1"]); Assert.AreEqual("String3", context.BaseAsset.MyDictionary["Key3"]); Assert.AreEqual(2, context.DerivedAsset.MyDictionary.Count); Assert.AreEqual("String1", context.DerivedAsset.MyDictionary["Key1"]); Assert.AreEqual("String2", context.DerivedAsset.MyDictionary["Key3"]); Assert.AreEqual(2, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), baseIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(36), baseIds["Key3"]); Assert.AreEqual(2, derivedIds.KeyCount); Assert.AreEqual(1, derivedIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), derivedIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(36), derivedIds["Key3"]); Assert.AreEqual(IdentifierGenerator.Get(20), derivedIds.DeletedItems.Single()); context.DerivedGraph.ReconcileWithBase(); Assert.AreEqual(2, context.BaseAsset.MyDictionary.Count); Assert.AreEqual("String1", context.BaseAsset.MyDictionary["Key1"]); Assert.AreEqual("String3", context.BaseAsset.MyDictionary["Key3"]); Assert.AreEqual(2, context.DerivedAsset.MyDictionary.Count); Assert.AreEqual("String1", context.DerivedAsset.MyDictionary["Key1"]); Assert.AreEqual("String3", context.DerivedAsset.MyDictionary["Key3"]); Assert.AreEqual(2, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), baseIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(36), baseIds["Key3"]); Assert.AreEqual(2, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(IdentifierGenerator.Get(10), derivedIds["Key1"]); Assert.AreEqual(IdentifierGenerator.Get(36), derivedIds["Key3"]); }
public static DeriveAssetTest <T> LoadFromYaml(string baseYaml, string derivedYaml) { var baseAsset = AssetFileSerializer.Load <T>(ToStream(baseYaml), $"MyAsset{Types.FileExtension}"); var derivedAsset = AssetFileSerializer.Load <T>(ToStream(derivedYaml), $"MyDerivedAsset{Types.FileExtension}"); var result = new DeriveAssetTest <T>(baseAsset.Asset, derivedAsset.Asset) { BaseAssetItem = { Overrides = baseAsset.Overrides }, DerivedAssetItem = { Overrides = derivedAsset.Overrides } }; result.BuildGraph(); return(result); }
public void TestSimpleDictionaryRemoveDeleted() { var asset = new Types.MyAsset3 { MyDictionary = { { "Key1", "String1" }, { "Key2", "String2" }, { "Key3", "String3" }, { "Key4", "String4" } } }; var context = DeriveAssetTest <Types.MyAsset3> .DeriveAsset(asset); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary); var basePropertyNode = (AssetNode)((IGraphNode)context.BaseGraph.RootNode).TryGetChild(nameof(Types.MyAsset3.MyDictionary)); var derivedPropertyNode = (AssetNode)((IGraphNode)context.DerivedGraph.RootNode).TryGetChild(nameof(Types.MyAsset3.MyDictionary)); // Delete an item from the derived and then delete the same from the base var derivedDeletedId = derivedIds["Key3"]; derivedPropertyNode.Content.Remove("String3", new Index("Key3")); var baseDeletedId = baseIds["Key3"]; basePropertyNode.Content.Remove("String3", new Index("Key3")); Assert.AreEqual(3, context.BaseAsset.MyDictionary.Count); Assert.AreEqual(3, context.DerivedAsset.MyDictionary.Count); Assert.AreEqual("String1", basePropertyNode.Content.Retrieve(new Index("Key1"))); Assert.AreEqual("String2", basePropertyNode.Content.Retrieve(new Index("Key2"))); Assert.AreEqual("String4", basePropertyNode.Content.Retrieve(new Index("Key4"))); Assert.AreEqual("String1", derivedPropertyNode.Content.Retrieve(new Index("Key1"))); Assert.AreEqual("String2", derivedPropertyNode.Content.Retrieve(new Index("Key2"))); Assert.AreEqual("String4", derivedPropertyNode.Content.Retrieve(new Index("Key4"))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetContentOverride()); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index("Key1"))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index("Key2"))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index("Key4"))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetContentOverride()); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index("Key1"))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index("Key2"))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index("Key4"))); Assert.AreEqual(3, baseIds.Count); Assert.AreEqual(3, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(3, derivedIds.Count); Assert.AreEqual(3, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(baseIds["Key1"], derivedIds["Key1"]); Assert.AreEqual(baseIds["Key2"], derivedIds["Key2"]); Assert.AreEqual(baseIds["Key4"], derivedIds["Key4"]); Assert.False(derivedIds.IsDeleted(derivedDeletedId)); Assert.False(baseIds.IsDeleted(baseDeletedId)); }
public void TestSimpleCollectionRemoveDeleted() { var asset = new Types.MyAsset2 { MyStrings = { "String1", "String2", "String3", "String4" } }; var context = DeriveAssetTest <Types.MyAsset2> .DeriveAsset(asset); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyStrings); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyStrings); var basePropertyNode = (AssetNode)((IGraphNode)context.BaseGraph.RootNode).TryGetChild(nameof(Types.MyAsset2.MyStrings)); var derivedPropertyNode = (AssetNode)((IGraphNode)context.DerivedGraph.RootNode).TryGetChild(nameof(Types.MyAsset2.MyStrings)); // Delete an item from the derived and then delete the same from the base var derivedDeletedId = derivedIds[2]; var baseDeletedId = baseIds[2]; derivedPropertyNode.Content.Remove("String3", new Index(2)); basePropertyNode.Content.Remove("String3", new Index(2)); Assert.AreEqual(3, context.BaseAsset.MyStrings.Count); Assert.AreEqual(3, context.DerivedAsset.MyStrings.Count); Assert.AreEqual("String1", basePropertyNode.Content.Retrieve(new Index(0))); Assert.AreEqual("String2", basePropertyNode.Content.Retrieve(new Index(1))); Assert.AreEqual("String4", basePropertyNode.Content.Retrieve(new Index(2))); Assert.AreEqual("String1", derivedPropertyNode.Content.Retrieve(new Index(0))); Assert.AreEqual("String2", derivedPropertyNode.Content.Retrieve(new Index(1))); Assert.AreEqual("String4", derivedPropertyNode.Content.Retrieve(new Index(2))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetContentOverride()); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index(0))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index(1))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index(2))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetContentOverride()); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index(0))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index(1))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index(2))); Assert.AreEqual(3, baseIds.Count); Assert.AreEqual(3, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(3, derivedIds.Count); Assert.AreEqual(3, derivedIds.KeyCount); Assert.AreEqual(0, derivedIds.DeletedCount); Assert.AreEqual(baseIds[0], derivedIds[0]); Assert.AreEqual(baseIds[1], derivedIds[1]); Assert.AreEqual(baseIds[2], derivedIds[2]); Assert.False(derivedIds.IsDeleted(derivedDeletedId)); Assert.False(baseIds.IsDeleted(baseDeletedId)); }
public void TestSimpleDictionaryAddWithCollision() { var asset = new Types.MyAsset3 { MyDictionary = { { "Key1", "String1" }, { "Key2", "String2" } } }; var context = DeriveAssetTest <Types.MyAsset3> .DeriveAsset(asset); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary); var basePropertyNode = (AssetMemberNode)context.BaseGraph.RootNode[nameof(Types.MyAsset3.MyDictionary)]; var derivedPropertyNode = (AssetMemberNode)context.DerivedGraph.RootNode[nameof(Types.MyAsset3.MyDictionary)]; // Update a key to derived and then the same key to the base derivedPropertyNode.Add("String3", new Index("Key3")); basePropertyNode.Add("String4", new Index("Key3")); Assert.AreEqual(3, context.BaseAsset.MyDictionary.Count); Assert.AreEqual(3, context.DerivedAsset.MyDictionary.Count); Assert.AreEqual("String1", basePropertyNode.Retrieve(new Index("Key1"))); Assert.AreEqual("String2", basePropertyNode.Retrieve(new Index("Key2"))); Assert.AreEqual("String4", basePropertyNode.Retrieve(new Index("Key3"))); Assert.AreEqual("String1", derivedPropertyNode.Retrieve(new Index("Key1"))); Assert.AreEqual("String2", derivedPropertyNode.Retrieve(new Index("Key2"))); Assert.AreEqual("String3", derivedPropertyNode.Retrieve(new Index("Key3"))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetContentOverride()); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index("Key1"))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index("Key2"))); Assert.AreEqual(OverrideType.Base, basePropertyNode.GetItemOverride(new Index("Key3"))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetContentOverride()); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index("Key1"))); Assert.AreEqual(OverrideType.Base, derivedPropertyNode.GetItemOverride(new Index("Key2"))); Assert.AreEqual(OverrideType.New, derivedPropertyNode.GetItemOverride(new Index("Key3"))); Assert.AreNotSame(baseIds, derivedIds); Assert.AreEqual(3, baseIds.KeyCount); Assert.AreEqual(0, baseIds.DeletedCount); Assert.AreEqual(3, derivedIds.KeyCount); Assert.AreEqual(1, derivedIds.DeletedCount); Assert.AreEqual(baseIds["Key1"], derivedIds["Key1"]); Assert.AreEqual(baseIds["Key2"], derivedIds["Key2"]); Assert.AreNotEqual(baseIds["Key3"], derivedIds["Key3"]); Assert.AreEqual(baseIds["Key3"], derivedIds.DeletedItems.Single()); Assert.AreEqual(3, context.BaseAsset.MyDictionary.Count); Assert.AreEqual(3, context.DerivedAsset.MyDictionary.Count); }