1pub mod ini;
2
3#[cfg(test)]
4mod tests {
5 use std::collections::HashMap;
6 use std::path::Path;
7 use std::fs::remove_file;
8
9 use crate::ini::INI;
10
11 #[test]
12 fn load() {
13 let mut file: INI = INI::new();
14 file.load("test/normal.ini", None).unwrap();
15
16 assert_eq!(file.data.keys().len(), 4);
17 }
18
19 #[test]
20 fn access() {
21 let mut file: INI = INI::new();
22 file.load("test/normal.ini", None).unwrap();
23
24 let block: &Vec<String> = file.data.get(&"simple".to_string()).unwrap();
25
26 assert_eq!(block.first(), Some(&"basic stuff".to_string()));
27 }
28
29 #[test]
30 fn kvp() {
31 let mut ini: INI = INI::new();
32 ini.load("test/normal.ini", None).unwrap();
33
34 let chosen_key: String = String::from("dict_test");
35 let mut dict: HashMap<String, String> = ini.get_kvp(&chosen_key, None);
36
37 assert_eq!(dict.keys().len(), 4);
38
39 for (k, v) in dict.iter() {
40 assert!(k.len() > 0);
41 assert!(v.len() > 0);
42 }
43
44 assert_eq!(dict.get(&"key1".to_string()), Some(&"val1".to_string()));
45
46 dict.insert("stuff".to_string(), "things".to_string());
47
48 ini.set_kvp(&chosen_key, dict, None);
49
50 let new_dict: HashMap<String, String> = ini.get_kvp(&chosen_key, None);
51
52 assert_eq!(new_dict.get(&"stuff".to_string()), Some(&"things".to_string()));
53 }
54
55 #[test]
56 fn save() {
57 let mut file: INI = INI::new();
58 file.load("test/normal.ini", None).unwrap();
59
60 file.save("test/saved.ini");
61
62 assert!(Path::new("test/saved.ini").exists());
63
64 remove_file("test/saved.ini").unwrap();
65 }
66
67 #[test]
68 fn bad_title() {
69 let mut file: INI = INI::new();
70 file.load("test/bad_title.ini", None).unwrap();
71
72 assert!(!file.data.contains_key(&"Bad Title".to_string()));
73 }
74
75 #[test]
76 fn missing_end() {
77 let mut file: INI = INI::new();
78 match file.load("test/missing_end.ini", None) {
79 Ok(()) => panic!("Internal filters did not catch the last bracket"),
80 Err(_) => (),
81 }
82 }
83
84 #[test]
85 fn setter_getter() {
86 let mut ini: INI = INI::new();
87 ini.load("test/normal.ini", None).unwrap();
88
89 let key = String::from("dict_test");
90 let mut block = ini.get(&key).unwrap();
91
92 block.push(String::from("added_key = new"));
93
94 ini.set(&key, block);
95
96 ini.save("new.ini");
97
98 let mut ini2: INI = INI::new();
99 ini2.load("new.ini", None).unwrap();
100
101 let mut block2 = ini.get(&key).unwrap();
102
103 assert!(block2.last().unwrap().starts_with("added_key = new"));
104
105 remove_file("new.ini");
106 }
107}