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