use super::FieldResolver;
use std::collections::{HashMap, HashSet};
fn resolver_with_optional(field: &str) -> FieldResolver {
let optional: HashSet<String> = [field.to_string()].into_iter().collect();
FieldResolver::new(
&HashMap::new(),
&optional,
&HashSet::new(),
&HashSet::new(),
&HashSet::new(),
)
}
#[test]
fn indexing_an_optional_collection_emits_the_same_null_forgiving_operator_as_reading_its_count() {
let resolver = resolver_with_optional("metadata.headings");
let count = resolver.accessor("metadata.headings.length", "csharp", "result");
let indexed = resolver.accessor("metadata.headings[0].level", "csharp", "result");
assert_eq!(count, "result.Metadata.Headings!.Count");
assert_eq!(
indexed, "result.Metadata.Headings![0].Level",
"indexing dereferences the nullable collection just as `.Count` does"
);
}
#[test]
fn indexing_a_non_optional_collection_emits_no_null_forgiving_operator() {
let resolver = FieldResolver::new(
&HashMap::new(),
&HashSet::new(),
&HashSet::new(),
&HashSet::new(),
&HashSet::new(),
);
assert_eq!(
resolver.accessor("metadata.headings[0].level", "csharp", "result"),
"result.Metadata.Headings[0].Level"
);
}