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