@@ -363,3 +363,47 @@ def test_readout_mitigate(backend):
363363 readout_error .append ([0.7 , 0.9 ]) # readout error of qubit 2
364364
365365 mitigate_readout (nqubit , c , readout_error )
366+
367+
368+ def test_valid_kraus_operators ():
369+ # Test with phase damping channel - should pass
370+ kraus = phasedampingchannel (0.3 )
371+ assert tc .DMCircuit .check_kraus (kraus ) is True
372+
373+ # Test with depolarizing channel - should pass
374+ kraus = depolarizingchannel (0.1 , 0.1 , 0.1 )
375+ assert tc .DMCircuit .check_kraus (kraus ) is True
376+
377+ # Test with reset channel - should pass
378+ kraus = resetchannel ()
379+ assert tc .DMCircuit .check_kraus (kraus ) is True
380+
381+ # Test with amplitude damping channel - should pass
382+ kraus = amplitudedampingchannel (0.2 , 0.3 )
383+ assert tc .DMCircuit .check_kraus (kraus ) is True
384+
385+
386+ def test_invalid_kraus_operators ():
387+ # Create invalid Kraus operators that don't sum to identity
388+ invalid_kraus = [
389+ tc .gates .Gate (np .array ([[1.0 , 0 ], [0 , 1.0 ]])),
390+ tc .gates .Gate (np .array ([[1.0 , 0 ], [0 , 1.0 ]])),
391+ ]
392+
393+ with pytest .raises (ValueError ):
394+ tc .DMCircuit .check_kraus (invalid_kraus )
395+
396+
397+ def test_single_kraus_operator ():
398+ # Test with single unitary operator (should pass)
399+ kraus = [tc .gates .Gate (np .array ([[1.0 , 0 ], [0 , 1.0 ]]))]
400+ assert tc .DMCircuit .check_kraus (kraus ) is True
401+
402+
403+ def test_non_square_matrices ():
404+ # Test with non-square matrices (should raise error during matmul)
405+ invalid_kraus = [
406+ tc .gates .Gate (np .array ([[1.0 , 0 ]])),
407+ ]
408+ with pytest .raises (ValueError ):
409+ tc .DMCircuit .check_kraus (invalid_kraus )
0 commit comments