Salut,
Pour ceux qui s'en souviennent, j'ai écrit une petite librairie pour calculer les points d'une main de cribbage. J'aimerais utiliser QuickCheck pour faire des vérifications, mais j'ai des petits ennuis dû en grande partie à ma "newbieness".
Pour commencer, voici mes déclarations de types:
Maintenant, voici mes déclarations d'instances d'Arbitrary:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 data Suit = Clubs | Diamond | Heart | Spade deriving (Show, Eq) data Rank = Ace | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten | Jack | Queen | King deriving (Show, Eq, Enum) type Card = (Rank, Suit) type Hand = [Card] type Starter = Maybe Card
Première chose, si vous voyez des problèmes avec ces déclarations, dites-le moi. Ces déclarations semble fonctionner, car j'ai pu écrire quelques propriétés et les exécuter. J'aimerais avoir un peu plus de contrôle sur la distribution des cartes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 newtype CribbageHand = CribbageHand Hand deriving (Show) instance Arbitrary Suit where arbitrary = do suit <- oneof $ map return [Clubs, Diamond, Heart, Spade] return suit instance Arbitrary Rank where arbitrary = do n <- choose (0, 12) return (toEnum n) instance Arbitrary CribbageHand where arbitrary = do cards <- vector 5::Gen [Card] return $ CribbageHand cards
- Je voudrais pouvoir choisir que des cartes différentes
- Pour tester la flush, j'aimerais pouvoir choisir la couleur des cartes
- Pour tester le point avec le valet, j'aimerais pouvoir m'assurer qu'il y a un valet dans le jeu
- Etc.
Si vous pouviez me donner des indications sur comment arriver à ces buts, j'apprécierais énormément.
Merci.
Partager