icydb_model/base/types/
lang.rs1use crate::prelude::*;
8
9#[newtype(
15 primitive = "Text",
16 item(prim = "Text", unbounded),
17 ty(validator(path = "base::validator::intl::iso::Iso639_1"))
18)]
19pub struct Code {}
20
21#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn test_code() {
31 let test_cases = [
32 ("en", true),
34 ("de", true),
35 ("D", false),
37 ("DE", false),
38 ("en-us", false),
39 ("EN-US", false),
40 ("EN-USSR", false),
41 ];
42
43 for (key, expected) in test_cases {
44 let code = Code(key.into());
45 assert!(
46 crate::validate(&code).is_ok() == expected,
47 "testing: '{}' - expected: {}, got: {}",
48 key,
49 expected,
50 crate::validate(&code).is_ok()
51 );
52 }
53 }
54}