Unscribe tests

rename
Pantonshire 5 years ago
parent 39ef66b77b
commit 6932fd7d95

@ -1 +0,0 @@
use serde::{Serialize, Deserialize};

@ -0,0 +1,302 @@
use enumscribe::{TryUnscribe, Unscribe};
#[test]
fn test_unscribe() {
#[derive(Unscribe, Eq, PartialEq, Debug)]
enum E0 {
V0,
#[enumscribe(str = "foo")]
V1,
V2(),
#[enumscribe(str = "BAA")]
V3(),
V4 {},
#[enumscribe(str = "BaZ")]
V5 {},
#[enumscribe(case_insensitive)]
V6,
#[enumscribe(str = "lorem", case_insensitive)]
V7,
#[enumscribe(case_insensitive)]
V8(),
#[enumscribe(str = "IPSUM", case_insensitive)]
V9(),
#[enumscribe(case_insensitive)]
V10 {},
#[enumscribe(str = "DoLoR", case_insensitive)]
V11 {},
#[enumscribe(other)]
V12(String),
}
assert_eq!(E0::unscribe("v0"), E0::V12("v0".to_owned()));
assert_eq!(E0::unscribe("V0"), E0::V0);
assert_eq!(E0::unscribe("v1"), E0::V12("v1".to_owned()));
assert_eq!(E0::unscribe("V1"), E0::V12("V1".to_owned()));
assert_eq!(E0::unscribe("v2"), E0::V12("v2".to_owned()));
assert_eq!(E0::unscribe("V2"), E0::V2());
assert_eq!(E0::unscribe("v3"), E0::V12("v3".to_owned()));
assert_eq!(E0::unscribe("V3"), E0::V12("V3".to_owned()));
assert_eq!(E0::unscribe("v4"), E0::V12("v4".to_owned()));
assert_eq!(E0::unscribe("V4"), E0::V4 {});
assert_eq!(E0::unscribe("v5"), E0::V12("v5".to_owned()));
assert_eq!(E0::unscribe("V5"), E0::V12("V5".to_owned()));
assert_eq!(E0::unscribe("v6"), E0::V6);
assert_eq!(E0::unscribe("V6"), E0::V6);
assert_eq!(E0::unscribe("v7"), E0::V12("v7".to_owned()));
assert_eq!(E0::unscribe("V7"), E0::V12("V7".to_owned()));
assert_eq!(E0::unscribe("v8"), E0::V8());
assert_eq!(E0::unscribe("V8"), E0::V8());
assert_eq!(E0::unscribe("v9"), E0::V12("v9".to_owned()));
assert_eq!(E0::unscribe("V9"), E0::V12("V9".to_owned()));
assert_eq!(E0::unscribe("v10"), E0::V10 {});
assert_eq!(E0::unscribe("V10"), E0::V10 {});
assert_eq!(E0::unscribe("v11"), E0::V12("v11".to_owned()));
assert_eq!(E0::unscribe("V11"), E0::V12("V11".to_owned()));
assert_eq!(E0::unscribe("foo"), E0::V1);
assert_eq!(E0::unscribe("FOO"), E0::V12("FOO".to_owned()));
assert_eq!(E0::unscribe("FoO"), E0::V12("FoO".to_owned()));
assert_eq!(E0::unscribe("foi"), E0::V12("foi".to_owned()));
assert_eq!(E0::unscribe("fo"), E0::V12("fo".to_owned()));
assert_eq!(E0::unscribe("ffoo"), E0::V12("ffoo".to_owned()));
assert_eq!(E0::unscribe("fooo"), E0::V12("fooo".to_owned()));
assert_eq!(E0::unscribe("baa"), E0::V12("baa".to_owned()));
assert_eq!(E0::unscribe("BAA"), E0::V3());
assert_eq!(E0::unscribe("BaA"), E0::V12("BaA".to_owned()));
assert_eq!(E0::unscribe("bar"), E0::V12("bar".to_owned()));
assert_eq!(E0::unscribe("ba"), E0::V12("ba".to_owned()));
assert_eq!(E0::unscribe("bbaa"), E0::V12("bbaa".to_owned()));
assert_eq!(E0::unscribe("baaa"), E0::V12("baaa".to_owned()));
assert_eq!(E0::unscribe("baz"), E0::V12("baz".to_owned()));
assert_eq!(E0::unscribe("BAZ"), E0::V12("BAZ".to_owned()));
assert_eq!(E0::unscribe("BaZ"), E0::V5 {});
assert_eq!(E0::unscribe("biz"), E0::V12("biz".to_owned()));
assert_eq!(E0::unscribe("az"), E0::V12("az".to_owned()));
assert_eq!(E0::unscribe("bbaz"), E0::V12("bbaz".to_owned()));
assert_eq!(E0::unscribe("bazz"), E0::V12("bazz".to_owned()));
assert_eq!(E0::unscribe("lorem"), E0::V7);
assert_eq!(E0::unscribe("LOREM"), E0::V7);
assert_eq!(E0::unscribe("LoReM"), E0::V7);
assert_eq!(E0::unscribe("loREM"), E0::V7);
assert_eq!(E0::unscribe("larem"), E0::V12("larem".to_owned()));
assert_eq!(E0::unscribe("lore"), E0::V12("lore".to_owned()));
assert_eq!(E0::unscribe("llorem"), E0::V12("llorem".to_owned()));
assert_eq!(E0::unscribe("loremm"), E0::V12("loremm".to_owned()));
assert_eq!(E0::unscribe("ipsum"), E0::V9());
assert_eq!(E0::unscribe("IPSUM"), E0::V9());
assert_eq!(E0::unscribe("IpSuM"), E0::V9());
assert_eq!(E0::unscribe("ipSUM"), E0::V9());
assert_eq!(E0::unscribe("ipdum"), E0::V12("ipdum".to_owned()));
assert_eq!(E0::unscribe("ipsu"), E0::V12("ipsu".to_owned()));
assert_eq!(E0::unscribe("iipsum"), E0::V12("iipsum".to_owned()));
assert_eq!(E0::unscribe("ipsumm"), E0::V12("ipsumm".to_owned()));
assert_eq!(E0::unscribe("dolor"), E0::V11 {});
assert_eq!(E0::unscribe("DOLOR"), E0::V11 {});
assert_eq!(E0::unscribe("DoLoR"), E0::V11 {});
assert_eq!(E0::unscribe("doLOR"), E0::V11 {});
assert_eq!(E0::unscribe("doler"), E0::V12("doler".to_owned()));
assert_eq!(E0::unscribe("dolo"), E0::V12("dolo".to_owned()));
assert_eq!(E0::unscribe("ddolor"), E0::V12("ddolor".to_owned()));
assert_eq!(E0::unscribe("dolorr"), E0::V12("dolorr".to_owned()));
assert_eq!(E0::unscribe(""), E0::V12("".to_owned()));
assert_eq!(E0::unscribe("\0"), E0::V12("\0".to_owned()));
}
#[test]
fn test_try_unscribe() {
#[derive(TryUnscribe, Eq, PartialEq, Debug)]
enum E0 {
V0,
#[enumscribe(str = "foo")]
V1,
V2(),
#[enumscribe(str = "BAA")]
V3(),
V4 {},
#[enumscribe(str = "BaZ")]
V5 {},
#[enumscribe(case_insensitive)]
V6,
#[enumscribe(str = "lorem", case_insensitive)]
V7,
#[enumscribe(case_insensitive)]
V8(),
#[enumscribe(str = "IPSUM", case_insensitive)]
V9(),
#[enumscribe(case_insensitive)]
V10 {},
#[enumscribe(str = "DoLoR", case_insensitive)]
V11 {},
}
assert_eq!(E0::try_unscribe("v0"), None);
assert_eq!(E0::try_unscribe("V0"), Some(E0::V0));
assert_eq!(E0::try_unscribe("v1"), None);
assert_eq!(E0::try_unscribe("V1"), None);
assert_eq!(E0::try_unscribe("v2"), None);
assert_eq!(E0::try_unscribe("V2"), Some(E0::V2()));
assert_eq!(E0::try_unscribe("v3"), None);
assert_eq!(E0::try_unscribe("V3"), None);
assert_eq!(E0::try_unscribe("v4"), None);
assert_eq!(E0::try_unscribe("V4"), Some(E0::V4 {}));
assert_eq!(E0::try_unscribe("v5"), None);
assert_eq!(E0::try_unscribe("V5"), None);
assert_eq!(E0::try_unscribe("v6"), Some(E0::V6));
assert_eq!(E0::try_unscribe("V6"), Some(E0::V6));
assert_eq!(E0::try_unscribe("v7"), None);
assert_eq!(E0::try_unscribe("V7"), None);
assert_eq!(E0::try_unscribe("v8"), Some(E0::V8()));
assert_eq!(E0::try_unscribe("V8"), Some(E0::V8()));
assert_eq!(E0::try_unscribe("v9"), None);
assert_eq!(E0::try_unscribe("V9"), None);
assert_eq!(E0::try_unscribe("v10"), Some(E0::V10 {}));
assert_eq!(E0::try_unscribe("V10"), Some(E0::V10 {}));
assert_eq!(E0::try_unscribe("v11"), None);
assert_eq!(E0::try_unscribe("V11"), None);
assert_eq!(E0::try_unscribe("foo"), Some(E0::V1));
assert_eq!(E0::try_unscribe("FOO"), None);
assert_eq!(E0::try_unscribe("FoO"), None);
assert_eq!(E0::try_unscribe("foi"), None);
assert_eq!(E0::try_unscribe("fo"), None);
assert_eq!(E0::try_unscribe("ffoo"), None);
assert_eq!(E0::try_unscribe("fooo"), None);
assert_eq!(E0::try_unscribe("baa"), None);
assert_eq!(E0::try_unscribe("BAA"), Some(E0::V3()));
assert_eq!(E0::try_unscribe("BaA"), None);
assert_eq!(E0::try_unscribe("bar"), None);
assert_eq!(E0::try_unscribe("ba"), None);
assert_eq!(E0::try_unscribe("bbaa"), None);
assert_eq!(E0::try_unscribe("baaa"), None);
assert_eq!(E0::try_unscribe("baz"), None);
assert_eq!(E0::try_unscribe("BAZ"), None);
assert_eq!(E0::try_unscribe("BaZ"), Some(E0::V5 {}));
assert_eq!(E0::try_unscribe("biz"), None);
assert_eq!(E0::try_unscribe("az"), None);
assert_eq!(E0::try_unscribe("bbaz"), None);
assert_eq!(E0::try_unscribe("bazz"), None);
assert_eq!(E0::try_unscribe("lorem"), Some(E0::V7));
assert_eq!(E0::try_unscribe("LOREM"), Some(E0::V7));
assert_eq!(E0::try_unscribe("LoReM"), Some(E0::V7));
assert_eq!(E0::try_unscribe("loREM"), Some(E0::V7));
assert_eq!(E0::try_unscribe("larem"), None);
assert_eq!(E0::try_unscribe("lore"), None);
assert_eq!(E0::try_unscribe("llorem"), None);
assert_eq!(E0::try_unscribe("loremm"), None);
assert_eq!(E0::try_unscribe("ipsum"), Some(E0::V9()));
assert_eq!(E0::try_unscribe("IPSUM"), Some(E0::V9()));
assert_eq!(E0::try_unscribe("IpSuM"), Some(E0::V9()));
assert_eq!(E0::try_unscribe("ipSUM"), Some(E0::V9()));
assert_eq!(E0::try_unscribe("ipdum"), None);
assert_eq!(E0::try_unscribe("ipsu"), None);
assert_eq!(E0::try_unscribe("iipsum"), None);
assert_eq!(E0::try_unscribe("ipsumm"), None);
assert_eq!(E0::try_unscribe("dolor"), Some(E0::V11 {}));
assert_eq!(E0::try_unscribe("DOLOR"), Some(E0::V11 {}));
assert_eq!(E0::try_unscribe("DoLoR"), Some(E0::V11 {}));
assert_eq!(E0::try_unscribe("doLOR"), Some(E0::V11 {}));
assert_eq!(E0::try_unscribe("doler"), None);
assert_eq!(E0::try_unscribe("dolo"), None);
assert_eq!(E0::try_unscribe("ddolor"), None);
assert_eq!(E0::try_unscribe("dolorr"), None);
assert_eq!(E0::try_unscribe(""), None);
assert_eq!(E0::try_unscribe("\0"), None);
#[derive(TryUnscribe, Eq, PartialEq, Debug)]
enum E1 {
V0,
#[enumscribe(str = "foo")]
V1,
V2(),
#[enumscribe(str = "BAA")]
V3(),
V4 {},
#[enumscribe(str = "BaZ")]
V5 {},
#[enumscribe(case_insensitive)]
V6,
#[enumscribe(str = "lorem", case_insensitive)]
V7,
#[enumscribe(case_insensitive)]
V8(),
#[enumscribe(str = "IPSUM", case_insensitive)]
V9(),
#[enumscribe(case_insensitive)]
V10 {},
#[enumscribe(str = "DoLoR", case_insensitive)]
V11 {},
#[enumscribe(other)]
V12(String),
}
assert_eq!(E1::try_unscribe("v0"), Some(E1::V12("v0".to_owned())));
assert_eq!(E1::try_unscribe("V0"), Some(E1::V0));
assert_eq!(E1::try_unscribe("v1"), Some(E1::V12("v1".to_owned())));
assert_eq!(E1::try_unscribe("V1"), Some(E1::V12("V1".to_owned())));
assert_eq!(E1::try_unscribe("v2"), Some(E1::V12("v2".to_owned())));
assert_eq!(E1::try_unscribe("V2"), Some(E1::V2()));
assert_eq!(E1::try_unscribe("v3"), Some(E1::V12("v3".to_owned())));
assert_eq!(E1::try_unscribe("V3"), Some(E1::V12("V3".to_owned())));
assert_eq!(E1::try_unscribe("v4"), Some(E1::V12("v4".to_owned())));
assert_eq!(E1::try_unscribe("V4"), Some(E1::V4 {}));
assert_eq!(E1::try_unscribe("v5"), Some(E1::V12("v5".to_owned())));
assert_eq!(E1::try_unscribe("V5"), Some(E1::V12("V5".to_owned())));
assert_eq!(E1::try_unscribe("v6"), Some(E1::V6));
assert_eq!(E1::try_unscribe("V6"), Some(E1::V6));
assert_eq!(E1::try_unscribe("v7"), Some(E1::V12("v7".to_owned())));
assert_eq!(E1::try_unscribe("V7"), Some(E1::V12("V7".to_owned())));
assert_eq!(E1::try_unscribe("v8"), Some(E1::V8()));
assert_eq!(E1::try_unscribe("V8"), Some(E1::V8()));
assert_eq!(E1::try_unscribe("v9"), Some(E1::V12("v9".to_owned())));
assert_eq!(E1::try_unscribe("V9"), Some(E1::V12("V9".to_owned())));
assert_eq!(E1::try_unscribe("v10"), Some(E1::V10 {}));
assert_eq!(E1::try_unscribe("V10"), Some(E1::V10 {}));
assert_eq!(E1::try_unscribe("v11"), Some(E1::V12("v11".to_owned())));
assert_eq!(E1::try_unscribe("V11"), Some(E1::V12("V11".to_owned())));
assert_eq!(E1::try_unscribe("foo"), Some(E1::V1));
assert_eq!(E1::try_unscribe("FOO"), Some(E1::V12("FOO".to_owned())));
assert_eq!(E1::try_unscribe("FoO"), Some(E1::V12("FoO".to_owned())));
assert_eq!(E1::try_unscribe("foi"), Some(E1::V12("foi".to_owned())));
assert_eq!(E1::try_unscribe("fo"), Some(E1::V12("fo".to_owned())));
assert_eq!(E1::try_unscribe("ffoo"), Some(E1::V12("ffoo".to_owned())));
assert_eq!(E1::try_unscribe("fooo"), Some(E1::V12("fooo".to_owned())));
assert_eq!(E1::try_unscribe("baa"), Some(E1::V12("baa".to_owned())));
assert_eq!(E1::try_unscribe("BAA"), Some(E1::V3()));
assert_eq!(E1::try_unscribe("BaA"), Some(E1::V12("BaA".to_owned())));
assert_eq!(E1::try_unscribe("bar"), Some(E1::V12("bar".to_owned())));
assert_eq!(E1::try_unscribe("ba"), Some(E1::V12("ba".to_owned())));
assert_eq!(E1::try_unscribe("bbaa"), Some(E1::V12("bbaa".to_owned())));
assert_eq!(E1::try_unscribe("baaa"), Some(E1::V12("baaa".to_owned())));
assert_eq!(E1::try_unscribe("baz"), Some(E1::V12("baz".to_owned())));
assert_eq!(E1::try_unscribe("BAZ"), Some(E1::V12("BAZ".to_owned())));
assert_eq!(E1::try_unscribe("BaZ"), Some(E1::V5 {}));
assert_eq!(E1::try_unscribe("biz"), Some(E1::V12("biz".to_owned())));
assert_eq!(E1::try_unscribe("az"), Some(E1::V12("az".to_owned())));
assert_eq!(E1::try_unscribe("bbaz"), Some(E1::V12("bbaz".to_owned())));
assert_eq!(E1::try_unscribe("bazz"), Some(E1::V12("bazz".to_owned())));
assert_eq!(E1::try_unscribe("lorem"), Some(E1::V7));
assert_eq!(E1::try_unscribe("LOREM"), Some(E1::V7));
assert_eq!(E1::try_unscribe("LoReM"), Some(E1::V7));
assert_eq!(E1::try_unscribe("loREM"), Some(E1::V7));
assert_eq!(E1::try_unscribe("larem"), Some(E1::V12("larem".to_owned())));
assert_eq!(E1::try_unscribe("lore"), Some(E1::V12("lore".to_owned())));
assert_eq!(E1::try_unscribe("llorem"), Some(E1::V12("llorem".to_owned())));
assert_eq!(E1::try_unscribe("loremm"), Some(E1::V12("loremm".to_owned())));
assert_eq!(E1::try_unscribe("ipsum"), Some(E1::V9()));
assert_eq!(E1::try_unscribe("IPSUM"), Some(E1::V9()));
assert_eq!(E1::try_unscribe("IpSuM"), Some(E1::V9()));
assert_eq!(E1::try_unscribe("ipSUM"), Some(E1::V9()));
assert_eq!(E1::try_unscribe("ipdum"), Some(E1::V12("ipdum".to_owned())));
assert_eq!(E1::try_unscribe("ipsu"), Some(E1::V12("ipsu".to_owned())));
assert_eq!(E1::try_unscribe("iipsum"), Some(E1::V12("iipsum".to_owned())));
assert_eq!(E1::try_unscribe("ipsumm"), Some(E1::V12("ipsumm".to_owned())));
assert_eq!(E1::try_unscribe("dolor"), Some(E1::V11 {}));
assert_eq!(E1::try_unscribe("DOLOR"), Some(E1::V11 {}));
assert_eq!(E1::try_unscribe("DoLoR"), Some(E1::V11 {}));
assert_eq!(E1::try_unscribe("doLOR"), Some(E1::V11 {}));
assert_eq!(E1::try_unscribe("doler"), Some(E1::V12("doler".to_owned())));
assert_eq!(E1::try_unscribe("dolo"), Some(E1::V12("dolo".to_owned())));
assert_eq!(E1::try_unscribe("ddolor"), Some(E1::V12("ddolor".to_owned())));
assert_eq!(E1::try_unscribe("dolorr"), Some(E1::V12("dolorr".to_owned())));
assert_eq!(E1::try_unscribe(""), Some(E1::V12("".to_owned())));
assert_eq!(E1::try_unscribe("\0"), Some(E1::V12("\0".to_owned())));
}
Loading…
Cancel
Save