mod fixture;
use std::path::Path;
use syntax::registry::{self, Entry, Known};
#[test]
fn a_registered_language_answers_like_a_seeded_one() {
assert!(registry::of_tag("gleam").is_none());
assert!(registry::of_path(Path::new("main.gleam")).is_none());
registry::register(Entry {
name: "gleam",
aliases: &["gleam"],
files: &["gleam"],
lang: None,
});
assert_eq!(registry::of_tag("gleam"), Some(Known::Named("gleam")));
assert_eq!(
registry::of_path(Path::new("src/main.gleam")),
Some(Known::Named("gleam"))
);
}
#[test]
fn registering_a_held_name_replaces_rather_than_shadows() {
registry::register(Entry {
name: "svelte",
aliases: &["svelte", "svelte5"],
files: &["svelte"],
lang: None,
});
assert_eq!(registry::of_tag("svelte5"), Some(Known::Named("svelte")));
assert_eq!(
registry::names().iter().filter(|n| **n == "svelte").count(),
1
);
}
#[test]
fn a_registration_carrying_a_grammar_is_ready() {
assert_eq!(registry::of_tag("css"), Some(Known::Named("css")));
fixture::install();
let known = registry::of_tag("css").expect("css was registered");
assert_eq!(known, Known::Ready(&fixture::CSS));
assert!(known.lang().is_some());
assert_eq!(registry::ready(), vec!["css", "html"]);
}
#[test]
fn the_seeded_rows_survive_a_registration() {
let before = registry::names().len();
registry::register(Entry {
name: "gleam",
aliases: &["gleam"],
files: &["gleam"],
lang: None,
});
assert_eq!(registry::names().len(), before + 1);
assert_eq!(registry::of_tag("rs").map(Known::name), Some("rust"));
assert_eq!(registry::of_tag("svelte"), Some(Known::Named("svelte")));
assert_eq!(
registry::of_path(Path::new("main.gleam")),
Some(Known::Named("gleam"))
);
}