rustini/
lib.rs

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}