summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRyan Leckey <leckey.ryan@gmail.com>2018-07-02 15:26:09 -0700
committerRyan Leckey <leckey.ryan@gmail.com>2018-07-02 15:26:09 -0700
commit0226b134bb1871fa4918b52a83073db748bc1b4d (patch)
tree49b60220b559b264e2e7d0b7f9041d9b4472310a /tests
parent5e5f1a7f000dc227070ccb4bd8e0e3c1c4948282 (diff)
parentaa427d992894f4a098bd77b20d9f10801bc916e7 (diff)
Merge branch 'feature/ini' of https://github.com/woodgear/config-rs
Diffstat (limited to 'tests')
-rw-r--r--tests/Settings-invalid.ini2
-rw-r--r--tests/Settings.ini9
-rw-r--r--tests/datetime.rs17
-rw-r--r--tests/file_ini.rs60
-rw-r--r--tests/file_json.rs2
5 files changed, 89 insertions, 1 deletions
diff --git a/tests/Settings-invalid.ini b/tests/Settings-invalid.ini
new file mode 100644
index 0000000..f2b8d9b
--- /dev/null
+++ b/tests/Settings-invalid.ini
@@ -0,0 +1,2 @@
+ok : true,
+error
diff --git a/tests/Settings.ini b/tests/Settings.ini
new file mode 100644
index 0000000..16badd4
--- /dev/null
+++ b/tests/Settings.ini
@@ -0,0 +1,9 @@
+debug = true
+production = false
+[place]
+name = Torre di Pisa
+longitude = 43.7224985
+latitude = 10.3970522
+favorite = false
+reviews = 3866
+rating = 4.5
diff --git a/tests/datetime.rs b/tests/datetime.rs
index 89a34a1..26b395d 100644
--- a/tests/datetime.rs
+++ b/tests/datetime.rs
@@ -38,6 +38,13 @@ fn make() -> Config {
FileFormat::Hjson,
))
.unwrap()
+ .merge(File::from_str(
+ r#"
+ ini_datetime = 2017-05-10T02:14:53Z
+ "#,
+ FileFormat::Ini,
+ ))
+ .unwrap()
.clone()
}
@@ -64,6 +71,11 @@ fn test_datetime_string() {
let date: String = s.get("hjson_datetime").unwrap();
assert_eq!(&date, "2017-05-10T02:14:53Z");
+
+ // INI
+ let date: String = s.get("ini_datetime").unwrap();
+
+ assert_eq!(&date, "2017-05-10T02:14:53Z");
}
#[test]
@@ -89,4 +101,9 @@ fn test_datetime() {
let date: DateTime<Utc> = s.get("hjson_datetime").unwrap();
assert_eq!(date, Utc.ymd(2017, 5, 10).and_hms(2, 14, 53));
+
+ // INI
+ let date: DateTime<Utc> = s.get("ini_datetime").unwrap();
+
+ assert_eq!(date, Utc.ymd(2017, 5, 10).and_hms(2, 14, 53));
}
diff --git a/tests/file_ini.rs b/tests/file_ini.rs
new file mode 100644
index 0000000..4c0030a
--- /dev/null
+++ b/tests/file_ini.rs
@@ -0,0 +1,60 @@
+extern crate config;
+extern crate serde;
+extern crate float_cmp;
+
+#[macro_use]
+extern crate serde_derive;
+
+use config::*;
+
+#[derive(Debug, Deserialize, PartialEq)]
+struct Place {
+ name: String,
+ longitude: f64,
+ latitude: f64,
+ favorite: bool,
+ reviews: u64,
+ rating: Option<f32>,
+}
+
+#[derive(Debug, Deserialize, PartialEq)]
+struct Settings {
+ debug: f64,
+ place: Place,
+}
+
+fn make() -> Config {
+ let mut c = Config::default();
+ c.merge(File::new("tests/Settings", FileFormat::Ini))
+ .unwrap();
+ c
+}
+
+#[test]
+fn test_file() {
+ let c = make();
+ let s: Settings = c.try_into().unwrap();
+ assert_eq!(s, Settings {
+ debug: 1.0,
+ place: Place {
+ name: String::from("Torre di Pisa"),
+ longitude: 43.7224985,
+ latitude: 10.3970522,
+ favorite: false,
+ reviews: 3866,
+ rating: Some(4.5),
+ },
+ });
+}
+
+#[test]
+fn test_error_parse() {
+ let mut c = Config::default();
+ let res = c.merge(File::new("tests/Settings-invalid", FileFormat::Ini));
+
+ assert!(res.is_err());
+ assert_eq!(
+ res.unwrap_err().to_string(),
+ r#"2:0 Expecting "[Some('='), Some(':')]" but found EOF. in tests/Settings-invalid.ini"#
+ );
+}
diff --git a/tests/file_json.rs b/tests/file_json.rs
index 48836d8..c27c9b0 100644
--- a/tests/file_json.rs
+++ b/tests/file_json.rs
@@ -72,4 +72,4 @@ fn test_error_parse() {
res.unwrap_err().to_string(),
"expected `:` at line 4 column 1 in tests/Settings-invalid.json".to_string()
);
-}
+} \ No newline at end of file