blob: 287c98fe7ebe64a86b84e4ee1ebe5ad75d7563a2 [file] [log] [blame]
use crate::config::native_libs::{NativeLibParts, split_native_lib_value};
#[test]
fn split() {
// This is a unit test for some implementation details, so consider deleting
// it if it gets in the way.
use NativeLibParts as P;
let examples = &[
("", P { kind: None, modifiers: None, name: "", new_name: None }),
("foo", P { kind: None, modifiers: None, name: "foo", new_name: None }),
("foo:", P { kind: None, modifiers: None, name: "foo", new_name: Some("") }),
("foo:bar", P { kind: None, modifiers: None, name: "foo", new_name: Some("bar") }),
(":bar", P { kind: None, modifiers: None, name: "", new_name: Some("bar") }),
("kind=foo", P { kind: Some("kind"), modifiers: None, name: "foo", new_name: None }),
(":mods=foo", P { kind: Some(""), modifiers: Some("mods"), name: "foo", new_name: None }),
(
":mods=:bar",
P { kind: Some(""), modifiers: Some("mods"), name: "", new_name: Some("bar") },
),
(
"kind=foo:bar",
P { kind: Some("kind"), modifiers: None, name: "foo", new_name: Some("bar") },
),
(
"kind:mods=foo",
P { kind: Some("kind"), modifiers: Some("mods"), name: "foo", new_name: None },
),
(
"kind:mods=foo:bar",
P { kind: Some("kind"), modifiers: Some("mods"), name: "foo", new_name: Some("bar") },
),
("::==::", P { kind: Some(""), modifiers: Some(":"), name: "=", new_name: Some(":") }),
("==::==", P { kind: Some(""), modifiers: None, name: "=", new_name: Some(":==") }),
];
for &(value, ref expected) in examples {
println!("{value:?}");
let actual = split_native_lib_value(value);
assert_eq!(&actual, expected);
}
}