Skip to main content

trustformers_debug/quantum_debugging/
functions.rs

1//! Auto-generated module
2//!
3//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
4
5#[cfg(test)]
6mod tests {
7
8    use crate::{QuantumDebugConfig, QuantumDebugger};
9    use anyhow::Result;
10    use scirs2_core::ndarray::Array2;
11    #[test]
12    fn test_quantum_debugger_creation() {
13        let config = QuantumDebugConfig::default();
14        let debugger = QuantumDebugger::new(config);
15        assert_eq!(debugger.config.num_qubits, 16);
16    }
17    #[test]
18    fn test_quantum_analysis() -> Result<()> {
19        let mut debugger = QuantumDebugger::new(QuantumDebugConfig::default());
20        let weights = Array2::<f32>::ones((4, 4)).into_dyn();
21        let analysis = debugger.analyze_layer_quantum("test_layer", &weights)?;
22        assert_eq!(analysis.layer_name, "test_layer");
23        assert!(analysis.coherence_score >= 0.0 && analysis.coherence_score <= 1.0);
24        assert!(analysis.quantum_advantage_score >= 0.0 && analysis.quantum_advantage_score <= 1.0);
25        Ok(())
26    }
27    #[test]
28    fn test_quantum_state_conversion() -> Result<()> {
29        let debugger = QuantumDebugger::new(QuantumDebugConfig::default());
30        let weights = Array2::<f32>::from_elem((2, 2), 0.5).into_dyn();
31        let quantum_state = debugger.weights_to_quantum_state(&weights)?;
32        assert!(!quantum_state.amplitudes.is_empty());
33        assert_eq!(quantum_state.amplitudes.len(), quantum_state.phases.len());
34        assert!(quantum_state.fidelity >= 0.0 && quantum_state.fidelity <= 1.0);
35        assert!(quantum_state.coherence_time > 0.0);
36        Ok(())
37    }
38    #[test]
39    fn test_entanglement_analysis() -> Result<()> {
40        let debugger = QuantumDebugger::new(QuantumDebugConfig::default());
41        let weights = Array2::<f32>::from_elem((4, 4), 0.25).into_dyn();
42        let quantum_state = debugger.weights_to_quantum_state(&weights)?;
43        let entanglement = debugger.analyze_entanglement(&quantum_state)?;
44        assert!(!entanglement.von_neumann_entropy.is_empty());
45        assert!(entanglement.quantum_mutual_information >= 0.0);
46        Ok(())
47    }
48    #[test]
49    fn test_interference_analysis() -> Result<()> {
50        let debugger = QuantumDebugger::new(QuantumDebugConfig::default());
51        let weights = Array2::<f32>::from_elem((3, 3), 0.33).into_dyn();
52        let quantum_state = debugger.weights_to_quantum_state(&weights)?;
53        let interference = debugger.analyze_interference(&quantum_state)?;
54        assert!(interference.visibility >= 0.0 && interference.visibility <= 1.0);
55        assert!(!interference.phase_coherence.is_empty());
56        assert!(!interference.patterns.is_empty());
57        Ok(())
58    }
59    #[test]
60    fn test_error_correction_analysis() -> Result<()> {
61        let debugger = QuantumDebugger::new(QuantumDebugConfig::default());
62        let weights = Array2::<f32>::from_elem((5, 5), 0.2).into_dyn();
63        let quantum_state = debugger.weights_to_quantum_state(&weights)?;
64        let error_correction = debugger.analyze_error_correction(&quantum_state)?;
65        assert!(!error_correction.correction_codes.is_empty());
66        assert!(error_correction.success_rate >= 0.0 && error_correction.success_rate <= 1.0);
67        assert!(
68            error_correction.logical_error_rate >= 0.0
69                && error_correction.logical_error_rate <= 1.0
70        );
71        Ok(())
72    }
73}