use crate::ast::NamedTypeAnnotation;
use crate::ast::Nullability;
use crate::ast::TypeAnnotation;
use crate::ast::VariableDefinition;
use crate::ast::tests::ast_test_utils::make_byte_span;
use crate::ast::tests::ast_test_utils::make_name;
#[test]
fn variable_definition_source_slice() {
let source = "$id: ID!";
let vd = VariableDefinition {
default_value: None,
description: None,
directives: vec![],
span: make_byte_span(0, 8),
syntax: None,
var_type: TypeAnnotation::Named(
NamedTypeAnnotation {
name: make_name("ID", 5, 7),
nullability: Nullability::NonNull {
syntax: None,
},
span: make_byte_span(5, 8),
},
),
variable: make_name("id", 1, 3),
};
assert_eq!(vd.variable.value, "id");
let mut sink = String::new();
vd.append_source(&mut sink, Some(source));
assert_eq!(sink, source);
}
#[test]
fn variable_definition_nullable() {
let source = "$name: String";
let vd = VariableDefinition {
default_value: None,
description: None,
directives: vec![],
span: make_byte_span(0, 13),
syntax: None,
var_type: TypeAnnotation::Named(
NamedTypeAnnotation {
name: make_name("String", 7, 13),
nullability: Nullability::Nullable,
span: make_byte_span(7, 13),
},
),
variable: make_name("name", 1, 5),
};
assert_eq!(vd.variable.value, "name");
let mut sink = String::new();
vd.append_source(&mut sink, Some(source));
assert_eq!(sink, source);
}