use adze_parser_backend_core::ParserBackend;
#[test]
fn test_contract_lock_types() {
let tree_sitter = ParserBackend::TreeSitter;
let pure_rust = ParserBackend::PureRust;
let glr = ParserBackend::GLR;
let _debug = format!("{tree_sitter:?}");
let _cloned = tree_sitter;
let _copied: ParserBackend = tree_sitter;
assert_eq!(pure_rust, pure_rust);
assert_ne!(tree_sitter, glr);
assert_eq!(glr, glr);
let _display = format!("{tree_sitter}");
}
#[test]
fn test_contract_lock_methods() {
let _backend = ParserBackend::select(false);
assert!(ParserBackend::GLR.is_glr());
assert!(!ParserBackend::TreeSitter.is_glr());
assert!(!ParserBackend::PureRust.is_glr());
assert!(ParserBackend::PureRust.is_pure_rust());
assert!(ParserBackend::GLR.is_pure_rust());
assert!(!ParserBackend::TreeSitter.is_pure_rust());
let name: &'static str = ParserBackend::TreeSitter.name();
assert!(!name.is_empty());
assert_eq!(ParserBackend::TreeSitter.name(), "tree-sitter C runtime");
assert_eq!(ParserBackend::PureRust.name(), "pure-Rust LR parser");
assert_eq!(ParserBackend::GLR.name(), "pure-Rust GLR parser");
}
#[test]
fn test_contract_lock_display() {
for backend in [
ParserBackend::TreeSitter,
ParserBackend::PureRust,
ParserBackend::GLR,
] {
assert_eq!(format!("{backend}"), backend.name());
}
}