freecell 0.1.0

Game objects and rules for the solitaire card game FreeCell
Documentation
use arrayvec::ArrayVec;

use freecell::game_state_parser::parse_file;
use freecell::Suit::{Club, Diamond, Heart, Spade};
use freecell::{Card, Foundations, GameState, ACE, JACK, KING, QUEEN};

#[test]
fn test_solved() {
    let expected = GameState {
        cascades: [
            Vec::new(),
            Vec::new(),
            Vec::new(),
            Vec::new(),
            Vec::new(),
            Vec::new(),
            Vec::new(),
            Vec::new(),
        ],
        foundations: Foundations([
            vec![
                Card { suit: Club, rank: ACE },
                Card { suit: Club, rank: 2 },
                Card { suit: Club, rank: 3 },
                Card { suit: Club, rank: 4 },
                Card { suit: Club, rank: 5 },
                Card { suit: Club, rank: 6 },
                Card { suit: Club, rank: 7 },
                Card { suit: Club, rank: 8 },
                Card { suit: Club, rank: 9 },
                Card { suit: Club, rank: 10 },
                Card { suit: Club, rank: JACK },
                Card { suit: Club, rank: QUEEN },
                Card { suit: Club, rank: KING },
            ],
            vec![
                Card { suit: Spade, rank: ACE },
                Card { suit: Spade, rank: 2 },
                Card { suit: Spade, rank: 3 },
                Card { suit: Spade, rank: 4 },
                Card { suit: Spade, rank: 5 },
                Card { suit: Spade, rank: 6 },
                Card { suit: Spade, rank: 7 },
                Card { suit: Spade, rank: 8 },
                Card { suit: Spade, rank: 9 },
                Card { suit: Spade, rank: 10 },
                Card { suit: Spade, rank: JACK },
                Card { suit: Spade, rank: QUEEN },
                Card { suit: Spade, rank: KING },
            ],
            vec![
                Card { suit: Heart, rank: ACE },
                Card { suit: Heart, rank: 2 },
                Card { suit: Heart, rank: 3 },
                Card { suit: Heart, rank: 4 },
                Card { suit: Heart, rank: 5 },
                Card { suit: Heart, rank: 6 },
                Card { suit: Heart, rank: 7 },
                Card { suit: Heart, rank: 8 },
                Card { suit: Heart, rank: 9 },
                Card { suit: Heart, rank: 10 },
                Card { suit: Heart, rank: JACK },
                Card { suit: Heart, rank: QUEEN },
                Card { suit: Heart, rank: KING },
            ],
            vec![
                Card { suit: Diamond, rank: ACE },
                Card { suit: Diamond, rank: 2 },
                Card { suit: Diamond, rank: 3 },
                Card { suit: Diamond, rank: 4 },
                Card { suit: Diamond, rank: 5 },
                Card { suit: Diamond, rank: 6 },
                Card { suit: Diamond, rank: 7 },
                Card { suit: Diamond, rank: 8 },
                Card { suit: Diamond, rank: 9 },
                Card { suit: Diamond, rank: 10 },
                Card { suit: Diamond, rank: JACK },
                Card { suit: Diamond, rank: QUEEN },
                Card { suit: Diamond, rank: KING },
            ],
        ]),
        freecells: ArrayVec::new(),
    };

    let actual = parse_file("test-inputs/solved.txt").unwrap();

    assert_eq!(actual, expected);
}