Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }