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