public static void RunCollectionTest() { var obj = new CollectionHolder(); obj.dict["foo1"] = "bar1"; obj.dict["foo2"] = "bar2"; obj.list.Add(1); obj.list.Add(2); obj.arr = new[] { true, false }; obj.nested = new CollectionHolder(); obj.nested.dict["nested1"] = "ack1"; obj.nested.arr = new[] { true }; Dictionary <ObjectDataPath[], object> model = new SavedObject(obj).state; Dictionary <string, object> readableModel = SavedObjectDelta.ReadableModel(model); // TODO: If list is null, we will include it, but if it is empty we will // not Assert.AreEqual(11, readableModel.Count); Assert.AreEqual(obj.GetType(), readableModel["GetType()"]); Assert.AreEqual("bar1", readableModel["dict.foo1"]); Assert.AreEqual("bar2", readableModel["dict.foo2"]); Assert.AreEqual(1, readableModel["list.0"]); Assert.AreEqual(2, readableModel["list.1"]); Assert.AreEqual(true, readableModel["arr.0"]); Assert.AreEqual(false, readableModel["arr.1"]); Assert.AreEqual(obj.nested.GetType(), readableModel["nested:GetType()"]); Assert.AreEqual("ack1", readableModel["nested:dict.nested1"]); Assert.AreEqual(true, readableModel["nested:arr.0"]); Assert.AreEqual(null, readableModel["nested:nested"]); }
public static void CheckReadableModelIncludesInstances() { var model = new SimpleObject { a = 1, b = 2, nested = new SimpleObject { a = 3, b = 4 } }; Dictionary <string, object> readable = SavedObjectDelta.ReadableModel(new SavedObject(model).state); Assert.AreEqual(7, readable.Count); Assert.AreEqual(model.GetType(), readable["GetType()"]); Assert.AreEqual(model.a, readable["a"]); Assert.AreEqual(model.b, readable["b"]); Assert.AreEqual(model.nested.GetType(), readable["nested:GetType()"]); Assert.AreEqual(model.nested.a, readable["nested:a"]); Assert.AreEqual(model.nested.b, readable["nested:b"]); Assert.AreEqual(model.nested.nested, readable["nested:nested"]); }
public static void RunFieldPropertyTest() { var obj = new SimpleObject { a = 1, b = 2, nested = new SimpleObject { a = 3, b = 4 } }; Dictionary <ObjectDataPath[], object> model = new SavedObject(obj).state; Dictionary <string, object> readableModel = SavedObjectDelta.ReadableModel(model); Assert.AreEqual(7, readableModel.Count); Assert.AreEqual(obj.GetType(), readableModel["GetType()"]); Assert.AreEqual(1, readableModel["a"]); Assert.AreEqual(2, readableModel["b"]); Assert.AreEqual(obj.nested.GetType(), readableModel["nested:GetType()"]); Assert.AreEqual(3, readableModel["nested:a"]); Assert.AreEqual(4, readableModel["nested:b"]); Assert.AreEqual(null, readableModel["nested:nested"]); }
public static void CycleTest() { // TODO: This needs to be fixed. The cyclic object should appear in the // dict. Debug.LogError("Fix CycleTest to include cycled object"); var obj = new SimpleObject(); obj.a = 1; obj.b = 2; obj.nested = obj; Dictionary <ObjectDataPath[], object> model = new SavedObject(obj).state; Dictionary <string, object> readableModel = SavedObjectDelta.ReadableModel(model); Assert.AreEqual(3, readableModel.Count); Assert.AreEqual(obj.GetType(), readableModel["GetType()"]); Assert.AreEqual(obj.a, readableModel["a"]); Assert.AreEqual(obj.b, readableModel["b"]); //Assert.AreEqual(obj.nested, readableModel["nested"]); // Also test vectors, which are cyclic on normalized new SavedObject(new Vector3(1, 1, 1)); }