Exemple #1
0
        public void GetFullDictionaryTest()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            synchronizer.NewItem(template);
            synchronizer.NewGroup(new TestObject());

            Assert.IsTrue(synchronizer.GetFullDictionary()[template].Count == 1);
            Assert.IsTrue(synchronizer.GetFullDictionary().Keys.Count == 2);
        }
Exemple #2
0
        public void NewGroupTest()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            Assert.IsNotNull(synchronizer.GetFullDictionary()[template]);
        }
Exemple #3
0
        public void RemoveGroupTest()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            synchronizer.RemoveGroup(template);

            Assert.IsFalse(synchronizer.GetFullDictionary().ContainsKey(template));
        }
Exemple #4
0
        public void GetParentTest()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            var newItem = synchronizer.NewItem(template);

            Assert.AreEqual(template, synchronizer.GetParent(newItem));
            Assert.IsNull(synchronizer.GetParent(template));
        }
Exemple #5
0
        public void NewItemTest1()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            var newItem = synchronizer.NewItem(template);

            Assert.IsNotNull(newItem);
            Assert.AreNotEqual(template, newItem);
        }
Exemple #6
0
        public void ContainsTest1()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            var newItem = synchronizer.NewItem(template);

            synchronizer.RemoveItem(template, newItem);

            Assert.IsFalse(synchronizer.Contains(newItem));
        }
Exemple #7
0
        public void ContainsTest()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            var existing = new TestObject();

            synchronizer.LinkExisting(template, existing);

            Assert.IsTrue(synchronizer.Contains(existing));
        }
Exemple #8
0
        public void LinkExistingTest2()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            var existing1 = new TestObject();
            var existing2 = new TestObject();
            var existing  = new List <TestObject> {
                existing1, existing2
            };

            synchronizer.LinkExisting(template, existing);

            Assert.IsTrue(synchronizer.GetFullDictionary()[template].Contains(existing1));
            Assert.IsTrue(synchronizer.GetFullDictionary()[template].Contains(existing2));
        }
Exemple #9
0
        public void LinkNewTest()
        {
            TemplateSynchronizer <TestObject> synchronizer = new TemplateSynchronizer <TestObject>(obj => new TestObject(), obj => { }, (sync, obj1, obj2, e) => { }, new TECScopeTemplates());
            var template = new TestObject();

            synchronizer.NewGroup(template);

            bool changed = false;

            synchronizer.TECChanged += arg =>
            {
                changed = true;
            };

            var existing = new TestObject();

            synchronizer.LinkNew(template, existing);

            Assert.IsTrue(synchronizer.GetFullDictionary()[template].Contains(existing));
            Assert.IsTrue(changed);
        }
Exemple #10
0
        public void NewItemTest()
        {
            //Arrange
            TECScopeTemplates templates = new TECScopeTemplates();

            TemplateSynchronizer <TECSubScope> synchronizer =
                new TemplateSynchronizer <TECSubScope>(copySubScope, item => { }, syncSubScope, templates);

            TECSubScope templateSS = new TECSubScope();

            templateSS.Name = "Template SubScope";

            synchronizer.NewGroup(templateSS);

            //Act
            TECSubScope copySS = synchronizer.NewItem(templateSS);

            //Assert
            Assert.AreEqual(templateSS.Name, copySS.Name);
            Assert.AreNotEqual(templateSS.Guid, copySS.Guid);
        }
        private void syncEquipment(TemplateSynchronizer <TECEquipment> synchronizer, TECEquipment template, TECEquipment changed, TECChangedEventArgs args)
        {
            if (!(args.Sender is TECEquipment))
            {
                return;
            }
            TECEquipment        item       = args.Sender as TECEquipment;
            TECSubScope         value      = args.Value as TECSubScope;
            List <TECEquipment> references = synchronizer.GetFullDictionary()[template];

            if (value != null && args.Change == Change.Add)
            {
                TECSubScope newTemplate = value;
                if (item == template)
                {
                    SubScopeSynchronizer.NewGroup(newTemplate);
                }
                else
                {
                    TECSubScope parentTemplate = SubScopeSynchronizer.GetTemplate(newTemplate);
                    if (parentTemplate != null)
                    {
                        SubScopeSynchronizer.RemoveItem(newTemplate);
                        newTemplate = SubScopeSynchronizer.NewItem(parentTemplate);
                    }
                    else
                    {
                        newTemplate = new TECSubScope(value);
                    }
                    template.SubScope.Add(newTemplate);
                    SubScopeSynchronizer.NewGroup(newTemplate);
                    SubScopeSynchronizer.LinkExisting(newTemplate, value);
                }
                foreach (TECEquipment reference in references.Where(obj => obj != item))
                {
                    reference.SubScope.Add(SubScopeSynchronizer.NewItem(newTemplate));
                }
            }
            else if (value != null && args.Change == Change.Remove)
            {
                TECSubScope subScopeTemplate = value;
                if (item != template)
                {
                    subScopeTemplate = SubScopeSynchronizer.GetTemplate(value);
                }
                template.SubScope.Remove(subScopeTemplate);
                List <TECSubScope> subScopeReferences = SubScopeSynchronizer.GetFullDictionary()[subScopeTemplate];
                foreach (TECEquipment reference in references)
                {
                    List <TECSubScope> toRemove = new List <TECSubScope>();
                    foreach (TECSubScope referenceSubScope in reference.SubScope)
                    {
                        if (subScopeReferences.Contains(referenceSubScope))
                        {
                            toRemove.Add(referenceSubScope);
                        }
                    }
                    foreach (TECSubScope thing in toRemove)
                    {
                        reference.SubScope.Remove(thing);
                    }
                }
                SubScopeSynchronizer.RemoveGroup(subScopeTemplate);
                if (SubScopeSynchronizer.GetTemplate(subScopeTemplate) != null)
                {
                    SubScopeSynchronizer.RemoveItem(subScopeTemplate);
                }
            }
            else
            {
                if (item != template)
                {
                    template.CopyChildrenFromScope(item);
                }
                foreach (TECEquipment reference in references.Where(obj => obj != item))
                {
                    reference.CopyChildrenFromScope(item);
                }
            }
        }