Skip to content

Commit e03e253

Browse files
committed
Use property tests instead
1 parent 5f84ac3 commit e03e253

File tree

3 files changed

+94
-13
lines changed

3 files changed

+94
-13
lines changed

Cargo.lock

Lines changed: 67 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/std/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,8 @@ chrono = { version = "0.4", default-features = false, features = [
8787
crc32fast = "1.3.2"
8888
hex-literal = "0.4.1"
8989
paste = "1.0.15"
90+
proptest = { version = "1.5.0", default-features = false, features = [
91+
"attr-macro",
92+
"std",
93+
] }
9094
serde_json = "1.0.81"

packages/std/src/serde.rs

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ where
7171
mod tests {
7272
use super::*;
7373
use core::num::{
74-
NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroU16, NonZeroU32, NonZeroU64,
75-
NonZeroU8,
74+
NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroU128, NonZeroU16,
75+
NonZeroU32, NonZeroU64, NonZeroU8,
7676
};
77+
use proptest::{prop_assert_eq, property_test};
7778
use serde::Deserialize;
7879

7980
use crate::msgpack::{from_msgpack, to_msgpack_vec};
@@ -228,23 +229,30 @@ mod tests {
228229

229230
(unsigned $ty:ty) => {
230231
::paste::paste! {
231-
#[test]
232-
fn [<test_ $ty:snake:lower _encoding>]() {
233-
let one = $ty::new(1).unwrap();
232+
#[property_test]
233+
fn [<test_ $ty:snake:lower _encoding>](input: $ty) {
234+
let primitive = input.get();
234235

235-
let serialized = to_json_string(&one).unwrap();
236-
assert_eq!(serialized, "1");
236+
// Verify that the serialization is the same as the primitive
237+
let serialized = to_json_string(&input).unwrap();
238+
let serialized_primitive = to_json_string(&primitive).unwrap();
239+
prop_assert_eq!(serialized.as_str(), serialized_primitive.as_str());
237240

238-
let deserialized: $ty = from_json("1").unwrap();
239-
assert_eq!(deserialized, one);
241+
// Verify that the serialized primitive can be deserialized
242+
let deserialized: $ty = from_json(serialized_primitive).unwrap();
243+
assert_eq!(deserialized, input);
240244

245+
// Verify that zero is not allowed
241246
assert!(from_json::<$ty>("0").is_err());
242247

243-
let serialized = to_msgpack_vec(&one).unwrap();
244-
assert_eq!(serialized, ONE_MSGPACK);
248+
// Verify that the msgpack encoding is the same as the primitive
249+
let serialized = to_msgpack_vec(&input).unwrap();
250+
let serialized_primitive = to_msgpack_vec(&primitive).unwrap();
251+
prop_assert_eq!(serialized.as_slice(), serialized_primitive.as_slice());
245252

246-
let deserialized: $ty = from_msgpack(ONE_MSGPACK).unwrap();
247-
assert_eq!(deserialized, one);
253+
// Verify that the serialized primitive can be deserialized
254+
let deserialized: $ty = from_msgpack(&serialized_primitive).unwrap();
255+
prop_assert_eq!(deserialized, input);
248256
}
249257
}
250258
};
@@ -261,10 +269,12 @@ mod tests {
261269
unsigned NonZeroU16,
262270
unsigned NonZeroU32,
263271
unsigned NonZeroU64,
272+
unsigned NonZeroU128,
264273

265274
signed NonZeroI8,
266275
signed NonZeroI16,
267276
signed NonZeroI32,
268277
signed NonZeroI64,
278+
signed NonZeroI128,
269279
}
270280
}

0 commit comments

Comments
 (0)