public void AddReplaceRemoveAndApplyChanges()
        {
            var modelClient = new ModelClient
            {
                Filter = new FilterConfigurator(true)
                         .Allow <ILevel1>(c => c.Deny(t => t.IntValue))
                         .Allow <ILevel2>(c => c.Allow(t => t.Level3))
                         .Build()
            };

            _manager.Register(modelClient);

            _manager.Root.Level1             = _manager.Create <ILevel1>();
            _manager.Root.Level1.IntValue    = 42;
            _manager.Root.Level1.StringValue = "43";

            _manager.Root.Level1.Level2           = _manager.Create <ILevel2>();
            _manager.Root.Level1.Level2.GuidValue = Guid.NewGuid();
            _manager.Root.Level1.Level2.Level3    = new Level3 {
                IntValue = 44
            };

            _manager.Root.Dictionary1[10]                               = _manager.Create <ILevel1>();
            _manager.Root.Dictionary1[10].IntValue                      = 40;
            _manager.Root.Dictionary1[10].StringValue                   = "some";
            _manager.Root.Dictionary1[10].Dictionary2["some"]           = _manager.Create <ILevel2>();
            _manager.Root.Dictionary1[10].Dictionary2["some"].GuidValue = Guid.NewGuid();

            var level1 = _manager.Create <ILevel1>();

            level1.IntValue                      = 50;
            level1.StringValue                   = "some";
            level1.Dictionary2["some"]           = _manager.Create <ILevel2>();
            level1.Dictionary2["some"].GuidValue = Guid.NewGuid();
            level1.Dictionary2["some"].Level3    = new Level3 {
                IntValue = 44
            };
            _manager.Root.Dictionary1[5] = level1;

            _manager2.ApplyChanges(modelClient, modelClient.SerializeAndClearChanges());
            Assert.Equal(0, _manager2.Root.Level1.IntValue);
            Assert.Equal("43", _manager2.Root.Level1.StringValue);
            Assert.Equal(Guid.Empty, _manager2.Root.Level1.Level2.GuidValue);

            Assert.Equal(44, _manager2.Root.Level1.Level2.Level3.IntValue);
            Assert.Equal(0, _manager2.Root.Dictionary1[10].IntValue);
            Assert.Equal("some", _manager2.Root.Dictionary1[10].StringValue);
            Assert.Equal(Guid.Empty, _manager2.Root.Dictionary1[10].Dictionary2["some"].GuidValue);

            Assert.Equal(0, _manager2.Root.Dictionary1[5].IntValue);
            Assert.Equal("some", _manager2.Root.Dictionary1[5].StringValue);
            Assert.Equal(Guid.Empty, _manager2.Root.Dictionary1[5].Dictionary2["some"].GuidValue);
            Assert.Equal(44, _manager2.Root.Dictionary1[5].Dictionary2["some"].Level3.IntValue);
        }
예제 #2
0
        public ModelTest()
        {
            var b = new DeltaModelBuilder();

            b.Config <ILevel2>(c => { c.HasLocal((s, m, p) => new Level2Local(m, s)); });
            _manager1 = b.Build <ITestModel>();

            var b2 = new DeltaModelBuilder();

            b2.Config <ILevel2>(c => { c.HasLocal((s, m, p) => new Level2Local(m, s)); });
            _manager2 = b2.Build <ITestModel>();

            var b3 = new DeltaModelBuilder();

            _manager3 = b3.Build <ITestModel>();

            _modelClient12 = new ModelClient {
                Filter = new FilterConfigurator(true).Build()
            };
            _modelClient21 = new ModelClient {
                Filter = new FilterConfigurator(true).Build()
            };
            _modelClient23 = new ModelClient {
                Filter = new FilterConfigurator(true).Build()
            };
            _modelClient32 = new ModelClient {
                Filter = new FilterConfigurator(true).Build()
            };

            _manager1.Register(_modelClient12);

            _manager2.Register(_modelClient21);
            _manager2.Register(_modelClient23);

            _manager3.Register(_modelClient32);
        }
예제 #3
0
        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));
        }