3 Commits

Author SHA1 Message Date
Quaternions 6b68b12ea9 round trip 2026-06-08 23:23:12 -07:00
Quaternions 206361b085 smoke test 2026-06-08 23:18:21 -07:00
Quaternions ea7e122404 write bound as explicitly deserialize 2026-06-08 23:18:21 -07:00
4 changed files with 26 additions and 4 deletions
Generated
+4 -2
View File
@@ -152,6 +152,8 @@ dependencies = [
"card_game",
"klondike",
"rand",
"serde",
"serde_json",
]
[[package]]
@@ -266,9 +268,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.149"
version = "1.0.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
dependencies = [
"itoa",
"memchr",
+2 -2
View File
@@ -656,11 +656,11 @@ where
#[cfg_attr(
feature = "serde",
derive(serde_derive::Deserialize),
serde(bound = "
serde(bound(deserialize = "
G: serde::Deserialize<'de>,
SessionConfig<G::Config>: serde::Deserialize<'de>,
Vec<G::Instruction>: serde::Deserialize<'de>,
")
"))
)]
struct SerializedSession<G: Game> {
config: SessionConfig<G::Config>,
+4
View File
@@ -8,5 +8,9 @@ card_game.workspace = true
klondike.workspace = true
rand = { version = "0.10.1", default-features = false, features = ["thread_rng"] }
[dev-dependencies]
serde = { version = "1.0.228", default-features = false }
serde_json = "1.0.150"
[lints]
workspace = true
+16
View File
@@ -14,3 +14,19 @@ fn test_is_winnable() {
println!("Game is not winnable");
}
}
#[test]
fn test_serde() {
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 = serde_json::to_string(&session).unwrap();
println!("serialized = {serialized}");
let round_trip_session: Session<Klondike> = serde_json::from_str(&serialized).unwrap();
let serialized2 = serde_json::to_string(&round_trip_session).unwrap();
assert_eq!(serialized, serialized2);
}