public void TestSimpleDictionaryRemoveDeleted() { var asset = new Types.MyAsset3 { MyDictionary = { { "Key1", "String1" }, { "Key2", "String2" }, { "Key3", "String3" }, { "Key4", "String4" } } }; var context = DeriveAssetTest <Types.MyAsset3, Types.MyAssetBasePropertyGraph> .DeriveAsset(asset); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary); var basePropertyNode = context.BaseGraph.RootNode[nameof(Types.MyAsset3.MyDictionary)]; var derivedPropertyNode = context.DerivedGraph.RootNode[nameof(Types.MyAsset3.MyDictionary)]; // Delete an item from the derived and then delete the same from the base var derivedDeletedId = derivedIds["Key3"]; derivedPropertyNode.Target.Remove("String3", new NodeIndex("Key3")); var baseDeletedId = baseIds["Key3"]; basePropertyNode.Target.Remove("String3", new NodeIndex("Key3")); Assert.Equal(3, context.BaseAsset.MyDictionary.Count); Assert.Equal(3, context.DerivedAsset.MyDictionary.Count); Assert.Equal("String1", basePropertyNode.Retrieve(new NodeIndex("Key1"))); Assert.Equal("String2", basePropertyNode.Retrieve(new NodeIndex("Key2"))); Assert.Equal("String4", basePropertyNode.Retrieve(new NodeIndex("Key4"))); Assert.Equal("String1", derivedPropertyNode.Retrieve(new NodeIndex("Key1"))); Assert.Equal("String2", derivedPropertyNode.Retrieve(new NodeIndex("Key2"))); Assert.Equal("String4", derivedPropertyNode.Retrieve(new NodeIndex("Key4"))); Assert.Equal(OverrideType.Base, basePropertyNode.GetContentOverride()); Assert.Equal(OverrideType.Base, basePropertyNode.Target.GetItemOverride(new NodeIndex("Key1"))); Assert.Equal(OverrideType.Base, basePropertyNode.Target.GetItemOverride(new NodeIndex("Key2"))); Assert.Equal(OverrideType.Base, basePropertyNode.Target.GetItemOverride(new NodeIndex("Key4"))); Assert.Equal(OverrideType.Base, derivedPropertyNode.GetContentOverride()); Assert.Equal(OverrideType.Base, derivedPropertyNode.Target.GetItemOverride(new NodeIndex("Key1"))); Assert.Equal(OverrideType.Base, derivedPropertyNode.Target.GetItemOverride(new NodeIndex("Key2"))); Assert.Equal(OverrideType.Base, derivedPropertyNode.Target.GetItemOverride(new NodeIndex("Key4"))); Assert.Equal(3, baseIds.KeyCount); Assert.Equal(0, baseIds.DeletedCount); Assert.Equal(3, derivedIds.KeyCount); Assert.Equal(0, derivedIds.DeletedCount); Assert.Equal(baseIds["Key1"], derivedIds["Key1"]); Assert.Equal(baseIds["Key2"], derivedIds["Key2"]); Assert.Equal(baseIds["Key4"], derivedIds["Key4"]); 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, Types.MyAssetBasePropertyGraph> .DeriveAsset(asset); var baseIds = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary); var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary); var basePropertyNode = context.BaseGraph.RootNode[nameof(Types.MyAsset3.MyDictionary)]; var derivedPropertyNode = context.DerivedGraph.RootNode[nameof(Types.MyAsset3.MyDictionary)]; // Update a key to derived and then the same key to the base derivedPropertyNode.Target.Add("String3", new NodeIndex("Key3")); basePropertyNode.Target.Add("String4", new NodeIndex("Key3")); Assert.Equal(3, context.BaseAsset.MyDictionary.Count); Assert.Equal(3, context.DerivedAsset.MyDictionary.Count); Assert.Equal("String1", basePropertyNode.Retrieve(new NodeIndex("Key1"))); Assert.Equal("String2", basePropertyNode.Retrieve(new NodeIndex("Key2"))); Assert.Equal("String4", basePropertyNode.Retrieve(new NodeIndex("Key3"))); Assert.Equal("String1", derivedPropertyNode.Retrieve(new NodeIndex("Key1"))); Assert.Equal("String2", derivedPropertyNode.Retrieve(new NodeIndex("Key2"))); Assert.Equal("String3", derivedPropertyNode.Retrieve(new NodeIndex("Key3"))); Assert.Equal(OverrideType.Base, basePropertyNode.GetContentOverride()); Assert.Equal(OverrideType.Base, basePropertyNode.Target.GetItemOverride(new NodeIndex("Key1"))); Assert.Equal(OverrideType.Base, basePropertyNode.Target.GetItemOverride(new NodeIndex("Key2"))); Assert.Equal(OverrideType.Base, basePropertyNode.Target.GetItemOverride(new NodeIndex("Key3"))); Assert.Equal(OverrideType.Base, derivedPropertyNode.GetContentOverride()); Assert.Equal(OverrideType.Base, derivedPropertyNode.Target.GetItemOverride(new NodeIndex("Key1"))); Assert.Equal(OverrideType.Base, derivedPropertyNode.Target.GetItemOverride(new NodeIndex("Key2"))); Assert.Equal(OverrideType.New, derivedPropertyNode.Target.GetItemOverride(new NodeIndex("Key3"))); Assert.NotEqual(baseIds, derivedIds); Assert.Equal(3, baseIds.KeyCount); Assert.Equal(0, baseIds.DeletedCount); Assert.Equal(3, derivedIds.KeyCount); Assert.Equal(1, derivedIds.DeletedCount); Assert.Equal(baseIds["Key1"], derivedIds["Key1"]); Assert.Equal(baseIds["Key2"], derivedIds["Key2"]); Assert.NotEqual(baseIds["Key3"], derivedIds["Key3"]); Assert.Equal(baseIds["Key3"], derivedIds.DeletedItems.Single()); Assert.Equal(3, context.BaseAsset.MyDictionary.Count); Assert.Equal(3, context.DerivedAsset.MyDictionary.Count); }