1 use config::{Config, File, FileFormat};
2 
3 #[test]
test_set_scalar()4 fn test_set_scalar() {
5     let mut c = Config::default();
6 
7     c.set("value", true).unwrap();
8 
9     assert_eq!(c.get("value").ok(), Some(true));
10 }
11 
12 #[cfg(feature = "toml")]
13 #[test]
test_set_scalar_default()14 fn test_set_scalar_default() {
15     let mut c = Config::default();
16 
17     c.merge(File::new("tests/Settings", FileFormat::Toml))
18         .unwrap();
19 
20     c.set_default("debug", false).unwrap();
21     c.set_default("staging", false).unwrap();
22 
23     assert_eq!(c.get("debug").ok(), Some(true));
24     assert_eq!(c.get("staging").ok(), Some(false));
25 }
26 
27 #[cfg(feature = "toml")]
28 #[test]
test_set_scalar_path()29 fn test_set_scalar_path() {
30     let mut c = Config::default();
31 
32     c.set("first.second.third", true).unwrap();
33 
34     assert_eq!(c.get("first.second.third").ok(), Some(true));
35 
36     c.merge(File::new("tests/Settings", FileFormat::Toml))
37         .unwrap();
38 
39     c.set_default("place.favorite", true).unwrap();
40     c.set_default("place.blocked", true).unwrap();
41 
42     assert_eq!(c.get("place.favorite").ok(), Some(false));
43     assert_eq!(c.get("place.blocked").ok(), Some(true));
44 }
45 
46 #[cfg(feature = "toml")]
47 #[test]
test_set_arr_path()48 fn test_set_arr_path() {
49     let mut c = Config::default();
50 
51     c.set("items[0].name", "Ivan").unwrap();
52 
53     assert_eq!(c.get("items[0].name").ok(), Some("Ivan".to_string()));
54 
55     c.set("data[0].things[1].name", "foo").unwrap();
56     c.set("data[0].things[1].value", 42).unwrap();
57     c.set("data[1]", 0).unwrap();
58 
59     assert_eq!(
60         c.get("data[0].things[1].name").ok(),
61         Some("foo".to_string())
62     );
63     assert_eq!(c.get("data[0].things[1].value").ok(), Some(42));
64     assert_eq!(c.get("data[1]").ok(), Some(0));
65 
66     c.merge(File::new("tests/Settings", FileFormat::Toml))
67         .unwrap();
68 
69     c.set("items[0].name", "John").unwrap();
70 
71     assert_eq!(c.get("items[0].name").ok(), Some("John".to_string()));
72 
73     c.set("items[2]", "George").unwrap();
74 
75     assert_eq!(c.get("items[2]").ok(), Some("George".to_string()));
76 }
77 
78 #[cfg(feature = "toml")]
79 #[test]
test_set_capital()80 fn test_set_capital() {
81     let mut c = Config::default();
82 
83     c.set_default("this", false).unwrap();
84     c.set("ThAt", true).unwrap();
85     c.merge(File::from_str("{\"logLevel\": 5}", FileFormat::Json))
86         .unwrap();
87 
88     assert_eq!(c.get("this").ok(), Some(false));
89     assert_eq!(c.get("ThAt").ok(), Some(true));
90     assert_eq!(c.get("logLevel").ok(), Some(5));
91 }
92