oxur-ast 0.2.0

Rust AST ↔ S-expression conversion for Oxur
Documentation
//! Basic code generation tests
//!
//! Tests for the foundational code generation infrastructure.

use oxur_ast::ast::*;
use oxur_ast::gen_rs::{generate_rust, RustCodegen};

#[test]
fn test_empty_crate_generates() {
    // Create minimal empty crate
    let crate_node = Crate {
        attrs: Vec::new(),
        items: Vec::new(),
        spans: ModSpans { inner_span: Span::DUMMY, inject_use_span: Span::DUMMY },
        id: NodeId(0),
        is_placeholder: false,
    };

    // Test without header (default)
    let result = generate_rust(&crate_node);
    assert!(result.is_ok(), "Empty crate should generate successfully");
    let code = result.unwrap();
    assert_eq!(code, "", "Empty crate with no header should generate empty string");

    // Test with header
    let mut codegen = RustCodegen::with_header();
    let result_with_header = codegen.generate_crate(&crate_node);
    assert!(result_with_header.is_ok(), "Empty crate with header should generate successfully");
    let code_with_header = result_with_header.unwrap();
    assert!(
        code_with_header.contains("Generated by Oxur"),
        "Should contain generator comment when header enabled"
    );
}

#[test]
fn test_codegen_new() {
    let _codegen = RustCodegen::new();
    // If this compiles and runs, the infrastructure is working
    assert_eq!(0, 0); // Dummy assertion
}

#[test]
fn test_codegen_default() {
    let _codegen = RustCodegen::default();
    // Verify Default trait implementation
    assert_eq!(0, 0); // Dummy assertion
}