public void QuantumGate_ControlledGateFromNotGate_IsValid()
 {
     Assert.AreEqual(QuantumGate.ControlledGate(QuantumGate.NotGate), new QuantumGate(new Complex[, ] {
         { 1, 0, 0, 0 },
         { 0, 1, 0, 0 },
         { 0, 0, 0, 1 },
         { 0, 0, 1, 0 },
     }));
 }
 public void QuantumGate_ControlledGateFromControlledNotGate_ThrowsArgumentException()
 {
     QuantumGate quantumGate = QuantumGate.ControlledGate(QuantumGate.ControlledGate(QuantumGate.NotGate));
 }