1 #![cfg(feature = "toml")]
2 
3 use config::{Config, File, FileFormat, Map};
4 
make() -> Config5 fn make() -> Config {
6     let mut c = Config::default();
7     c.merge(File::new("tests/Settings", FileFormat::Toml))
8         .unwrap();
9 
10     c.merge(File::new("tests/Settings-production", FileFormat::Toml))
11         .unwrap();
12 
13     c
14 }
15 
16 #[test]
test_merge()17 fn test_merge() {
18     let c = make();
19 
20     assert_eq!(c.get("debug").ok(), Some(false));
21     assert_eq!(c.get("production").ok(), Some(true));
22     assert_eq!(c.get("place.rating").ok(), Some(4.9));
23 
24     if cfg!(feature = "preserve_order") {
25         let m: Map<String, String> = c.get("place.creator").unwrap();
26         assert_eq!(
27             m.into_iter().collect::<Vec<(String, String)>>(),
28             vec![
29                 ("name".to_string(), "Somebody New".to_string()),
30                 ("username".to_string(), "jsmith".to_string()),
31                 ("email".to_string(), "jsmith@localhost".to_string()),
32             ]
33         );
34     } else {
35         assert_eq!(
36             c.get("place.creator.name").ok(),
37             Some("Somebody New".to_string())
38         );
39     }
40 }
41 
42 #[test]
test_merge_whole_config()43 fn test_merge_whole_config() {
44     let mut c1 = Config::default();
45     let mut c2 = Config::default();
46 
47     c1.set("x", 10).unwrap();
48     c2.set("y", 25).unwrap();
49 
50     assert_eq!(c1.get("x").ok(), Some(10));
51     assert_eq!(c2.get::<()>("x").ok(), None);
52 
53     assert_eq!(c2.get("y").ok(), Some(25));
54     assert_eq!(c1.get::<()>("y").ok(), None);
55 
56     c1.merge(c2).unwrap();
57 
58     assert_eq!(c1.get("x").ok(), Some(10));
59     assert_eq!(c1.get("y").ok(), Some(25));
60 }
61