public void DFlipFlopEdgeWithPresetAndClear_Constructor() { // arrange, act var flip = new DFlipFlopEdgeWithPresetAndClear("test"); // assert Assert.AreEqual(VoltageSignal.LOW, flip.V.V, "Constructor: Voltage"); Assert.AreEqual(VoltageSignal.LOW, flip.Clr.V, "Constructor: Clr"); Assert.AreEqual(VoltageSignal.LOW, flip.Pre.V, "Constructor: Pre"); Assert.AreEqual(VoltageSignal.LOW, flip.Clk.V, "Constructor: Clk"); Assert.AreEqual(VoltageSignal.LOW, flip.D.V, "Constructor: D"); Assert.AreEqual(VoltageSignal.LOW, flip.Q.V, "Constructor: Q"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Constructor: Qnot"); Assert.AreEqual("Q: LOW; Qnot: LOW", flip.ToString(), "Constructor: ToString()"); }
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"); }
public void Preset() { // arrange var flip = new DFlipFlopEdgeWithPresetAndClear("test"); flip.V.V = VoltageSignal.HIGH; flip.Pre.V = VoltageSignal.HIGH; // at this point, nothing we do should change Q or Qnot // act, assert flip.Clk.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: L; Clk: ^: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: L; Clk: ^: Qnot L"); flip.Clk.V = VoltageSignal.LOW; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: L; Clk: v: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: L; Clk: v: Qnot L"); flip.D.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: ^; Clk: L: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: ^; Clk: L: Qnot L"); flip.Clk.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: H; Clk: ^: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: H; Clk: ^: Qnot L"); flip.Clk.V = VoltageSignal.LOW; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: H; Clk: v: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: H; Clk: v: Qnot L"); flip.D.V = VoltageSignal.LOW; flip.Clk.V = VoltageSignal.HIGH; flip.D.V = VoltageSignal.HIGH; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: L; Clk: ^: D: ^: Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: L; Clk: ^: D: ^: Qnot L"); flip.Clk.V = VoltageSignal.LOW; flip.Clk.V = VoltageSignal.HIGH; flip.D.V = VoltageSignal.LOW; Assert.AreEqual(VoltageSignal.HIGH, flip.Q.V, "Gate on: Pre: H; D: H; Clk: ^: D: v; Q H"); Assert.AreEqual(VoltageSignal.LOW, flip.Qnot.V, "Gate on: Pre: H; D: H; Clk: ^: D: v; Qnot L"); }