public void IsAndValidWithTwoInputsAndOutput() { and.AddOutput(GetBusInstance()); and.AddInput(GetBusInstance()); and.AddInput(GetBusInstance()); Assert.IsTrue(and.IsValid()); }
public void DoesSimulateWork() { InputUnit input = new InputUnit(); And and = new And(); OutputUnit output = new OutputUnit(); Bus bus1 = new Bus(input, and, and); Bus bus2 = new Bus(and, output); and.AddInput(bus1, bus1); and.AddOutput(bus2); output.AddInput(bus2); input.AddOutput(bus1); output.Simulate(); Assert.AreEqual(1, output.nextState); }
private void btnSimulate1_Click(object sender, EventArgs e) { InputUnit input1 = new InputUnit(); InputUnit input2 = new InputUnit(); InputUnit input3 = new InputUnit(); And gate1 = new And(); And gate2 = new And(); OutputUnit output = new OutputUnit(); Bus bus1 = new Bus(input1, gate1); Bus bus2 = new Bus(input2, gate1); Bus bus3 = new Bus(input3, gate2); Bus bus4 = new Bus(gate1, gate2); Bus bus5 = new Bus(gate2, output); gate1.AddInput(bus1, bus2); gate2.AddInput(bus3, bus4); gate1.AddOutput(bus4); gate2.AddOutput(bus5); input1.AddOutput(bus1); input2.AddOutput(bus2); input3.AddOutput(bus3); output.AddInput(bus5); Circuit circuit = new Circuit(); circuit.AddGates(gate1, gate2, input1, input2, input3, output); circuit.AddBuses(bus1, bus2, bus3, bus4, bus5); if (circuit.IsValid()) { circuit.Simulate(); if (output.currentState == 1) { picOutput1.ImageLocation = @"..\..\src\GUI\Images\OnBulb.jpg"; } else { picOutput1.ImageLocation = @"..\..\src\GUI\Images\OffBulb.jpg"; } } else { picOutput1.ImageLocation = @"..\..\src\GUI\Images\InvalidCircuit.png"; } }
public void TestNotCompletedLoop() { /** Basic circuit **/ //Adder Node node1 = new Or() { Name = "Or 1" }; Node node2 = new Or() { Name = "Or 2" }; Node node3 = new Not() { Name = "Not 3" }; Node node4 = new Not() { Name = "Not 4" }; Node node5 = new And() { Name = "And 5" }; Node node6 = new And() { Name = "And 6" }; bool s = true; bool r = false; //Edges node5.AddDefaultInputs("IN1", s); //input 1 node6.AddDefaultInputs("IN2", s); node5.AddDefaultInputs("IN3", r); node6.AddDefaultInputs("IN4", r); node1.AddOutput(node3); node2.AddOutput(node4); node3.AddOutput(node2); node4.AddOutput(node1); node5.AddOutput(node1); node6.AddOutput(node2); Circuit circuit = new Circuit() { Name = "Circuit 1" }; circuit.Components.Add(node1); circuit.Components.Add(node2); circuit.Components.Add(node3); circuit.Components.Add(node4); circuit.Components.Add(node5); circuit.Components.Add(node6); circuit.Run(new Validator()); foreach (Component comp in circuit.Components) { if (comp.ClassType != "Circuit" && !comp.Resolved) { throw new Exception("Circuit not completed: " + comp.Name); } } }