summaryrefslogtreecommitdiff
path: root/serde_v8/tests/de.rs
diff options
context:
space:
mode:
Diffstat (limited to 'serde_v8/tests/de.rs')
-rw-r--r--serde_v8/tests/de.rs57
1 files changed, 55 insertions, 2 deletions
diff --git a/serde_v8/tests/de.rs b/serde_v8/tests/de.rs
index 2df93ae7a..785de6374 100644
--- a/serde_v8/tests/de.rs
+++ b/serde_v8/tests/de.rs
@@ -12,6 +12,22 @@ struct MathOp {
pub operator: Option<String>,
}
+#[derive(Debug, PartialEq, Deserialize)]
+enum EnumUnit {
+ A,
+ B,
+ C,
+}
+
+#[derive(Debug, PartialEq, Deserialize)]
+enum EnumPayloads {
+ UInt(u64),
+ Int(i64),
+ Float(f64),
+ Point { x: i64, y: i64 },
+ Tuple(bool, i64, ()),
+}
+
fn dedo(
code: &str,
f: impl FnOnce(&mut v8::HandleScope, v8::Local<v8::Value>),
@@ -73,6 +89,43 @@ detest!(
}
);
+// Unit enums
+detest!(de_enum_unit_a, EnumUnit, "'A'", EnumUnit::A);
+detest!(de_enum_unit_b, EnumUnit, "'B'", EnumUnit::B);
+detest!(de_enum_unit_c, EnumUnit, "'C'", EnumUnit::C);
+
+// Enums with payloads (tuples & struct)
+detest!(
+ de_enum_payload_int,
+ EnumPayloads,
+ "({ Int: -123 })",
+ EnumPayloads::Int(-123)
+);
+detest!(
+ de_enum_payload_uint,
+ EnumPayloads,
+ "({ UInt: 123 })",
+ EnumPayloads::UInt(123)
+);
+detest!(
+ de_enum_payload_float,
+ EnumPayloads,
+ "({ Float: 1.23 })",
+ EnumPayloads::Float(1.23)
+);
+detest!(
+ de_enum_payload_point,
+ EnumPayloads,
+ "({ Point: { x: 1, y: 2 } })",
+ EnumPayloads::Point { x: 1, y: 2 }
+);
+detest!(
+ de_enum_payload_tuple,
+ EnumPayloads,
+ "({ Tuple: [true, 123, null ] })",
+ EnumPayloads::Tuple(true, 123, ())
+);
+
#[test]
fn de_f64() {
dedo("12345.0", |scope, v| {
@@ -114,7 +167,7 @@ detest!(
de_json_int,
serde_json::Value,
"123",
- serde_json::Value::Number(serde_json::Number::from_f64(123.0).unwrap())
+ serde_json::Value::Number(serde_json::Number::from(123))
);
detest!(
de_json_float,
@@ -156,7 +209,7 @@ detest!(
vec![
(
"a".to_string(),
- serde_json::Value::Number(serde_json::Number::from_f64(1.0).unwrap()),
+ serde_json::Value::Number(serde_json::Number::from(1)),
),
(
"b".to_string(),