From fc6d4b83671f925619e7fef9ba1dbe025bdea108 Mon Sep 17 00:00:00 2001 From: Juniper Langenstein <50025784+MomoLangenstein@users.noreply.github.com> Date: Mon, 22 Aug 2022 10:35:37 +0300 Subject: [PATCH] Test for the array-Value roundtrip failure (#404) --- tests/238_array.rs | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tests/238_array.rs diff --git a/tests/238_array.rs b/tests/238_array.rs new file mode 100644 index 00000000..8429f804 --- /dev/null +++ b/tests/238_array.rs @@ -0,0 +1,51 @@ +use ron::{ + error::{Error, Position, SpannedError}, + value::{Number, Value}, +}; + +#[test] +fn test_array() { + let array: [i32; 3] = [1, 2, 3]; + + let ser = ron::to_string(&array).unwrap(); + assert_eq!(ser, "(1,2,3)"); + + let de: [i32; 3] = ron::from_str(&ser).unwrap(); + assert_eq!(de, array); + + let value: Value = ron::from_str(&ser).unwrap(); + assert_eq!( + value, + Value::Seq(vec![ + Value::Number(Number::from(1)), + Value::Number(Number::from(2)), + Value::Number(Number::from(3)), + ]) + ); + + let ser = ron::to_string(&value).unwrap(); + assert_eq!(ser, "[1,2,3]"); + + let de: [i32; 3] = value.into_rust().unwrap(); + assert_eq!(de, array); + + // FIXME: fails and hence arrays do not roundtrip + let de: SpannedError = ron::from_str::<[i32; 3]>(&ser).unwrap_err(); + assert_eq!( + de, + SpannedError { + code: Error::ExpectedStructLike, + position: Position { line: 1, col: 1 }, + } + ); + + let value: Value = ron::from_str(&ser).unwrap(); + assert_eq!( + value, + Value::Seq(vec![ + Value::Number(Number::from(1)), + Value::Number(Number::from(2)), + Value::Number(Number::from(3)), + ]) + ); +}