馃 The Definitive Gemini Protocol Toolkit
gemini
gemini-protocol
gemtext
parser
zero-dependency
toolkit
ast
converter
html
markdown
cli
networking
1#[cfg(test)]
2mod test {
3 use germ::meta::Meta;
4
5 #[test]
6 fn construct_meta_with_mime() {
7 let mut meta = Meta::new();
8
9 *meta.mime_mut() = "text/gemini".to_string();
10
11 assert_eq!(meta.to_string(), "text/gemini");
12 }
13
14 #[test]
15 fn construct_meta_with_mime_and_parameters() {
16 let mut meta = Meta::new();
17 let mut parameters = std::collections::HashMap::new();
18
19 parameters.insert("hi".to_string(), "2".to_string());
20 parameters.insert("hi2".to_string(), "string=2".to_string());
21
22 *meta.mime_mut() = "text/gemini".to_string();
23 *meta.parameters_mut() = parameters;
24
25 assert_eq!(meta.to_string(), "text/gemini; hi=2; hi2=string=2");
26 }
27
28 #[test]
29 fn meta_to_string_without_parameters() {
30 let original_string = "text/gemini";
31
32 assert_eq!(Meta::from_string(original_string).to_string(), original_string);
33 }
34
35 #[test]
36 fn meta_to_string_with_parameters() {
37 let original_string = "text/gemini; hi=2; hi2=string=2";
38
39 assert_eq!(Meta::from_string(original_string).to_string(), original_string);
40 }
41
42 #[test]
43 fn meta_to_mime_without_parameters() {
44 let meta = Meta::from_string("text/gemini");
45
46 assert_eq!(meta.mime(), "text/gemini");
47 assert_eq!(meta.parameters().len(), 0);
48 }
49
50 #[test]
51 fn meta_to_map_mime() {
52 assert_eq!(
53 Meta::from_string("text/gemini; hi=2; hi2=string=2").mime(),
54 "text/gemini",
55 );
56 }
57
58 #[test]
59 fn meta_to_map_with_parameters() {
60 assert_eq!(
61 Meta::from_string("text/gemini; hi=2; hi2=string=2")
62 .parameters()
63 .get("hi2"),
64 Some(&"string=2".to_string()),
65 );
66 }
67
68 #[test]
69 fn meta_to_map_length() {
70 assert_eq!(
71 Meta::from_string("text/gemini; hi=2; hi2=string=2").parameters().len(),
72 2,
73 );
74 }
75
76 #[test]
77 fn meta_handles_malformed_parameters() {
78 let meta =
79 Meta::from_string("text/gemini; valid=value; malformed; another=test");
80
81 assert_eq!(meta.mime(), "text/gemini");
82 assert_eq!(meta.parameters().len(), 2);
83 assert_eq!(meta.parameters().get("valid"), Some(&"value".to_string()));
84 assert_eq!(meta.parameters().get("another"), Some(&"test".to_string()));
85 assert_eq!(meta.parameters().get("malformed"), None);
86 }
87}