summaryrefslogtreecommitdiff
path: root/src/parameter.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-07 16:09:21 +0100
committertroido <troido@protonmail.com>2020-02-07 16:09:21 +0100
commit2cbca1116f71fadae48db1809de13f5fd8c4f659 (patch)
treeb609b7fc4edd750e549e88e0a3fdaf3f3d461cd3 /src/parameter.rs
parent3e2a991c0e3133428d490399a04822b973c1d99d (diff)
testing Parameter::guess_from_json()
Diffstat (limited to 'src/parameter.rs')
-rw-r--r--src/parameter.rs47
1 files changed, 45 insertions, 2 deletions
diff --git a/src/parameter.rs b/src/parameter.rs
index 4b40c10..8e45b9c 100644
--- a/src/parameter.rs
+++ b/src/parameter.rs
@@ -10,7 +10,11 @@ pub enum Parameter {
}
impl Parameter {
-
+
+ pub fn string(string: &str) -> Self {
+ Self::String(string.to_string())
+ }
+
pub fn from_typed_json(typ: ParameterType, val: &Value) -> Option<Parameter>{
match typ {
ParameterType::String => Some(Self::String(val.as_str()?.to_string())),
@@ -36,9 +40,10 @@ impl Parameter {
} else if val.is_f64() {
ParameterType::Float
} else {
+ println!("{:?}", val);
return None
};
- Self::from_typed_json(typ, val.get(1)?)
+ Self::from_typed_json(typ, val)
}
pub fn as_str(&self) -> Option<&str> {
@@ -89,3 +94,41 @@ impl ParameterType {
}
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use serde_json::json;
+
+ macro_rules! gfj { // guess from json
+ ($j:expr) => {Parameter::guess_from_json(&json!($j)).unwrap()}
+ }
+
+ #[test]
+ fn can_guess_json() {
+ Parameter::guess_from_json(&json!(3)).unwrap();
+ }
+
+ #[test]
+ fn guess_json() {
+ assert_eq!(gfj!("charles"), Parameter::string("charles"));
+ assert_eq!(gfj!("1"), Parameter::string("1"));
+ assert_eq!(gfj!(""), Parameter::string(""));
+ assert_eq!(gfj!(3), Parameter::Int(3));
+ assert_eq!(gfj!(-3), Parameter::Int(-3));
+ assert_eq!(gfj!(0), Parameter::Int(0));
+ assert_eq!(gfj!(-0), Parameter::Int(0));
+ assert_eq!(gfj!(3.5), Parameter::Float(3.5));
+ assert_eq!(gfj!(3.0), Parameter::Float(3.0));
+ assert_eq!(gfj!(-3.0), Parameter::Float(-3.0));
+ assert_eq!(gfj!(0.0), Parameter::Float(0.0));
+ assert_eq!(gfj!(-0.0), Parameter::Float(0.0));
+ }
+
+ #[test]
+ fn guess_json_none() {
+ assert!(Parameter::guess_from_json(&json!([2, 5])).is_none());
+ assert!(Parameter::guess_from_json(&json!(true)).is_none());
+ assert!(Parameter::guess_from_json(&json!({"hello": "world"})).is_none());
+ }
+}