summary refs log tree commit diff
path: root/compiler/rustc_session/src/config/native_libs/tests.rs
blob: 3bcab93ef4b8f3e0a04105219fa68d990a7ca01b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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);
    }
}