From dd2e4ac3ae46bbb597d8a9e11e89b91f58d593a5 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Mon, 8 Jun 2026 23:34:56 -0700 Subject: [PATCH] test rmp_serde --- Cargo.lock | 35 +++++++++++++++++++++++++++++++++++ klondike-cli/Cargo.toml | 1 + klondike-cli/src/test.rs | 16 ++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 7b5f6a4..467c99c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,6 +14,12 @@ version = "0.7.6" source = "sparse+https://git.aleshym.co/api/packages/Quaternions/cargo/" checksum = "813440870d646c57c222c1d713dc4e3ddcb2919c3801564d767d85d7bf2afee4" +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + [[package]] name = "bitflags" version = "2.11.1" @@ -152,6 +158,7 @@ dependencies = [ "card_game", "klondike", "rand", + "rmp-serde", "serde", "serde_json", ] @@ -180,6 +187,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "prettyplease" version = "0.2.37" @@ -231,6 +247,25 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" +[[package]] +name = "rmp" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", +] + [[package]] name = "semver" version = "1.0.28" diff --git a/klondike-cli/Cargo.toml b/klondike-cli/Cargo.toml index 7736d8a..032e985 100644 --- a/klondike-cli/Cargo.toml +++ b/klondike-cli/Cargo.toml @@ -9,6 +9,7 @@ klondike.workspace = true rand = { version = "0.10.1", default-features = false, features = ["thread_rng"] } [dev-dependencies] +rmp-serde = "1.3.1" serde = { version = "1.0.228", default-features = false } serde_json = "1.0.149" diff --git a/klondike-cli/src/test.rs b/klondike-cli/src/test.rs index 196c31d..25b6617 100644 --- a/klondike-cli/src/test.rs +++ b/klondike-cli/src/test.rs @@ -30,3 +30,19 @@ fn test_json() { let serialized2 = serde_json::to_string(&round_trip_session).unwrap(); assert_eq!(serialized, serialized2); } + +#[test] +fn test_rmp() { + let mut session = Session::new_default(Klondike::with_seed(124)); + let solution_result = session.solve(); + if let Ok(Some(solution)) = solution_result { + for snapshot in solution.clean_solution() { + session.process_instruction(snapshot.instruction().clone()); + } + } + let serialized = rmp_serde::to_vec(&session).unwrap(); + println!("serialized.len() = {}", serialized.len()); + let round_trip_session: Session = rmp_serde::from_slice(&serialized).unwrap(); + let serialized2 = rmp_serde::to_vec(&round_trip_session).unwrap(); + assert_eq!(serialized, serialized2); +}