public void TemplateEquipmentRemoved() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECEquipment> synchronizer = templates.EquipmentSynchronizer; TECEquipment templateEquip = new TECEquipment(); templateEquip.Name = "First Name"; templates.Templates.EquipmentTemplates.Add(templateEquip); TECSystem templateSys = new TECSystem(); templates.Templates.SystemTemplates.Add(templateSys); TECEquipment equip1 = synchronizer.NewItem(templateEquip); TECEquipment equip2 = synchronizer.NewItem(templateEquip); templateSys.Equipment.Add(equip1); templateSys.Equipment.Add(equip2); //Act templates.Templates.EquipmentTemplates.Remove(templateEquip); equip2.Name = "Second Name"; //Assert Assert.IsFalse(synchronizer.Contains(templateEquip)); Assert.IsFalse(synchronizer.Contains(equip1)); Assert.IsFalse(synchronizer.Contains(equip2)); Assert.AreEqual("First Name", equip1.Name); Assert.AreEqual("Second Name", equip2.Name); }
public void TemplateSubScopeRemoved() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECSubScope> synchronizer = templates.SubScopeSynchronizer; TECSubScope templateSS = new TECSubScope(); templateSS.Name = "First Name"; templates.Templates.SubScopeTemplates.Add(templateSS); TECEquipment templateEquip = new TECEquipment(); templates.Templates.EquipmentTemplates.Add(templateEquip); TECSubScope ss1 = synchronizer.NewItem(templateSS); TECSubScope ss2 = synchronizer.NewItem(templateSS); templateEquip.SubScope.Add(ss1); templateEquip.SubScope.Add(ss2); //Act templates.Templates.SubScopeTemplates.Remove(templateSS); ss2.Name = "Second Name"; //Assert Assert.IsFalse(synchronizer.Contains(templateSS)); Assert.IsFalse(synchronizer.Contains(ss1)); Assert.IsFalse(synchronizer.Contains(ss2)); Assert.AreEqual("First Name", ss1.Name); Assert.AreEqual("Second Name", ss2.Name); }
public void TemplatedSubScopeRemovedFromTemplateEquipment() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECEquipment> equipSynchronizer = templates.EquipmentSynchronizer; TemplateSynchronizer <TECSubScope> ssSynchronizer = templates.SubScopeSynchronizer; TECEquipment templateEquip = new TECEquipment(); templates.Templates.EquipmentTemplates.Add(templateEquip); TECSubScope templateSS = new TECSubScope(); templates.Templates.SubScopeTemplates.Add(templateSS); TECSubScope instanceSS = ssSynchronizer.NewItem(templateSS); templateEquip.SubScope.Add(instanceSS); TECEquipment instanceEquip = equipSynchronizer.NewItem(templateEquip); templates.Templates.EquipmentTemplates.Add(instanceEquip); //Act templateEquip.SubScope.Remove(instanceSS); //Assert Assert.IsTrue(instanceEquip.SubScope.Count == 0, "SubScope not removed properly from equipment reference."); Assert.IsFalse(ssSynchronizer.Contains(instanceSS), "Reference SubScope not removed properly from synchronizer."); Assert.IsTrue(ssSynchronizer.Contains(templateSS), "Template SubScope was removed from synchronizer when it shouldn't have been."); }
public void InstanceSubScopeRemovedFromReferenceEquipment() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECEquipment> equipSynchronizer = templates.EquipmentSynchronizer; TemplateSynchronizer <TECSubScope> ssSynchronizer = templates.SubScopeSynchronizer; TECEquipment templateEquip = new TECEquipment(); templates.Templates.EquipmentTemplates.Add(templateEquip); TECSubScope ss = new TECSubScope(); templateEquip.SubScope.Add(ss); TECEquipment refEqiup = equipSynchronizer.NewItem(templateEquip); TECSubScope refSS = refEqiup.SubScope[0]; //Act refEqiup.SubScope.Remove(refSS); //Assert Assert.IsTrue(templateEquip.SubScope.Count == 0, "SubScope not removed properly from Equipment template."); Assert.IsFalse(ssSynchronizer.Contains(ss), "SubScope was not removed properly from synchronizer."); Assert.IsFalse(ssSynchronizer.Contains(refSS), "Reference SubScope was not removed properly from synchronizer."); }
public void SubScopeTemplateChanged() { //Arrange TECTemplates templates = new TECTemplates(); TECSubScope templateSS = new TECSubScope(); templateSS.Name = "Template SubScope"; templates.Templates.SubScopeTemplates.Add(templateSS); TemplateSynchronizer <TECSubScope> ssSynchronizer = templates.SubScopeSynchronizer; TECSubScope refSS = ssSynchronizer.NewItem(templateSS); TECEquipment equip = new TECEquipment(); templates.Templates.EquipmentTemplates.Add(equip); equip.SubScope.Add(refSS); TECDevice dev = new TECDevice(new List <TECConnectionType>(), new List <TECProtocol>(), new TECManufacturer()); templates.Catalogs.Add(dev); TECPoint point = new TECPoint(); point.Label = "Test Point"; point.Type = IOType.AI; point.Quantity = 5; TECAssociatedCost cost = new TECAssociatedCost(CostType.TEC); templates.Catalogs.Add(cost); TECTag tag = new TECTag(); templates.Catalogs.Add(tag); //Act templateSS.Description = "Test Description"; templateSS.Devices.Add(dev); templateSS.AddPoint(point); templateSS.AssociatedCosts.Add(cost); templateSS.Tags.Add(tag); //Assert //Assert.AreEqual(templateSS.Description, refSS.Description, "Description didn't sync properly between SubScope."); Assert.AreEqual(templateSS.Devices[0], refSS.Devices[0], "Devices didn't sync properly between SubScope."); Assert.AreEqual(templateSS.Points[0].Label, refSS.Points[0].Label, "Points didn't sync properly between SubScope."); Assert.AreEqual(templateSS.Points[0].Type, refSS.Points[0].Type, "Points didn't sync properly between SubScope."); Assert.AreEqual(templateSS.Points[0].Quantity, refSS.Points[0].Quantity, "Points didn't sync properly between SubScope."); Assert.AreEqual(templateSS.AssociatedCosts[0], refSS.AssociatedCosts[0], "Associated costs didn't sync properly between SubScope."); Assert.AreEqual(templateSS.Tags[0], refSS.Tags[0], "Tags didn't sync properly between SubScope."); }
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 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 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 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 NewItemNoGroupTest() { //Arrange TECScopeTemplates templates = new TECScopeTemplates(); TemplateSynchronizer <TECSubScope> synchronizer = new TemplateSynchronizer <TECSubScope>(copySubScope, item => { }, syncSubScope, templates); TECSubScope templateSS = new TECSubScope(); templateSS.Name = "Template SubScope"; //Act TECSubScope copySS = synchronizer.NewItem(templateSS); //Assert Assert.AreEqual(templateSS.Name, copySS.Name); Assert.AreNotEqual(templateSS.Guid, copySS.Guid); }
public void ChangeInstanceTest() { //Arrange TECScopeTemplates templates = new TECScopeTemplates(); TemplateSynchronizer <TECSubScope> synchronizer = new TemplateSynchronizer <TECSubScope>(copySubScope, item => { }, syncSubScope, templates); TECSubScope templateSS = new TECSubScope(); templateSS.Name = "Template SubScope"; TECSubScope copySS = synchronizer.NewItem(templateSS); //Act copySS.Description = "Test Description"; //Assert Assert.AreEqual(templateSS.Description, copySS.Description); }
public static void AddSyncronizerItems(TECTemplates templates) { TemplateSynchronizer <TECEquipment> equipSynchronizer = templates.EquipmentSynchronizer; TemplateSynchronizer <TECSubScope> ssSynchronizer = templates.SubScopeSynchronizer; TECSystem syncSys = new TECSystem(); syncSys.Name = "Sync System"; templates.Templates.SystemTemplates.Add(syncSys); TECEquipment syncEquip = new TECEquipment(); syncEquip.Name = "Sync Equip"; templates.Templates.EquipmentTemplates.Add(syncEquip); syncSys.Equipment.Add(equipSynchronizer.NewItem(syncEquip)); TECSubScope syncSubScope = new TECSubScope(); syncSubScope.Name = "Sync SS"; templates.Templates.SubScopeTemplates.Add(syncSubScope); syncEquip.SubScope.Add(ssSynchronizer.NewItem(syncSubScope)); }
public TECTemplates(Guid guid) : base(guid) { Catalogs.ScopeChildRemoved += scopeChildRemoved; SubScopeSynchronizer = new TemplateSynchronizer <TECSubScope>((item => { return(new TECSubScope(item)); }), (item => { }), syncSubScope, this.Templates); SubScopeSynchronizer.TECChanged += synchronizerChanged; EquipmentSynchronizer = new TemplateSynchronizer <TECEquipment>( //Copy (item => { TECEquipment newItem = new TECEquipment(); newItem.CopyPropertiesFromScope(item); foreach (TECSubScope subScope in item.SubScope) { newItem.SubScope.Add(SubScopeSynchronizer.NewItem(subScope)); } return(newItem); }), //Remove (item => { foreach (TECSubScope subScope in item.SubScope) { if (SubScopeSynchronizer.GetTemplate(subScope) != null) { SubScopeSynchronizer.RemoveItem(subScope); } } }), //Sync syncEquipment, this.Templates); EquipmentSynchronizer.TECChanged += synchronizerChanged; }
public void ReferenceSubScopeRemoved() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECSubScope> synchronizer = templates.SubScopeSynchronizer; TECSubScope templateSS = new TECSubScope(); templates.Templates.SubScopeTemplates.Add(templateSS); TECEquipment templateEquip = new TECEquipment(); templates.Templates.EquipmentTemplates.Add(templateEquip); TECSubScope refSS = synchronizer.NewItem(templateSS); templateEquip.SubScope.Add(refSS); //Act templateEquip.SubScope.Remove(refSS); //Assert Assert.IsFalse(synchronizer.Contains(refSS)); Assert.IsTrue(synchronizer.Contains(templateSS)); }
public void ReferenceEquipmentRemoved() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECEquipment> synchronizer = templates.EquipmentSynchronizer; TECEquipment templateEquip = new TECEquipment(); templates.Templates.EquipmentTemplates.Add(templateEquip); TECSystem templateSys = new TECSystem(); templates.Templates.SystemTemplates.Add(templateSys); TECEquipment refEquip = synchronizer.NewItem(templateEquip); templateSys.Equipment.Add(refEquip); //Act templateSys.Equipment.Remove(refEquip); //Assert Assert.IsFalse(synchronizer.Contains(refEquip)); Assert.IsTrue(synchronizer.Contains(templateEquip)); }
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); } } }
public void EquipmentReferenceChanged() { //Arrange TECTemplates templates = new TECTemplates(); TECEquipment templateEquip = new TECEquipment(); templateEquip.Name = "Template Equip"; templates.Templates.EquipmentTemplates.Add(templateEquip); TemplateSynchronizer <TECEquipment> equipSynchronizer = templates.EquipmentSynchronizer; TECEquipment refEquip = equipSynchronizer.NewItem(templateEquip); TECSystem sys = new TECSystem(); templates.Templates.SystemTemplates.Add(sys); sys.Equipment.Add(refEquip); TECDevice dev = new TECDevice(new List <TECConnectionType>(), new List <TECProtocol>(), new TECManufacturer()); templates.Catalogs.Add(dev); TECPoint point = new TECPoint(); point.Label = "Test Point"; point.Type = IOType.AI; point.Quantity = 5; TECAssociatedCost cost = new TECAssociatedCost(CostType.TEC); templates.Catalogs.Add(cost); TECTag tag = new TECTag(); templates.Catalogs.Add(tag); TECSubScope ss = new TECSubScope(); ss.Description = "Test Description"; ss.Devices.Add(dev); ss.AddPoint(point); ss.AssociatedCosts.Add(cost); ss.Tags.Add(tag); templates.Templates.SubScopeTemplates.Add(ss); //Act refEquip.Description = "Test Description"; refEquip.SubScope.Add(ss); refEquip.AssociatedCosts.Add(cost); refEquip.Tags.Add(tag); //Assert //Assert.AreEqual(refEquip.Description, templateEquip.Description, "Description didn't sync properly between Equipment."); Assert.IsNotNull(templateEquip.SubScope[0], "SubScope didn't sync properly between Equipment."); TECSubScope templateSubScope = templateEquip.SubScope[0]; TECSubScope refSubScope = refEquip.SubScope[0]; //Assert.AreEqual(refSubScope.Description, templateSubScope.Description, "Description didn't sync properly between SubScope in Equipment."); Assert.AreEqual(refSubScope.Devices[0], templateSubScope.Devices[0], "Devices didn't sync properly between SubScope in Equipment."); Assert.AreEqual(refSubScope.Points[0].Label, templateSubScope.Points[0].Label, "Points didn't sync properly between SubScope in Equipment."); Assert.AreEqual(refSubScope.Points[0].Type, templateSubScope.Points[0].Type, "Points didn't sync properly between SubScope in Equipment."); Assert.AreEqual(refSubScope.Points[0].Quantity, templateSubScope.Points[0].Quantity, "Points didn't sync properly between SubScope in Equipment."); Assert.AreEqual(refSubScope.AssociatedCosts[0], templateSubScope.AssociatedCosts[0], "AssociatedCosts didn't sync properly between SubScope in Equipment."); Assert.AreEqual(refSubScope.Tags[0], templateSubScope.Tags[0], "Tags didn't sync properly between SubScope."); Assert.AreEqual(refEquip.AssociatedCosts[0], templateEquip.AssociatedCosts[0], "AssociatedCosts didn't sync properly between Equipment."); Assert.AreEqual(refEquip.Tags[0], templateEquip.Tags[0], "Tags didn't sync properly in Equipment."); }
public static TECTemplates CreateTestTemplates() { TECTemplates templates = new TECTemplates(); //Labor //templates.Labor = CreateTestLabor(); templates.Parameters.Add(CreateTestParameters(Guid.NewGuid())); templates.Catalogs = CreateTestCatalogs(); //Tags TECTag testTag = new TECTag(); testTag.Label = "Test Tag"; TECTag sysTag = new TECTag(); sysTag.Label = "System Tag"; TECTag equipTag = new TECTag(); equipTag.Label = "Equipment Tag"; TECTag ssTag = new TECTag(); ssTag.Label = "SubScope Tag"; TECTag devTag = new TECTag(); devTag.Label = "Device Tag"; templates.Catalogs.Tags.Add(testTag); templates.Catalogs.Tags.Add(sysTag); templates.Catalogs.Tags.Add(equipTag); templates.Catalogs.Tags.Add(ssTag); templates.Catalogs.Tags.Add(devTag); //Manufacturers TECManufacturer testMan = new TECManufacturer(); testMan.Label = "Test Manufacturer"; testMan.Multiplier = 0.654; TECManufacturer testDevMan = new TECManufacturer(); testDevMan.Label = "Child Manufacturer (Test Device)"; testDevMan.Multiplier = 0.446; TECManufacturer childDevMan = new TECManufacturer(); childDevMan.Label = "Child Manufacturer (Child Device)"; childDevMan.Multiplier = 0.916; templates.Catalogs.Manufacturers.Add(testMan); templates.Catalogs.Manufacturers.Add(testDevMan); templates.Catalogs.Manufacturers.Add(childDevMan); //Connection Types TECConnectionType testDevConnType = new TECConnectionType(); testDevConnType.Name = "FourC18"; TECConnectionType childDevConnType = new TECConnectionType(); childDevConnType.Name = "ThreeC18"; templates.Catalogs.ConnectionTypes.Add(testDevConnType); templates.Catalogs.ConnectionTypes.Add(childDevConnType); //Conduit Types TECElectricalMaterial testConduitType = new TECElectricalMaterial(); testConduitType.Name = "EMT"; testConduitType.Cost = 12; testConduitType.Labor = 2; templates.Catalogs.ConduitTypes.Add(testConduitType); TECElectricalMaterial otherConduitType = new TECElectricalMaterial(); otherConduitType.Name = "RGS"; otherConduitType.Cost = 18; otherConduitType.Labor = 4; templates.Catalogs.ConduitTypes.Add(otherConduitType); //Associated Costs TECAssociatedCost testAssociatedCost = new TECAssociatedCost(CostType.Electrical); testAssociatedCost.Name = "Flex"; testAssociatedCost.Cost = 42; templates.Catalogs.AssociatedCosts.Add(testAssociatedCost); var testCost2 = new TECAssociatedCost(CostType.TEC); testCost2.Name = "Other Cost"; templates.Catalogs.AssociatedCosts.Add(testCost2); //IO Modules TECIOModule testIOModule = new TECIOModule(testMan); testIOModule.Name = "Test IO Module"; testIOModule.Price = 42; testIOModule.Manufacturer = testMan; templates.Catalogs.IOModules.Add(testIOModule); //Devices ObservableCollection <TECConnectionType> contypes2 = new ObservableCollection <TECConnectionType>(); contypes2.Add(testDevConnType); TECDevice testDev = new TECDevice(Guid.NewGuid(), contypes2, new List <TECProtocol>(), testDevMan); testDev.Name = "Test Device"; testDev.Description = "Device Description"; testDev.Price = 20.3; ObservableCollection <TECConnectionType> contypes3 = new ObservableCollection <TECConnectionType>(); contypes3.Add(childDevConnType); TECDevice childDev = new TECDevice(Guid.NewGuid(), contypes3, new List <TECProtocol>(), childDevMan); childDev.Name = "Child Device"; childDev.Description = "Child Device Description"; childDev.Price = 54.1; testDev.Tags.Add(devTag); childDev.Tags.Add(devTag); templates.Catalogs.Devices.Add(testDev); templates.Catalogs.Devices.Add(childDev); //System TECSystem system = new TECSystem(false); system.Name = "Test System"; system.Description = "System Description"; TECEquipment sysEquip = new TECEquipment(false); sysEquip.Name = "System Equipment"; sysEquip.Description = "Child Equipment"; TECSubScope sysSS = new TECSubScope(false); sysSS.Name = "System SubScope"; sysSS.Description = "Child SubScope"; sysSS.AssociatedCosts.Add(testAssociatedCost); TECPoint sysPoint = new TECPoint(false); sysPoint.Type = IOType.AI; sysPoint.Label = "System Point"; sysSS.Points.Add(sysPoint); sysSS.Devices.Add(childDev); sysSS.Tags.Add(ssTag); sysEquip.SubScope.Add(sysSS); sysEquip.Tags.Add(equipTag); system.Equipment.Add(sysEquip); system.Tags.Add(sysTag); templates.SystemTemplates.Add(system); //Equipment TECEquipment equipment = new TECEquipment(false); equipment.Name = "Test Equipment"; equipment.Description = "Equipment Description"; TECSubScope equipSS = new TECSubScope(false); equipSS.Name = "Equipment SubScope"; equipSS.Description = "Child SubScope"; TECPoint equipPoint = new TECPoint(false); equipPoint.Type = IOType.AI; equipPoint.Label = "Equipment Point"; equipSS.Points.Add(equipPoint); equipSS.Devices.Add(childDev); equipSS.Tags.Add(ssTag); equipment.SubScope.Add(equipSS); equipment.Tags.Add(equipTag); templates.EquipmentTemplates.Add(equipment); //SubScope TECSubScope subScope = new TECSubScope(false); subScope.Name = "Test SubScope"; subScope.Description = "SubScope Description"; TECPoint ssPoint = new TECPoint(false); ssPoint.Type = IOType.DO; ssPoint.Label = "SubScope Point"; subScope.Points.Add(ssPoint); subScope.Devices.Add(childDev); subScope.Tags.Add(ssTag); subScope.AssociatedCosts.Add(testAssociatedCost); templates.SubScopeTemplates.Add(subScope); //Controller var expectedControllerType = new TECControllerType(testMan); expectedControllerType.Price = 42.6; TECIO ioToAdd = new TECIO(IOType.AI); ioToAdd.Quantity = 5; TECIO otherIO = new TECIO(IOType.UI); otherIO.Quantity = 3; expectedControllerType.IO.Add(ioToAdd); expectedControllerType.IO.Add(otherIO); templates.Catalogs.ControllerTypes.Add(expectedControllerType); TECController expectedController = new TECProvidedController(expectedControllerType, false); expectedController.Name = "Test Controller"; expectedController.Description = "Test description"; TECController controlledController = new TECProvidedController(expectedControllerType, false); controlledController.Name = "Controlled Controller"; templates.ControllerTemplates.Add(expectedController); //Misc Cost TECMisc cost = new TECMisc(CostType.TEC, false); cost.Name = "Test Cost"; cost.Cost = 79.79; cost.Quantity = 67; templates.MiscCostTemplates.Add(cost); //Misc wiring TECMisc wiring = new TECMisc(CostType.Electrical, false); wiring.Name = "Test Wiring"; wiring.Cost = 69.69; wiring.Quantity = 69; templates.MiscCostTemplates.Add(wiring); //Panel Types TECPanelType panelType = new TECPanelType(testMan); panelType.Price = 123.4; panelType.Name = "Test Panel Type"; templates.Catalogs.PanelTypes.Add(panelType); //Panels TECPanel panel = new TECPanel(panelType, false); panel.Name = "Test Panel"; panel.AssociatedCosts.Add(testAssociatedCost); panel.AssociatedCosts.Add(testAssociatedCost); TECPanel controlledPanel = new TECPanel(panelType, false); controlledPanel.Name = "Controlled Panel"; templates.PanelTemplates.Add(panel); //Synchronizer TemplateSynchronizer <TECEquipment> equipSynchronizer = templates.EquipmentSynchronizer; TemplateSynchronizer <TECSubScope> ssSynchronizer = templates.SubScopeSynchronizer; TECSystem syncSys = new TECSystem(false); syncSys.Name = "Sync System"; templates.SystemTemplates.Add(syncSys); TECEquipment syncEquip = new TECEquipment(false); syncEquip.Name = "Sync Equip"; templates.EquipmentTemplates.Add(syncEquip); syncSys.Equipment.Add(equipSynchronizer.NewItem(syncEquip)); TECSubScope syncSubScope = new TECSubScope(false); syncSubScope.Name = "Sync SS"; templates.SubScopeTemplates.Add(syncSubScope); syncEquip.SubScope.Add(ssSynchronizer.NewItem(syncSubScope)); return(templates); }
public void CopyTemplateWithReferences() { //Arrange TECTemplates templates = new TECTemplates(); TemplateSynchronizer <TECEquipment> equipSync = templates.EquipmentSynchronizer; TemplateSynchronizer <TECSubScope> ssSync = templates.SubScopeSynchronizer; TECSystem templateSys = new TECSystem(); templates.Templates.SystemTemplates.Add(templateSys); TECEquipment templateEquip = new TECEquipment(); templateEquip.Name = "Template Equip"; templates.Templates.EquipmentTemplates.Add(templateEquip); templateSys.Equipment.Add(equipSync.NewItem(templateEquip)); TECSubScope templateSS = new TECSubScope(); templateSS.Name = "Template SS"; templates.Templates.SubScopeTemplates.Add(templateSS); templateEquip.SubScope.Add(ssSync.NewItem(templateSS)); TECSubScope equipSS = new TECSubScope(); equipSS.Name = "Equip SS"; templateEquip.SubScope.Add(equipSS); //Act TECSystem sysCopy = new TECSystem(templateSys, synchronizers: new Tuple <TemplateSynchronizer <TECEquipment>, TemplateSynchronizer <TECSubScope> >(equipSync, ssSync)); //Assert TECEquipment tempEquipCopy = sysCopy.Equipment[0]; TECSubScope tempSSCopy = null, equipSSCopy = null; foreach (TECSubScope ss in tempEquipCopy.SubScope) { if (ss.Name == "Template SS") { tempSSCopy = ss; } else if (ss.Name == "Equip SS") { equipSSCopy = ss; } else { Assert.Fail("Different subScope than expected in System copy."); } } Assert.IsNotNull(tempSSCopy, "Template SubScope didn't copy properly."); Assert.IsNotNull(equipSSCopy, "Equipment SubScope didn't copy properly."); Assert.IsTrue(equipSync.Contains(tempEquipCopy)); Assert.IsTrue(equipSync.GetFullDictionary()[templateEquip].Contains(tempEquipCopy)); Assert.IsTrue(ssSync.Contains(tempSSCopy)); Assert.IsTrue(ssSync.Contains(equipSSCopy)); Assert.IsTrue(ssSync.GetFullDictionary()[templateSS].Contains(ssSync.GetParent(tempSSCopy))); Assert.IsTrue(ssSync.GetFullDictionary()[equipSS].Contains(equipSSCopy)); }