Пример #1
0
        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);
        }
Пример #3
0
 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;
 }
Пример #4
0
 // 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);
        }
Пример #6
0
        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
        }
Пример #7
0
        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);
 }
Пример #10
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);
        }
Пример #12
0
 public void DisconnectComponents(Component A, Component B)
 {
     
 }
Пример #13
0
 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);
     }
     
 }
Пример #14
0
 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);
 }