public void CircuitModifyShouldHaveCorrectNumberOfComponentsAndConnections() { Circuit circuit = new Circuit(); Node con0 = new Node(); // GND Node con1 = new Node(); Node con2 = new Node(); Component battery = new Component(con0, con1, 0, 24); Component resistor1 = new Component(con1, con2, 2, 0); Component resistor2 = new Component(con2, con0, 4, 0); circuit.AddComponent(battery); circuit.AddComponent(resistor1); circuit.AddComponent(resistor2); Assert.IsTrue(circuit.ListComponents.Count == 3); Assert.IsTrue(circuit.ListConnections.Count == 3); circuit.ModifyComponent(resistor1, con2, con0); circuit.ModifyComponent(resistor1, con0, con1); Assert.IsTrue(circuit.ListComponents.Count == 3); Assert.IsTrue(circuit.ListConnections.Count == 3); }
public void TestDifferentID() { Circuit circuit2 = new Circuit(); Node con20 = new Node(); // GND Node con21 = new Node(); Node dummyNode = new Node(); Node dummyConnection2 = new Node(); Node con22 = new Node(); Component battery2 = new Component(con20, con21, 0, 12); Component resistor21 = new Component(con20, con22, 2, 0); Component dummyComponent = new Component(dummyNode, dummyConnection2, 0, 0); Component dummyComponent2 = new Component(dummyNode, dummyConnection2, 0, 0); Component resistor22 = new Component(con21, con22, 2, 0); Component resistor23 = new Component(con21, con22, 2, 0); circuit2.AddComponent(battery2); circuit2.AddComponent(resistor21); circuit2.AddComponent(resistor22); circuit2.AddComponent(resistor23); CircuitCalculator circuitCalculator2 = new CircuitCalculator(); circuitCalculator2.Calculate(circuit2); Assert.IsTrue(Math.Abs(con20.Volts - 0) < 0.0001); Assert.IsTrue(Math.Abs(con21.Volts - 12) < 0.0001); Assert.IsTrue(Math.Abs(con22.Volts - 8) < 0.0001); Assert.IsTrue(Math.Abs(battery2.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor21.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor22.Amps - 2) < 0.0001); Assert.IsTrue(Math.Abs(resistor23.Amps - 2) < 0.0001); }
public SwitchViewModel(int id, DiagramViewModel parent, double left, double top, bool isOn) : base(id,parent, left,top) { Init(); ViewModelParent = parent; double resistance = isOn ? DiagramViewModel.ZERO_RESISTANCE : DiagramViewModel.INFINITE_RESISTANCE; Component = new Component(new Node(), new Node(), resistance, 0); Value = isOn; }
// Are these functions necessary???????? public void ModifyComponent(Component modifyComponent, Node oldNode, Node newNode) { if(oldNode.Id == modifyComponent.Nodes[0].Id) { // [0] is being replaced by the new one modifyComponent.Nodes[0].Components.Remove(modifyComponent); newNode.Components.Add(modifyComponent); modifyComponent.Nodes[0] = newNode; } else if(oldNode.Id == modifyComponent.Nodes[1].Id) { // [1] is being replaced by the new one modifyComponent.Nodes[1].Components.Remove(modifyComponent); newNode.Components.Add(modifyComponent); modifyComponent.Nodes[1] = newNode; } }
public void TestForNoVoltageSourceConnections() { Circuit circuit = new Circuit(); Node con0 = new Node(); // GND Node con1 = new Node(); Component resistor1 = new Component(con0, con1, 2, 0); Component resistor2 = new Component(con1, con0, 2, 0); Component resistor3 = new Component(con1, con0, 2, 0); circuit.AddComponent(resistor1); circuit.AddComponent(resistor2); circuit.AddComponent(resistor3); CircuitCalculator circuitCalculator = new CircuitCalculator(); circuitCalculator.Calculate(circuit); }
public void RemoveComponent(Component removeComponent) { foreach(Node connection in removeComponent.Nodes) { // for each of the vertices in the component, remove its connection to the component; connection.Components.Remove(removeComponent); if(connection.Components.Count == 0) { // connection removeComponent.Nodes[i] has no components listed in it. // remove this connection from _listConnections // garbage collection will deal with the rest ListConnections.Remove(connection); } } // remove the component from the list of components ListComponents.Remove(removeComponent); // then update the connections // connections need to be updated }
public void AddComponent(Component newComponent) { // add the new component to the list of components ListComponents.Add(newComponent); foreach(Node connection in newComponent.Nodes) { // add each of the connections in the new component into the listConnections set // make sure that there are no duplicates bool temp = false; foreach(Node innerConnection in ListConnections) { if(connection.Id == innerConnection.Id) { temp = true; } } if(temp == false) { ListConnections.Add(connection); } // also update each of the connections so that they have a reference to the component connection.Components.Add(newComponent); } // then update the connections // connections need to be updated }
public LightBulbViewModel(int id, DiagramViewModel parent, double left, double top, double resistance) : base(id,parent, left,top) { Init(); ViewModelParent = parent; Component = new Component(new Node(), new Node(), resistance, 0); }
public ConnectorViewModel(int id, IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, Node left, Node right) : base(id,parent) { Init(sourceConnectorInfo, sinkConnectorInfo); Component = new CircuitSimulator.Component(left, right, DiagramViewModel.ZERO_RESISTANCE, 0); }
public AmmeterViewModel(int id, DiagramViewModel parent, double left, double top) : base(id,parent, left,top) { Init(); ViewModelParent = parent; Component = new Component(new Node(), new Node(), DiagramViewModel.ZERO_RESISTANCE, 0); }
public void TestCorrectCircuirs() { Circuit circuit1 = new Circuit(); Node con10 = new Node(); // GND Node con11 = new Node(); Node con12 = new Node(); Node con13 = new Node(); Node con14 = new Node(); Component battery1 = new Component(con10, con11, 0, 24); Component resistor11 = new Component(con10, con12, 2, 0); Component resistor12 = new Component(con10, con12, 4, 0); Component resistor13 = new Component(con11, con13, 3, 0); Component resistor14 = new Component(con11, con14, 5, 0); Component resistor15 = new Component(con13, con14, 1, 0); Component resistor16 = new Component(con12, con13, 2, 0); circuit1.AddComponent(battery1); circuit1.AddComponent(resistor11); circuit1.AddComponent(resistor12); circuit1.AddComponent(resistor13); circuit1.AddComponent(resistor14); circuit1.AddComponent(resistor15); circuit1.AddComponent(resistor16); CircuitCalculator circuitCalculator1 = new CircuitCalculator(); circuitCalculator1.Calculate(circuit1); Assert.IsTrue(Math.Abs(con10.Volts - 0) < 0.0001); Assert.IsTrue(Math.Abs(con11.Volts - 24) < 0.0001); Assert.IsTrue(Math.Abs(con12.Volts - 6) < 0.0001); Assert.IsTrue(Math.Abs(con13.Volts - 15) < 0.0001); Assert.IsTrue(Math.Abs(con14.Volts - 16.5) < 0.0001); Assert.IsTrue(Math.Abs(battery1.Amps - 4.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor11.Amps - 3) < 0.0001); Assert.IsTrue(Math.Abs(resistor12.Amps - 1.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor13.Amps - 3) < 0.0001); Assert.IsTrue(Math.Abs(resistor14.Amps - 1.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor15.Amps - 1.5) < 0.0001); Assert.IsTrue(Math.Abs(resistor16.Amps - 4.5) < 0.0001); Circuit circuit2 = new Circuit(); Node con20 = new Node(); // GND Node con21 = new Node(); Node con22 = new Node(); Component battery2 = new Component(con20, con21, 0, 12); Component resistor21 = new Component(con20, con22, 2, 0); Component resistor22 = new Component(con21, con22, 2, 0); Component resistor23 = new Component(con21, con22, 2, 0); circuit2.AddComponent(battery2); circuit2.AddComponent(resistor21); circuit2.AddComponent(resistor22); circuit2.AddComponent(resistor23); CircuitCalculator circuitCalculator2 = new CircuitCalculator(); circuitCalculator2.Calculate(circuit2); Assert.IsTrue(Math.Abs(con20.Volts - 0) < 0.0001); Assert.IsTrue(Math.Abs(con21.Volts - 12) < 0.0001); Assert.IsTrue(Math.Abs(con22.Volts - 8) < 0.0001); Assert.IsTrue(Math.Abs(battery2.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor21.Amps - 4) < 0.0001); Assert.IsTrue(Math.Abs(resistor22.Amps - 2) < 0.0001); Assert.IsTrue(Math.Abs(resistor23.Amps - 2) < 0.0001); }
public void DisconnectComponents(Component A, Component B) { }
private void ExecuteAddItemCommand(object parameter) { if (parameter is DesignerItemViewModelBase) { DesignerItemViewModelBase item = (DesignerItemViewModelBase) parameter; Component component = null; switch (item.TypeOfObject) { case 0: // Added Ammeter component = new Component(new Node(), new Node(), ZERO_RESISTANCE, 0); break; case 1: // Added Battery component = new Component(new Node(), new Node(), ZERO_RESISTANCE, 5); break; case 2: // Added Light component = new Component(new Node(), new Node(), 1, 0); break; case 3: // Added Resistor component = new Component(new Node(), new Node(), 1, 0); break; case 4: // Added Switch component = new Component(new Node(), new Node(), ZERO_RESISTANCE, 0); break; case 5: // Added Voltmeter component = new Component(new Node(), new Node(), INFINITE_RESISTANCE, 0); break; } item.Component = component; Circuit.AddComponent(component); item.Parent = this; _items.Add(item); UpdateCircuit(false); } else if (parameter is ConnectorViewModel) { ConnectorViewModel item = (ConnectorViewModel) parameter; Component component = null; if (item.SinkConnectorInfo is FullyCreatedConnectorInfo) { // New connection Node left = null; Node right = null; if (item.SinkConnectorInfo.Orientation == ConnectorOrientation.Left) { FullyCreatedConnectorInfo temp = (FullyCreatedConnectorInfo)item.SinkConnectorInfo; left = temp.DataItem.Component.Nodes[0]; } else if(item.SinkConnectorInfo.Orientation == ConnectorOrientation.Right) { FullyCreatedConnectorInfo temp = (FullyCreatedConnectorInfo) item.SinkConnectorInfo; left = temp.DataItem.Component.Nodes[1]; } if(item.SourceConnectorInfo.Orientation == ConnectorOrientation.Left) { FullyCreatedConnectorInfo temp = item.SourceConnectorInfo; right = temp.DataItem.Component.Nodes[0]; } else if(item.SourceConnectorInfo.Orientation == ConnectorOrientation.Right) { FullyCreatedConnectorInfo temp = item.SourceConnectorInfo; right = temp.DataItem.Component.Nodes[1]; } component = new Component(left, right, ZERO_RESISTANCE, 0); Circuit.AddComponent(component); UpdateCircuit(false); } //item.Parent = this; item.Component = component; _items.Add(item); } else if (parameter is SelectableDesignerItemViewModelBase) { SelectableDesignerItemViewModelBase item = (SelectableDesignerItemViewModelBase)parameter; //item.Parent = this; _items.Add(item); } }
public BatteryViewModel(int id, DiagramViewModel parent, double left, double top, double voltage) : base(id,parent, left,top) { Init(); ViewModelParent = parent; Component = new Component(new Node(), new Node(), DiagramViewModel.ZERO_RESISTANCE, voltage); }