assura-codegen 0.1.0

Rust code generation from type-checked Assura contracts
Documentation
use super::*;

// -----------------------------------------------------------------------
// T022: Cargo project generation tests
// -----------------------------------------------------------------------

#[test]
fn cargo_toml_has_package_name() {
    let project = codegen_ok(
        r#"
project test_project {
    profile: [core]
}
"#,
    );
    assert!(project.cargo_toml.contains("test_project"));
    assert!(project.cargo_toml.contains("[package]"));
}

#[test]
fn default_project_name_is_generated() {
    let project = codegen_ok("");
    assert!(
        project.cargo_toml.contains("\"generated\""),
        "default project name should be 'generated'"
    );
}

#[test]
fn generated_file_is_src_lib_rs() {
    let project = codegen_ok(
        r#"
type X {
    val: Int
}
"#,
    );
    assert_eq!(project.files.len(), 1);
    assert_eq!(project.files[0].0, "src/lib.rs");
}

#[test]
fn generated_rust_has_header_comment() {
    let project = codegen_ok("");
    let lib = &project.files[0].1;
    assert!(lib.contains("Generated by the Assura compiler"));
    assert!(lib.contains("Do not edit manually"));
}