Skip to main content

quantrs2_circuit/debugger/
functions.rs

1//! Auto-generated module
2//!
3//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
4
5use crate::builder::Circuit;
6
7use super::types::{DebuggerConfig, ExecutionStatus, QuantumDebugger, StepResult};
8
9#[cfg(test)]
10mod tests {
11    use super::*;
12    use quantrs2_core::gate::multi::CNOT;
13    use quantrs2_core::gate::single::Hadamard;
14    use quantrs2_core::qubit::QubitId;
15    #[test]
16    fn test_debugger_creation() {
17        let circuit = Circuit::<2>::new();
18        let debugger = QuantumDebugger::new(circuit);
19        assert_eq!(debugger.get_execution_status(), ExecutionStatus::Ready);
20    }
21    #[test]
22    fn test_breakpoint_management() {
23        let circuit = Circuit::<2>::new();
24        let mut debugger = QuantumDebugger::new(circuit);
25        debugger
26            .add_gate_breakpoint(0)
27            .expect("add_gate_breakpoint should succeed");
28        let breakpoints = debugger
29            .breakpoints
30            .read()
31            .expect("breakpoints lock should not be poisoned");
32        assert!(breakpoints.gate_breakpoints.contains(&0));
33    }
34    #[test]
35    fn test_step_execution() {
36        let mut circuit = Circuit::<1>::new();
37        circuit
38            .add_gate(Hadamard { target: QubitId(0) })
39            .expect("add_gate should succeed");
40        let mut debugger = QuantumDebugger::new(circuit);
41        debugger
42            .start_session()
43            .expect("start_session should succeed");
44        let result = debugger.step_next().expect("step_next should succeed");
45        match result {
46            StepResult::Success => {}
47            _ => panic!("Expected successful step execution"),
48        }
49    }
50    #[test]
51    fn test_visualization_configuration() {
52        let circuit = Circuit::<2>::new();
53        let config = DebuggerConfig {
54            enable_auto_visualization: true,
55            ..Default::default()
56        };
57        let debugger = QuantumDebugger::with_config(circuit, config);
58        let visualizer = debugger
59            .visualizer
60            .read()
61            .expect("visualizer lock should not be poisoned");
62        assert!(visualizer.config.enable_realtime);
63    }
64    #[test]
65    fn test_performance_profiling() {
66        let mut circuit = Circuit::<2>::new();
67        circuit
68            .add_gate(Hadamard { target: QubitId(0) })
69            .expect("add_gate Hadamard should succeed");
70        circuit
71            .add_gate(CNOT {
72                control: QubitId(0),
73                target: QubitId(1),
74            })
75            .expect("add_gate CNOT should succeed");
76        let config = DebuggerConfig {
77            enable_profiling: true,
78            ..Default::default()
79        };
80        let mut debugger = QuantumDebugger::with_config(circuit, config);
81        let _summary = debugger.run().expect("debugger run should succeed");
82        let analysis = debugger
83            .get_performance_analysis()
84            .expect("get_performance_analysis should succeed");
85        assert!(!analysis.suggestions.is_empty() || analysis.suggestions.is_empty());
86    }
87    #[test]
88    fn test_error_detection() {
89        let circuit = Circuit::<1>::new();
90        let config = DebuggerConfig {
91            enable_error_detection: true,
92            ..Default::default()
93        };
94        let debugger = QuantumDebugger::with_config(circuit, config);
95        let detector = debugger
96            .error_detector
97            .read()
98            .expect("error_detector lock should not be poisoned");
99        assert!(detector.config.enable_auto_detection);
100    }
101}