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