public void Not2(VoltageSignal voltage, VoltageSignal input, VoltageSignal expected) { // arrange var not = new NOT("test"); // act not.V.V = voltage; not.Input.V = input; // assert Assert.AreEqual(expected, not.Output.V, $"V: {not.V}; I:{not.Input}"); }
public void Relay_Inverted(VoltageSignal voltage, VoltageSignal input, VoltageSignal expected) { // arrage var relay = new Relay("test", true); // act relay.Voltage.V = voltage; relay.Input.V = input; // assert Assert.AreEqual(expected, relay.Output.V, $"V: {voltage}; I:{input}"); }
public void AND(VoltageSignal voltage, VoltageSignal a, VoltageSignal b, VoltageSignal expected) { // arrage var and = new AND("test"); // act and.V.V = voltage; and.A.V = a; and.B.V = b; // assert Assert.AreEqual(expected, and.O.V, $"V:{and.V}; A:{and.A}; B:{and.B}"); }
public void NOR(VoltageSignal voltage, VoltageSignal a, VoltageSignal b, VoltageSignal expected) { // arrage var nor = new NOR("test"); // act nor.V.V = voltage; nor.A.V = a; nor.B.V = b; // assert Assert.AreEqual(expected, nor.O.V, $"V:{nor.V}; A:{nor.A}; B:{nor.B}"); }
public void XOR(VoltageSignal voltage, VoltageSignal a, VoltageSignal b, VoltageSignal expected) { // arrage var xor = new XOR("test"); // act xor.V.V = voltage; xor.A.V = a; xor.B.V = b; // assert Assert.AreEqual(expected, xor.O.V, $"V:{xor.V}; A:{xor.A}; B:{xor.B}"); }
public void HalfAdder_Carry(VoltageSignal voltage, VoltageSignal a, VoltageSignal b, VoltageSignal expected) { // arrage var halfAdder = new HalfAdder("test"); // act halfAdder.V.V = voltage; halfAdder.A.V = a; halfAdder.B.V = b; // assert Assert.AreEqual(expected, halfAdder.Carry.V, $"V:{halfAdder.V.V}; A:{halfAdder.A.V}; B:{halfAdder.B.V}"); }
public void NOR3(VoltageSignal voltage, VoltageSignal a, VoltageSignal b, VoltageSignal c, VoltageSignal expected) { // arrage var nor3 = new NOR3("test"); // act nor3.V.V = voltage; nor3.A.V = a; nor3.B.V = b; nor3.C.V = c; // assert Assert.AreEqual(expected, nor3.O.V, $"V:{nor3.V.V}; A:{nor3.A}; B:{nor3.B}; C:{nor3.C}"); }
public void Selector2to1_Output(VoltageSignal voltage, VoltageSignal a, VoltageSignal b, VoltageSignal select, VoltageSignal expected) { // arrange var selector = new Selector2to1("test"); // act selector.V.V = voltage; selector.A.V = a; selector.B.V = b; selector.Select.V = select; // assert Assert.AreEqual(expected, selector.O.V); }
public void FullAdder_Carry(VoltageSignal v, VoltageSignal carryIn, VoltageSignal a, VoltageSignal b, VoltageSignal expected) { // arrange var fullAdder = new FullAdder("test"); // act fullAdder.V.V = v; fullAdder.CarryIn.V = carryIn; fullAdder.A.V = a; fullAdder.B.V = b; // assert Assert.AreEqual(expected, fullAdder.Carry.V, $"V:{fullAdder.V}; CarryIn:{fullAdder.CarryIn}; A:{fullAdder.A}; B:{fullAdder.B}"); }
public void ClockAndData() { // arrange var flip = new DFlipFlopEdgeWithPresetAndClear("test"); // act, assert flip.V.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.LOW, flip.Q.V, "Gate on: Q L"); Assert.AreEqual(VoltageSignal.HIGH, flip.Qnot.V, "Gate on: Qnot H"); flip.Clk.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.LOW, flip.Q.V, "Gate on: D: L; Clk: ^: Q L"); Assert.AreEqual(VoltageSignal.HIGH, flip.Qnot.V, "Gate on: D: L; Clk: ^: Qnot H"); flip.Clk.V = VoltageSignal.LOW; Assert.AreEqual(VoltageSignal.LOW, flip.Q.V, "Gate on: D: L; Clk: v: Q L"); Assert.AreEqual(VoltageSignal.HIGH, flip.Qnot.V, "Gate on: D: L; Clk: v: Qnot H"); flip.D.V = VoltageSignal.HIGH; VoltageSignal oldQ = flip.Q.V, oldQnot = flip.Qnot.V; Assert.AreEqual(oldQ, flip.Q.V, "Gate on: D: ^; Clk: L: Q Q"); Assert.AreEqual(oldQnot, flip.Qnot.V, "Gate on: D: ^; Clk: L: Qnot Qnot"); flip.Clk.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: D: H; Clk: ^: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: D: H; Clk: ^: Qnot L"); flip.Clk.V = VoltageSignal.LOW; oldQ = flip.Q.V; oldQnot = flip.Qnot.V; Assert.AreEqual(oldQ, flip.Q.V, "Gate on: D: H; Clk: v: Q Q"); Assert.AreEqual(oldQnot, flip.Qnot.V, "Gate on: D: H; Clk: v: Qnot Qnot"); flip.D.V = VoltageSignal.LOW; flip.Clk.V = VoltageSignal.HIGH; flip.D.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.LOW, flip.Q.V, "Gate on: D: L; Clk: ^: D: ^: Q L"); Assert.AreEqual(VoltageSignal.HIGH, flip.Qnot.V, "Gate on: D: L; Clk: ^: D: ^: Qnot H"); flip.Clk.V = VoltageSignal.LOW; flip.Clk.V = VoltageSignal.HIGH; flip.D.V = VoltageSignal.LOW; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: D: H; Clk: ^: D: v; Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: D: H; Clk: ^: D: v; Qnot L"); }
private static char Bulb(VoltageSignal voltage) => voltage == VoltageSignal.HIGH ? 'Ȳ' : '.';