Beispiel #1
0
        public void Stratabase_SetData_MultiDot_WithListTest()
        {
            MultiDotThing1 thing = new MultiDotThing1
            {
                Other = new MultiDotThing2
                {
                    IndexedItems = new List <int>(new[] { 10, 11, 12, 13 }),
                }
            };

            Guid id = Guid.NewGuid();

            Stratabase sb = new Stratabase(1);

            sb.SetBaselineFromPropertiesOf(id, thing);

            var intValues = new[] {
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[0]"),
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[1]"),
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[2]"),
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[3]"),
            };

            Assert.AreEqual(thing.Other.IndexedItems[0], intValues[0].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[1], intValues[1].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[2], intValues[2].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[3], intValues[3].GetValue());
        }
Beispiel #2
0
        public void Stratabase_SetData_MultiDot_Test()
        {
            MultiDotThing1 thing = new MultiDotThing1
            {
                Name  = "Test",
                Other = new MultiDotThing2
                {
                    Value = 3,
                    Foo   = new MultiDotThing3
                    {
                        Bar = 3.14159
                    }
                }
            };

            Guid id = Guid.NewGuid();

            Stratabase sb = new Stratabase(1);

            sb.SetBaselineFromPropertiesOf(id, thing);

            var name        = sb.GeneratePropertyAccess <string>(id, "Name");
            var intValue    = sb.GeneratePropertyAccess <int>(id, "Other.Value");
            var doubleValue = sb.GeneratePropertyAccess <double>(id, "Other.Foo.Bar");

            Assert.AreEqual(thing.Name, name.GetValue());
            Assert.AreEqual(thing.Other.Value, intValue.GetValue());
            Assert.AreEqual(thing.Other.Foo.Bar, doubleValue.GetValue());
        }
Beispiel #3
0
        public void Stratabase_ToFromJson_Filtered()
        {
            MultiDotThing1 thing = new MultiDotThing1
            {
                Name  = "CrazyTest",
                Other = new MultiDotThing2
                {
                    IndexedItems = new List <int>(new[] { 10, 11, 12, 13 }),
                },
            };

            Guid id = Guid.NewGuid();

            Stratabase sb = new Stratabase(3);

            sb.SetBaselineFromPropertiesOf(id, thing);
            sb.SetOverridePropertyValue(2, id, "Name", "SettingSomethingElse");

            var nameAccess = sb.GeneratePropertyAccess <string>(id, "Name");
            var intValues  = new[] {
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[0]"),
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[1]"),
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[2]"),
                sb.GeneratePropertyAccess <int>(id, "Other.IndexedItems[3]"),
            };

            var foo = new MultiDotThing3()
            {
                Bar = 5.5555
            };
            var fooAccess = sb.GeneratePropertyAccess <MultiDotThing3>(id, "Other.Foo");

            fooAccess.SetBaselineValue(foo);

            Assert.AreEqual("SettingSomethingElse", nameAccess.GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[0], intValues[0].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[1], intValues[1].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[2], intValues[2].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[3], intValues[3].GetValue());
            Assert.AreEqual(foo, fooAccess.GetValue());

            var json = sb.SerializeToJson(includeBaseline: true);

            Assert.IsFalse(json.HasErrors, json.BuildJsonErrorReport());

            Stratabase sb2 = Stratabase.DeserializeFromJson(json);

            Assert.AreEqual(3, sb2.OverrideLayerCount);

            var nameAccess2 = sb2.GeneratePropertyAccess <string>(id, "Name");
            var intValues2  = new[] {
                sb2.GeneratePropertyAccess <int>(id, "Other.IndexedItems[0]"),
                sb2.GeneratePropertyAccess <int>(id, "Other.IndexedItems[1]"),
                sb2.GeneratePropertyAccess <int>(id, "Other.IndexedItems[2]"),
                sb2.GeneratePropertyAccess <int>(id, "Other.IndexedItems[3]"),
            };
            var fooAccess2 = sb2.GeneratePropertyAccess <MultiDotThing3>(id, "Other.Foo");

            // Not "SettingSomethingElse" because layer [2] was not included in the serialization
            Assert.AreEqual("CrazyTest", nameAccess2.GetValue());

            Assert.AreEqual(thing.Other.IndexedItems[0], intValues2[0].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[1], intValues2[1].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[2], intValues2[2].GetValue());
            Assert.AreEqual(thing.Other.IndexedItems[3], intValues2[3].GetValue());
            Assert.AreEqual(foo.Bar, fooAccess2.GetValue().Bar);

            nameAccess2.ClearOverrideValue(2);
            Assert.AreEqual(thing.Name, nameAccess2.GetValue());
        }