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()); }
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()); }
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()); }