public void AddReplaceRemoveAndApplyChanges() { _manager1.Root.Level1 = _manager1.Create <ILevel1>(); _manager1.Root.Level1.IntValue = 42; _manager1.Root.Level1.StringValue = "43"; _manager1.Root.Level1.Level2 = _manager1.Create <ILevel2>(); _manager1.Root.Level1.Level2.GuidValue = Guid.NewGuid(); _manager1.Root.Level1.Level2.Level3 = new Level3 { IntValue = 44 }; _manager1.Root.Dictionary1[10] = _manager1.Create <ILevel1>(); _manager1.Root.Dictionary1[10].IntValue = 40; var level1 = _manager1.Create <ILevel1>(); level1.IntValue = 50; level1.Level2 = _manager1.Create <ILevel2>(); level1.Dictionary2["some"] = _manager1.Create <ILevel2>(); level1.Dictionary2["some"].GuidValue = Guid.NewGuid(); _manager1.Root.Dictionary1[5] = level1; var a = _modelClient12.SerializeAndClearChanges(); _manager2.ApplyChanges(_modelClient21, a); var b = _modelClient23.SerializeAndClearChanges(); _manager3.ApplyChanges(_modelClient32, b); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager2.Root)); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager3.Root)); // replace _manager1.Root.Level1.IntValue = 43; _manager1.Root.Level1.Level2 = _manager1.Create <ILevel2>(); _manager1.Root.Dictionary1[10] = _manager1.Create <ILevel1>(); _manager2.ApplyChanges(_modelClient21, _modelClient12.SerializeAndClearChanges()); _manager3.ApplyChanges(_modelClient32, _modelClient23.SerializeAndClearChanges()); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager2.Root)); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager3.Root)); //remove _manager1.Root.Level1.StringValue = null; _manager1.Root.Level1.Level2 = null; _manager1.Root.Dictionary1.Remove(10); _manager2.ApplyChanges(_modelClient21, _modelClient12.SerializeAndClearChanges()); _manager3.ApplyChanges(_modelClient32, _modelClient23.SerializeAndClearChanges()); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager2.Root)); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager3.Root)); }
public void InitAfterChanges() { _manager1.Root.Level1 = _manager1.Create <ILevel1>(); _manager1.Root.Level1.IntValue = 42; _manager1.Root.Level1.StringValue = "43"; _manager1.Root.Level1.Level2 = _manager1.Create <ILevel2>(); _manager1.Root.Level1.Level2.GuidValue = Guid.NewGuid(); _manager1.Root.Level1.Level2.Level3 = new Level3 { IntValue = 44 }; _manager1.Register(_modelClient12); _manager2.Register(_modelClient21); _manager2.ApplyChanges(_modelClient21, _modelClient12.SerializeAndClearChanges()); Assert.True(_manager1.IsDeepEqual(_manager1.Root, _manager2.Root)); }