test(core,data): verify schema-v3 round-trip; pin upstream git deps
- solitaire_data: add game_state_v3_mid_game_round_trip — first test to exercise the schema-v3 instruction-replay path with a real mid-game state (draws + card move + undo); GameState::PartialEq validates all pile layouts, score, move_count, undo_count, and recycle_count - solitaire_data: add save_format_v2_is_rejected — schema-version gate test, parallel to the existing v1 rejection fixture - solitaire_core: add SavedInstruction proptest (256 random cases across all three instruction variants) and four boundary unit tests for out-of-range Tableau/Foundation/SkipCards values - solitaire_core: document pile() KlondikePile::Stock → waste mapping - solitaire_core: document replay_config() take_from_foundation=true invariant and the re-export policy for upstream types - Cargo.toml: pin card_game + klondike git deps to rev 99b49e62 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -295,6 +295,11 @@ impl GameState {
|
||||
}
|
||||
|
||||
fn replay_config(draw_mode: DrawMode) -> KlondikeConfig {
|
||||
// Always allow foundation returns during replay, regardless of the
|
||||
// player's current `take_from_foundation` setting. A move recorded
|
||||
// when the rule was enabled must replay correctly even if the player
|
||||
// later disables it; a restrictive replay config would reject it and
|
||||
// corrupt the save.
|
||||
KlondikeAdapter::config_for(draw_mode, true)
|
||||
}
|
||||
|
||||
@@ -362,6 +367,11 @@ impl GameState {
|
||||
Self::cards_with_face(state.stock().face_up().iter().map(card_from_kl), true)
|
||||
}
|
||||
|
||||
/// Returns the cards in the requested pile.
|
||||
///
|
||||
/// **Note on `KlondikePile::Stock`:** this variant returns the face-up
|
||||
/// *waste* pile, not the face-down draw stack. Use [`Self::stock_cards`]
|
||||
/// to read the face-down draw cards.
|
||||
pub fn pile(&self, pile: KlondikePile) -> Vec<Card> {
|
||||
#[cfg(feature = "test-support")]
|
||||
if let Some(ref state) = self.test_pile_state {
|
||||
|
||||
Reference in New Issue
Block a user