extern crate license_exprs;
use license_exprs::validate_license_expr;
macro_rules! assert_licenses_ok {
($($license:expr),+ $(,)+) => {{
$(assert!(validate_license_expr($license).is_ok());)+
}}
}
macro_rules! assert_licenses_err {
($($license:expr),+ $(,)+) => {{
$(assert!(validate_license_expr($license).is_err());)+
}}
}
#[test]
fn single_license() {
assert_licenses_ok! {
"MIT",
"MIT ",
" MIT",
" MIT ",
" MIT ",
"AGPL-1.0+",
"BlueOak-1.0.0",
"Parity-6.0.0",
}
}
#[test]
fn compound_license() {
assert_licenses_ok! {
"GPL-3.0+ WITH Classpath-exception-2.0 OR MIT AND AAL",
"MIT AND Apache-2.0",
"MIT OR Apache-2.0",
"GPL-3.0+ WITH Classpath-exception-2.0",
"MIT AND Apache-2.0",
}
}
#[test]
fn fails_invalid_license() {
assert_licenses_err! {
"asdfghjkl",
"MIT AND qwerty",
}
}
#[test]
fn fails_incorrect_structure() {
assert_licenses_err! {
"()",
"(MIT",
"MIT)",
"MIT Apache-2.0",
"MIT and Apache-2.0",
"MIT or Apache-2.0",
"GPL-3.0+ with Classpath-exception-2.0",
"MIT (MIT AND MIT)",
"(MIT AND MIT) MIT",
"and Apache-2.0",
"(MIT and Apache-2.0 and )",
"MIT xor Apache-2.0",
"WITH",
"MIT OR WITH",
"MIT AND Classpath-exception-2.0",
"Classpath-exception-2.0 WITH MIT",
"Classpath-exception-2.0",
"AGPL-1.0 +",
}
}