icydb-model 0.299.0

IcyDB application-model authoring, validation, and code generation
Documentation
use super::*;
use crate::node::{Def, SchemaNode, Type};

#[test]
fn rejects_duplicate_type_names_across_type_kinds() {
    let mut schema = Schema::new();
    schema.insert_node(SchemaNode::Record(Record::new(
        Def::new("definition_name_test", "Shared"),
        "Shared",
        crate::node::FieldList::new(&[]),
        Type::new(&[], &[], &[]),
    )));
    schema.insert_node(SchemaNode::Tuple(Tuple::new(
        Def::new("definition_name_test_other", "Shared"),
        "Shared",
        &[],
        Type::new(&[], &[], &[]),
    )));

    let mut errors = ErrorTree::new();
    validate_type_names(&schema, &mut errors);
    let rendered = errors
        .result()
        .expect_err("duplicate type names must fail")
        .to_string();

    assert!(rendered.contains("duplicate type name 'Shared'"));
    assert!(rendered.contains("definition_name_test::Shared"));
    assert!(rendered.contains("definition_name_test_other::Shared"));
}