Example #1
0
        public void TestAllMissingInList()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 00000001-0001-0000-0100-000001000000
MyObjects:
    0a0000000a0000000a0000000a000000:
        Value: MyInstance
        Id: 00000002-0002-0000-0200-000002000000
    0a0000000b0000000b0000000b000000: ref!! 00000002-0002-0000-0200-000002000000
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 00000001-0001-0000-0100-000001000000:MyAsset
";

            Types.AssetWithRefPropertyGraphDefinition.IsObjectReferenceFunc = (targetNode, index) => index.IsInt && index.Int == 1;
            var context = DeriveAssetTest <Types.MyAssetWithRef, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(GuidGenerator.Get(2), context.BaseAsset.MyObjects[0].Id);
            Assert.Equal(context.BaseAsset.MyObjects[1], context.BaseAsset.MyObjects[0]);
            Assert.Equal(2, context.DerivedAsset.MyObjects.Count);
            Assert.NotEqual(GuidGenerator.Get(2), context.DerivedAsset.MyObjects[0].Id);
            Assert.Equal(context.DerivedAsset.MyObjects[1], context.DerivedAsset.MyObjects[0]);
        }
Example #2
0
        public void TestWithIncorrectObjectReferences()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 00000001-0001-0000-0100-000001000000
MyObject1:
    Value: MyInstance
    Id: 00000002-0002-0000-0200-000002000000
MyObject2: ref!! 00000002-0002-0000-0200-000002000000
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 00000001-0001-0000-0100-000001000000:MyAsset
MyObject1:
    Value: MyModifiedInstance
    Id: 00000003-0003-0000-0300-000003000000
MyObject2: ref!! 00000004-0004-0000-0400-000004000000
MyObject3:
    Value: MyModifiedInstance
    Id: 00000004-0004-0000-0400-000004000000
";

            Types.AssetWithRefPropertyGraphDefinition.IsObjectReferenceFunc = (targetNode, index) => (targetNode as IMemberNode)?.Name == nameof(Types.MyAssetWithRef.MyObject2);
            var context = DeriveAssetTest <Types.MyAssetWithRef, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var prevInstance = context.DerivedAsset.MyObject2;

            Assert.NotEqual(context.DerivedAsset.MyObject1, context.DerivedAsset.MyObject2);
            context.DerivedGraph.ReconcileWithBase();
            Assert.NotEqual(prevInstance, context.DerivedAsset.MyObject2);
            Assert.NotEqual(context.BaseAsset.MyObject1, context.DerivedAsset.MyObject1);
            Assert.NotEqual(context.BaseAsset.MyObject2, context.DerivedAsset.MyObject2);
            Assert.Equal(context.DerivedAsset.MyObject1, context.DerivedAsset.MyObject2);
            Assert.Null(context.DerivedAsset.MyObject3);
        }
Example #3
0
        public void TestWithInvalidObjectReferencesAndMissingTargetInList()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 00000001-0001-0000-0100-000001000000
MyObject1:
    Value: MyInstance
    Id: 00000002-0002-0000-0200-000002000000
MyObjects:
    0a0000000a0000000a0000000a000000: ref!! 00000002-0002-0000-0200-000002000000
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 00000001-0001-0000-0100-000001000000:MyAsset
MyObject1: null
MyObjects:
    0a0000000a0000000a0000000a000000: ref!! 00000002-0002-0000-0200-000002000000
";

            Types.AssetWithRefPropertyGraphDefinition.IsObjectReferenceFunc = (targetNode, index) => (targetNode as IObjectNode)?.ItemReferences != null;
            var context = DeriveAssetTest <Types.MyAssetWithRef, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var prevInstance = context.DerivedAsset.MyObjects[0];

            context.DerivedGraph.ReconcileWithBase();
            Assert.NotEqual(prevInstance, context.DerivedAsset.MyObjects[0]);
            Assert.NotEqual(context.BaseAsset.MyObject1, context.DerivedAsset.MyObject1);
            Assert.NotEqual(context.BaseAsset.MyObjects[0], context.DerivedAsset.MyObjects[0]);
            Assert.NotNull(context.DerivedAsset.MyObject1);
            Assert.Equal(context.DerivedAsset.MyObject1, context.DerivedAsset.MyObjects[0]);
        }
Example #4
0
        public void TestWithCorrectObjectReferencesInList()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 00000001-0001-0000-0100-000001000000
MyObject1:
    Value: MyInstance
    Id: 00000002-0002-0000-0200-000002000000
MyObjects:
    0a0000000a0000000a0000000a000000: ref!! 00000002-0002-0000-0200-000002000000
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 00000001-0001-0000-0100-000001000000:MyAsset
MyObject1:
    Value: MyInstance
    Id: 00000003-0003-0000-0300-000003000000
MyObjects:
    0a0000000a0000000a0000000a000000: ref!! 00000003-0003-0000-0300-000003000000
";

            var context = DeriveAssetTest <Types.MyAssetWithRef, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var prevInstance = context.DerivedAsset.MyObjects[0];

            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(GuidGenerator.Get(2), context.BaseAsset.MyObject1.Id);
            Assert.Equal(context.BaseAsset.MyObject1, context.BaseAsset.MyObjects[0]);
            Assert.Equal(GuidGenerator.Get(3), context.DerivedAsset.MyObject1.Id);
            Assert.Equal(context.DerivedAsset.MyObject1, context.DerivedAsset.MyObjects[0]);
            Assert.Equal(prevInstance, context.DerivedAsset.MyObjects[0]);
        }
Example #5
0
        public void TestPrimitiveMember()
        {
            const string primitiveMemberBaseYaml        = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset1,Stride.Core.Assets.Quantum.Tests
Id: 10000000-0000-0000-0000-000000000000
Tags: []
MyString: MyBaseString
";
            const string primitiveMemberOverridenYaml   = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset1,Stride.Core.Assets.Quantum.Tests
Id: 30000000-0000-0000-0000-000000000000
Archetype: 10000000-0000-0000-0000-000000000000:MyAsset
Tags: []
MyString*: MyDerivedString
";
            const string primitiveMemberToReconcileYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset1,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 10000000-0000-0000-0000-000000000000:MyAsset
Tags: []
MyString: MyDerivedString
";
            var          context = DeriveAssetTest <Types.MyAsset1, Types.MyAssetBasePropertyGraph> .LoadFromYaml(primitiveMemberBaseYaml, primitiveMemberOverridenYaml);

            Assert.Equal("MyBaseString", context.BaseAsset.MyString);
            Assert.Equal("MyDerivedString", context.DerivedAsset.MyString);
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal("MyBaseString", context.BaseAsset.MyString);
            Assert.Equal("MyDerivedString", context.DerivedAsset.MyString);

            context = DeriveAssetTest <Types.MyAsset1, Types.MyAssetBasePropertyGraph> .LoadFromYaml(primitiveMemberBaseYaml, primitiveMemberToReconcileYaml);

            Assert.Equal("MyBaseString", context.BaseAsset.MyString);
            Assert.Equal("MyDerivedString", context.DerivedAsset.MyString);
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal("MyBaseString", context.BaseAsset.MyString);
            Assert.Equal("MyBaseString", context.DerivedAsset.MyString);
        }
Example #6
0
        public void TestDictionaryAddedKeyInBase()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset3,Stride.Core.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 = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset3,Stride.Core.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, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var baseIds    = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary);
            var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary);

            Assert.Equal(3, context.BaseAsset.MyDictionary.Count);
            Assert.Equal("String1", context.BaseAsset.MyDictionary["Key1"]);
            Assert.Equal("String2.5", context.BaseAsset.MyDictionary["Key2.5"]);
            Assert.Equal("String2", context.BaseAsset.MyDictionary["Key2"]);
            Assert.Equal(2, context.DerivedAsset.MyDictionary.Count);
            Assert.Equal("String1", context.DerivedAsset.MyDictionary["Key1"]);
            Assert.Equal("String2", context.DerivedAsset.MyDictionary["Key2"]);
            Assert.Equal(3, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(21), baseIds["Key2.5"]);
            Assert.Equal(IdentifierGenerator.Get(20), baseIds["Key2"]);
            Assert.Equal(2, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds["Key2"]);
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(3, context.BaseAsset.MyDictionary.Count);
            Assert.Equal("String1", context.BaseAsset.MyDictionary["Key1"]);
            Assert.Equal("String2.5", context.BaseAsset.MyDictionary["Key2.5"]);
            Assert.Equal("String2", context.BaseAsset.MyDictionary["Key2"]);
            Assert.Equal(3, context.DerivedAsset.MyDictionary.Count);
            Assert.Equal("String1", context.DerivedAsset.MyDictionary["Key1"]);
            Assert.Equal("String2.5", context.DerivedAsset.MyDictionary["Key2.5"]);
            Assert.Equal("String2", context.DerivedAsset.MyDictionary["Key2"]);
            Assert.Equal(3, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(21), baseIds["Key2.5"]);
            Assert.Equal(IdentifierGenerator.Get(20), baseIds["Key2"]);
            Assert.Equal(3, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(21), derivedIds["Key2.5"]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds["Key2"]);
        }
Example #7
0
        public void TestCollectionRemovedItemFromBase()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset2,Stride.Core.Assets.Quantum.Tests
Id: 10000000-0000-0000-0000-000000000000
Tags: []
Struct:
    MyStrings: {}
MyStrings:
    0a0000000a0000000a0000000a000000: String1
    14000000140000001400000014000000: String3
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset2,Stride.Core.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, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var baseIds    = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyStrings);
            var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyStrings);

            Assert.Equal(2, context.BaseAsset.MyStrings.Count);
            Assert.Equal("String1", context.BaseAsset.MyStrings[0]);
            Assert.Equal("String3", context.BaseAsset.MyStrings[1]);
            Assert.Equal(3, context.DerivedAsset.MyStrings.Count);
            Assert.Equal("String1", context.DerivedAsset.MyStrings[0]);
            Assert.Equal("String2", context.DerivedAsset.MyStrings[1]);
            Assert.Equal("String3", context.DerivedAsset.MyStrings[2]);
            Assert.Equal(2, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds[0]);
            Assert.Equal(IdentifierGenerator.Get(20), baseIds[1]);
            Assert.Equal(3, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds[0]);
            Assert.Equal(IdentifierGenerator.Get(36), derivedIds[1]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds[2]);
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(2, context.BaseAsset.MyStrings.Count);
            Assert.Equal("String1", context.BaseAsset.MyStrings[0]);
            Assert.Equal("String3", context.BaseAsset.MyStrings[1]);
            Assert.Equal(2, context.DerivedAsset.MyStrings.Count);
            Assert.Equal("String1", context.DerivedAsset.MyStrings[0]);
            Assert.Equal("String3", context.DerivedAsset.MyStrings[1]);
            Assert.Equal(2, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds[0]);
            Assert.Equal(IdentifierGenerator.Get(20), baseIds[1]);
            Assert.Equal(2, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds[0]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds[1]);
        }
Example #8
0
        public void TestDictionaryRemovedDeletedItemFromBase()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset3,Stride.Core.Assets.Quantum.Tests
Id: 10000000-0000-0000-0000-000000000000
Tags: []
MyDictionary:
    0a0000000a0000000a0000000a000000~Key1: String1
    24000000240000002400000024000000~Key3: String3
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset3,Stride.Core.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, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var baseIds    = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary);
            var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary);

            Assert.Equal(2, context.BaseAsset.MyDictionary.Count);
            Assert.Equal("String1", context.BaseAsset.MyDictionary["Key1"]);
            Assert.Equal("String3", context.BaseAsset.MyDictionary["Key3"]);
            Assert.Equal(2, context.DerivedAsset.MyDictionary.Count);
            Assert.Equal("String1", context.DerivedAsset.MyDictionary["Key1"]);
            Assert.Equal("String2", context.DerivedAsset.MyDictionary["Key3"]);
            Assert.Equal(2, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), baseIds["Key3"]);
            Assert.Equal(2, derivedIds.KeyCount);
            Assert.Equal(1, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), derivedIds["Key3"]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds.DeletedItems.Single());
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(2, context.BaseAsset.MyDictionary.Count);
            Assert.Equal("String1", context.BaseAsset.MyDictionary["Key1"]);
            Assert.Equal("String3", context.BaseAsset.MyDictionary["Key3"]);
            Assert.Equal(2, context.DerivedAsset.MyDictionary.Count);
            Assert.Equal("String1", context.DerivedAsset.MyDictionary["Key1"]);
            Assert.Equal("String3", context.DerivedAsset.MyDictionary["Key3"]);
            Assert.Equal(2, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), baseIds["Key3"]);
            Assert.Equal(2, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), derivedIds["Key3"]);
        }
Example #9
0
        public void TestWithOverriddenObjectReferencesInList()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 00000001-0001-0000-0100-000001000000
MyObject1:
    Value: MyInstance
    Id: 00000002-0002-0000-0200-000002000000
MyObject2:
    Value: MyInstance
    Id: 00000003-0003-0003-0300-000003000000
MyObjects:
    0a0000000a0000000a0000000a000000: ref!! 00000002-0002-0000-0200-000002000000
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 00000001-0001-0000-0100-000001000000:MyAsset
MyObject1:
    Value: MyModifiedInstance
    Id: 00000003-0003-0003-0300-000003000000
MyObject2:
    Value: MyInstance
    Id: 00000004-0004-0000-0400-000004000000
MyObjects:
    0a0000000a0000000a0000000a000000*: ref!! 00000004-0004-0000-0400-000004000000
";

            Types.AssetWithRefPropertyGraphDefinition.IsObjectReferenceFunc = (targetNode, index) => (targetNode as IObjectNode)?.ItemReferences != null;
            var context = DeriveAssetTest <Types.MyAssetWithRef, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var prevInstance = context.DerivedAsset.MyObjects[0];

            Assert.Equal(context.DerivedAsset.MyObject2, context.DerivedAsset.MyObjects[0]);
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(prevInstance, context.DerivedAsset.MyObjects[0]);
            Assert.NotEqual(context.BaseAsset.MyObject1, context.DerivedAsset.MyObject1);
            Assert.NotEqual(context.BaseAsset.MyObjects[0], context.DerivedAsset.MyObjects[0]);
            Assert.NotEqual(context.BaseAsset.MyObject2, context.DerivedAsset.MyObject2);
            Assert.NotEqual(context.DerivedAsset.MyObject1, context.DerivedAsset.MyObjects[0]);
            Assert.Equal(context.DerivedAsset.MyObject2, context.DerivedAsset.MyObjects[0]);
            Assert.Equal(GuidGenerator.Get(4), context.DerivedAsset.MyObject2.Id);
        }
Example #10
0
        public void TestAllMissingInvertOrder()
        {
            const string baseYaml    = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 00000001-0001-0000-0100-000001000000
MyObject1: ref!! 00000002-0002-0000-0200-000002000000
MyObject2:
    Value: MyInstance
    Id: 00000002-0002-0000-0200-000002000000
";
            const string derivedYaml = @"!Stride.Core.Assets.Quantum.Tests.Helpers.Types+MyAssetWithRef,Stride.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 00000001-0001-0000-0100-000001000000:MyAsset
";

            Types.AssetWithRefPropertyGraphDefinition.IsObjectReferenceFunc = (targetNode, index) => (targetNode as IMemberNode)?.Name == nameof(Types.MyAssetWithRef.MyObject1);
            var context = DeriveAssetTest <Types.MyAssetWithRef, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(GuidGenerator.Get(2), context.BaseAsset.MyObject1.Id);
            Assert.Equal(context.BaseAsset.MyObject1, context.BaseAsset.MyObject2);
            Assert.NotEqual(GuidGenerator.Get(2), context.DerivedAsset.MyObject1.Id);
            Assert.Equal(context.DerivedAsset.MyObject1, context.DerivedAsset.MyObject2);
        }
Example #11
0
        public void TestDictionaryRenameItemFromBase()
        {
            const string baseYaml    = @"!Xenko.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset3,Xenko.Core.Assets.Quantum.Tests
Id: 10000000-0000-0000-0000-000000000000
Tags: []
MyDictionary:
    0a0000000a0000000a0000000a000000~Key1: String1
    24000000240000002400000024000000~Key2Renamed: String2
    14000000140000001400000014000000~Key3Renamed: String3
    34000000340000003400000034000000~Key4Renamed: String4
";
            const string derivedYaml = @"!Xenko.Core.Assets.Quantum.Tests.Helpers.Types+MyAsset3,Xenko.Core.Assets.Quantum.Tests
Id: 20000000-0000-0000-0000-000000000000
Archetype: 10000000-0000-0000-0000-000000000000:MyAsset
Tags: []
MyDictionary:
    0a0000000a0000000a0000000a000000~Key1: String1
    24000000240000002400000024000000~Key2: String2
    14000000140000001400000014000000*~Key3: MyDerivedString
    34000000340000003400000034000000~Key4*: MyDerivedString
";
            var          context     = DeriveAssetTest <Types.MyAsset3, Types.MyAssetBasePropertyGraph> .LoadFromYaml(baseYaml, derivedYaml);

            var baseIds    = CollectionItemIdHelper.GetCollectionItemIds(context.BaseAsset.MyDictionary);
            var derivedIds = CollectionItemIdHelper.GetCollectionItemIds(context.DerivedAsset.MyDictionary);

            Assert.Equal(4, context.BaseAsset.MyDictionary.Count);
            Assert.Equal("String1", context.BaseAsset.MyDictionary["Key1"]);
            Assert.Equal("String2", context.BaseAsset.MyDictionary["Key2Renamed"]);
            Assert.Equal("String3", context.BaseAsset.MyDictionary["Key3Renamed"]);
            Assert.Equal("String4", context.BaseAsset.MyDictionary["Key4Renamed"]);
            Assert.Equal(4, context.DerivedAsset.MyDictionary.Count);
            Assert.Equal("String1", context.DerivedAsset.MyDictionary["Key1"]);
            Assert.Equal("String2", context.DerivedAsset.MyDictionary["Key2"]);
            Assert.Equal("MyDerivedString", context.DerivedAsset.MyDictionary["Key3"]);
            Assert.Equal("MyDerivedString", context.DerivedAsset.MyDictionary["Key4"]);
            Assert.Equal(4, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), baseIds["Key2Renamed"]);
            Assert.Equal(IdentifierGenerator.Get(20), baseIds["Key3Renamed"]);
            Assert.Equal(IdentifierGenerator.Get(52), baseIds["Key4Renamed"]);
            Assert.Equal(4, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), derivedIds["Key2"]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds["Key3"]);
            Assert.Equal(IdentifierGenerator.Get(52), derivedIds["Key4"]);
            context.DerivedGraph.ReconcileWithBase();
            Assert.Equal(4, context.BaseAsset.MyDictionary.Count);
            Assert.Equal("String1", context.BaseAsset.MyDictionary["Key1"]);
            Assert.Equal("String2", context.BaseAsset.MyDictionary["Key2Renamed"]);
            Assert.Equal("String3", context.BaseAsset.MyDictionary["Key3Renamed"]);
            Assert.Equal(4, context.DerivedAsset.MyDictionary.Count);
            Assert.Equal("String1", context.DerivedAsset.MyDictionary["Key1"]);
            Assert.Equal("String2", context.DerivedAsset.MyDictionary["Key2Renamed"]);
            Assert.Equal("MyDerivedString", context.DerivedAsset.MyDictionary["Key3Renamed"]);
            Assert.Equal("String4", context.DerivedAsset.MyDictionary["Key4"]);
            Assert.Equal(4, baseIds.KeyCount);
            Assert.Equal(0, baseIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), baseIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), baseIds["Key2Renamed"]);
            Assert.Equal(IdentifierGenerator.Get(20), baseIds["Key3Renamed"]);
            Assert.Equal(IdentifierGenerator.Get(52), baseIds["Key4Renamed"]);
            Assert.Equal(4, derivedIds.KeyCount);
            Assert.Equal(0, derivedIds.DeletedCount);
            Assert.Equal(IdentifierGenerator.Get(10), derivedIds["Key1"]);
            Assert.Equal(IdentifierGenerator.Get(36), derivedIds["Key2Renamed"]);
            Assert.Equal(IdentifierGenerator.Get(20), derivedIds["Key3Renamed"]);
            Assert.Equal(IdentifierGenerator.Get(52), derivedIds["Key4"]);
        }