From 12e57cb33d802b8a1a35f663ab983326658519b2 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Tue, 9 Jun 2026 09:57:27 -0700 Subject: [PATCH] snapshot tests --- Cargo.lock | 105 ++++++++++++++++++ klondike/Cargo.toml | 1 + .../src/snapshots/klondike__test__json.snap | 5 + .../snapshots/klondike__test__save_rmp.snap | 6 + .../klondike__test__save_rmp.snap.bin | Bin 0 -> 459 bytes klondike/src/test.rs | 7 +- 6 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 klondike/src/snapshots/klondike__test__json.snap create mode 100644 klondike/src/snapshots/klondike__test__save_rmp.snap create mode 100644 klondike/src/snapshots/klondike__test__save_rmp.snap.bin diff --git a/Cargo.lock b/Cargo.lock index f9e3990..ffa87bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,6 +52,17 @@ dependencies = [ "rand_core", ] +[[package]] +name = "console" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" +dependencies = [ + "encode_unicode", + "libc", + "windows-sys", +] + [[package]] name = "cpufeatures" version = "0.3.0" @@ -61,12 +72,34 @@ dependencies = [ "libc", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "equivalent" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + [[package]] name = "foldhash" version = "0.1.5" @@ -126,6 +159,18 @@ dependencies = [ "serde_core", ] +[[package]] +name = "insta" +version = "1.47.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4a6248eb93a4401ed2f37dfe8ea592d3cf05b7cf4f8efa867b6895af7e094e" +dependencies = [ + "console", + "once_cell", + "similar", + "tempfile", +] + [[package]] name = "itoa" version = "1.0.18" @@ -137,6 +182,7 @@ name = "klondike" version = "0.3.0" dependencies = [ "card_game", + "insta", "rand", "rmp-serde", "serde", @@ -174,6 +220,12 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + [[package]] name = "log" version = "0.4.29" @@ -195,6 +247,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + [[package]] name = "prettyplease" version = "0.2.37" @@ -265,6 +323,19 @@ dependencies = [ "serde", ] +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + [[package]] name = "semver" version = "1.0.28" @@ -313,6 +384,12 @@ dependencies = [ "zmij", ] +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" + [[package]] name = "syn" version = "2.0.117" @@ -324,6 +401,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix", + "windows-sys", +] + [[package]] name = "unicode-ident" version = "1.0.24" @@ -388,6 +478,21 @@ dependencies = [ "semver", ] +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "wit-bindgen" version = "0.51.0" diff --git a/klondike/Cargo.toml b/klondike/Cargo.toml index ff4927d..bdaec6b 100644 --- a/klondike/Cargo.toml +++ b/klondike/Cargo.toml @@ -10,6 +10,7 @@ serde = { version = "1.0.228", default-features = false, optional = true } serde_derive = { version = "1.0.228", default-features = false, optional = true } [dev-dependencies] +insta = "1.47.2" rmp-serde = "1.3.1" serde = { version = "1.0.228", default-features = false } serde_json = "1.0.149" diff --git a/klondike/src/snapshots/klondike__test__json.snap b/klondike/src/snapshots/klondike__test__json.snap new file mode 100644 index 0000000..5014cb4 --- /dev/null +++ b/klondike/src/snapshots/klondike__test__json.snap @@ -0,0 +1,5 @@ +--- +source: klondike/src/test.rs +expression: serialized +--- +{"config":{"inner":{"draw_stock":"DrawOne","move_from_foundation":"Allowed","scoring":{"move_to_foundation":10,"flip_up_bonus":5,"move_to_tableau":5,"move_from_foundation":-15,"recycle":0}},"undo_penalty":-15,"solve_moves_budget":100000,"solve_states_budget":100000},"state":{"stock":{"face_down":[52,51,21,59,36,45,49,50,22,3,58,39,41,61,13,57,34,56,28,1,19,12,17,5],"face_up":[]},"foundations":[[],[],[],[]],"tableau1":{"face_down":[],"face_up":[40]},"tableau2":{"face_down":[9],"face_up":[4]},"tableau3":{"face_down":[35,8],"face_up":[60]},"tableau4":{"face_down":[11,27,44],"face_up":[25]},"tableau5":{"face_down":[6,7,23,18],"face_up":[29]},"tableau6":{"face_down":[2,55,10,42,24],"face_up":[54]},"tableau7":{"face_down":[26,43,38,53,37,33],"face_up":[20]}},"history":[336,100,720,619,606,6,720,19,16,388,497,580,388,720,139,720,19,720,17,31,720,720,720,7,720,720,523,458,720,720,720,720,720,720,720,720,43,43,720,720,720,139,720,19,720,43,720,43,720,720,720,720,720,720,720,720,720,623,619,720,720,720,720,720,720,720,720,720,720,693,281,333,253,209,113,87,720,720,720,720,720,720,720,720,75,223,619,533,74,2,720,116,331,279,279,305,305,29,25,24,12,37,25,222,24,42,126,471,720,720,720,362,292,331,253,720,19,720,183,151,12,67,336,61,93,235,720,7,2,0,7,38,26,14,27,15,26,36,0,7,3,6,18,43,36,24,12,0,1,19,38,26,39,27,15,38,26,36]} diff --git a/klondike/src/snapshots/klondike__test__save_rmp.snap b/klondike/src/snapshots/klondike__test__save_rmp.snap new file mode 100644 index 0000000..a7ace5b --- /dev/null +++ b/klondike/src/snapshots/klondike__test__save_rmp.snap @@ -0,0 +1,6 @@ +--- +source: klondike/src/test.rs +expression: serialized +extension: bin +snapshot_kind: binary +--- diff --git a/klondike/src/snapshots/klondike__test__save_rmp.snap.bin b/klondike/src/snapshots/klondike__test__save_rmp.snap.bin new file mode 100644 index 0000000000000000000000000000000000000000..0de4f97393e687c2c7b8c2bd48b3da0aefd99b07 GIT binary patch literal 459 zcmbO{W%6>DqQr9lywv56IXU^|sVP&rSXn3c6WH3V>2u&oWA$ zW%NDs_sqq@a8xOTM(;EC!A6OCF#(m7oMrSr%P0;;hG!WKWhEteR3*>clhCR=%Xl4O z24mJ)MirpiGk<|%AYY%^er7t4GccHJW6!(>^4Xaf*wv)?r1_;(7}%NFgtS#8co-Ok M)uhy=`PHOU0FGL`p8x;= literal 0 HcmV?d00001 diff --git a/klondike/src/test.rs b/klondike/src/test.rs index 9550cf2..ed8168f 100644 --- a/klondike/src/test.rs +++ b/klondike/src/test.rs @@ -1,5 +1,5 @@ -use card_game::Session; use crate::Klondike; +use card_game::Session; #[test] fn test_is_winnable() { @@ -16,7 +16,6 @@ fn test_is_winnable() { } } - #[cfg(feature = "serde")] #[test] fn test_json() { @@ -32,6 +31,8 @@ fn test_json() { let round_trip_session: Session = serde_json::from_str(&serialized).unwrap(); let serialized2 = serde_json::to_string(&round_trip_session).unwrap(); assert_eq!(serialized, serialized2); + + insta::assert_snapshot!(serialized); } #[cfg(feature = "serde")] @@ -49,4 +50,6 @@ fn test_rmp() { 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); + + insta::assert_binary_snapshot!("save_rmp.bin", serialized); }