quantrs2-circuit 0.1.3

Quantum circuit representation and DSL for the QuantRS2 framework
Documentation
//! Tests for quantum circuit formatter

use super::*;
use crate::builder::Circuit;
use quantrs2_core::gate::multi::CNOT;
use quantrs2_core::gate::single::Hadamard;
use quantrs2_core::qubit::QubitId;

#[test]
fn test_formatter_creation() {
    let circuit = Circuit::<2>::new();
    let formatter = QuantumFormatter::new(circuit);
    assert_eq!(formatter.config.max_line_length, 100);
}

#[test]
fn test_formatting_process() {
    let mut circuit = Circuit::<2>::new();
    circuit
        .add_gate(Hadamard { target: QubitId(0) })
        .expect("add H gate to circuit");
    circuit
        .add_gate(CNOT {
            control: QubitId(0),
            target: QubitId(1),
        })
        .expect("add CNOT gate to circuit");

    let mut formatter = QuantumFormatter::new(circuit);
    let result = formatter
        .format_circuit()
        .expect("format_circuit should succeed");

    assert!(!result.formatted_circuit.code.is_empty());
    assert!(result.statistics.total_lines > 0);
}

#[test]
fn test_config_defaults() {
    let config = FormatterConfig::default();
    assert_eq!(config.max_line_length, 100);
    assert_eq!(config.indentation.spaces_per_level, 4);
    assert!(config.spacing.around_operators);
}

#[test]
fn test_style_compliance() {
    let circuit = Circuit::<2>::new();
    let formatter = QuantumFormatter::new(circuit);

    let style_info = StyleInformation {
        applied_rules: Vec::new(),
        violations_fixed: Vec::new(),
        compliance_score: 0.9,
        consistency_metrics: ConsistencyMetrics {
            naming_consistency: 0.9,
            indentation_consistency: 0.9,
            spacing_consistency: 0.9,
            comment_consistency: 0.9,
            overall_consistency: 0.9,
        },
    };

    let compliance = formatter
        .assess_style_compliance(&style_info)
        .expect("assess_style_compliance should succeed");
    assert!(matches!(
        compliance.compliance_level,
        ComplianceLevel::Excellent
    ));
}