mod test_helpers;
mod compilation_mode {
use crate::test_helpers::*;
use slicec::diagnostics::{Diagnostic, Error};
use test_case::test_case;
#[test_case("Slice1")]
#[test_case("Slice2")]
fn valid_compilation_modes_succeed(value: &str) {
let slice = format!("mode = {value}");
assert_parses(slice);
}
#[test]
fn invalid_compilation_modes_fail() {
let slice = "mode = Slice3";
let diagnostics = parse_for_diagnostics(slice);
let expected = Diagnostic::new(Error::InvalidCompilationMode {
mode: "Slice3".to_owned(),
});
check_diagnostics(diagnostics, [expected]);
}
#[test]
fn compilation_mode_must_appear_before_other_statements() {
let slice = "
module Test
mode = Slice2
";
let diagnostics = parse_for_diagnostics(slice);
let expected = Diagnostic::new(Error::Syntax{message: "expected one of 'doc comment', 'struct', 'exception', 'class', 'interface', 'enum', 'custom', 'typealias', 'compact', 'unchecked', '[', or '::', but found 'mode'".to_owned()});
check_diagnostics(diagnostics, [expected]);
}
}