Skip to content

Commit 080e4af

Browse files
committed
2 parents d44c1eb + 3ac90c8 commit 080e4af

File tree

10 files changed

+175
-78
lines changed

10 files changed

+175
-78
lines changed

CHANGELOG

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
* CHANGELOG
44

5+
** [[https://github.com/mpereira/tty-solitaire/releases/tag/v1.2.0][v1.2.0]] (2020-05-31)
6+
*** Bug fixes
7+
- Fixed off-by-one issue in ~game:shuffle_deck()~. [[https://github.com/mpereira/tty-solitaire/pull/35][(#35)]]
8+
- Fixed memory leaks in game and test code. [[https://github.com/mpereira/tty-solitaire/pull/35][(#35)]]
9+
- Fixed broken tests. [[https://github.com/mpereira/tty-solitaire/pull/35][(#35)]]
10+
- Fixed card drawing issue that came up due to changes in newer versions of
11+
Ncurses. ([[https://github.com/mpereira/tty-solitaire/pull/41][#41]])
12+
513
** [[https://github.com/mpereira/tty-solitaire/releases/tag/v1.1.1][v1.1.1]] (2018-11-10)
614
*** Improvements
715
- Added LICENSE.

Makefile

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
VERSION = 1.1.1
1+
VERSION = 1.2.0
22

33
CC ?= gcc
44
CFLAGS ?= -g
55
CFLAGS += -W -Wall -pedantic -ansi -std=c99 -DVERSION=\"$(VERSION)\" -fcommon
66

7-
# OS X installs ncurses with wide character support, but not as "libncurses".
7+
# The Ncurses library with wide character support is available as "lncurses"
8+
# under macOS.
89
ifeq ($(shell uname -s),Darwin)
910
LDFLAGS += -lncurses
1011
else
@@ -48,15 +49,15 @@ ttysolitaire: $(SRC_OBJECTS)
4849
$(CC) $(CFLAGS) $(SRC) -o $(EXECUTABLE) $(SRC_OBJECTS) $(LDFLAGS)
4950

5051
test: $(SRC_OBJECTS) $(TESTS_OBJECTS)
51-
@$(CC) $(CFLAGS) $(TESTS_SRC) -o $(TESTS_EXECUTABLE) $(TESTS_OBJECTS) $(SRC_OBJECTS) $(LDFLAGS)
52-
@./$(TESTS_EXECUTABLE)
52+
$(CC) $(CFLAGS) $(TESTS_SRC) -o $(TESTS_EXECUTABLE) $(TESTS_OBJECTS) $(SRC_OBJECTS) $(LDFLAGS)
53+
./$(TESTS_EXECUTABLE)
5354

5455
clean:
55-
@rm -rf $(SRC_DIR)/*.o $(TESTS_DIR)/*.o $(EXECUTABLE) $(TESTS_EXECUTABLE)
56+
rm -rf $(SRC_DIR)/*.o $(TESTS_DIR)/*.o $(EXECUTABLE) $(TESTS_EXECUTABLE)
5657

5758
install:
58-
@install -d $(DESTDIR)$(PREFIX)/bin
59-
@install -m755 $(EXECUTABLE) $(DESTDIR)$(PREFIX)/bin/$(EXECUTABLE)
59+
install -d $(DESTDIR)$(PREFIX)/bin
60+
install -m755 $(EXECUTABLE) $(DESTDIR)$(PREFIX)/bin/$(EXECUTABLE)
6061

6162
uninstall:
62-
@rm -f $(PREFIX)/bin/$(EXECUTABLE)
63+
rm -f $(PREFIX)/bin/$(EXECUTABLE)

README

Lines changed: 61 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,53 +12,94 @@
1212
- Ncurses with wide-char/UTF-8 support
1313

1414
** Install
15+
*** Using package managers
16+
**** Arch Linux
17+
#+begin_src bash
18+
pacman -S tty-solitaire
19+
#+end_src
20+
21+
**** macOS
22+
#+begin_src bash
23+
brew install tty-solitaire
24+
#+end_src
25+
26+
**** Void Linux
27+
#+begin_src bash
28+
xbps-install -S tty-solitaire
29+
#+end_src
30+
31+
**** FreeBSD
32+
#+begin_src bash
33+
pkg install tty-solitaire
34+
#+end_src
35+
36+
**** Slackware
37+
[[https://www.slackbuilds.org/repository/14.2/games/tty-solitaire/][Via Slackbuilds]].
38+
39+
**** ALT Linux
40+
#+begin_src bash
41+
apt-get install tty-solitaire
42+
#+end_src
43+
44+
We still need help making tty-solitaire available on Ubuntu, Fedora, Gentoo,
45+
and more. Please give us a hand at [[https://github.com/mpereira/tty-solitaire/issues/29][issue #29]] if you think you can help.
46+
1547
*** From source
1648
**** Install Ncurses
1749
tty-solitaire depends on Ncurses. Some platforms provide it out of the box
1850
and some don't, so you might need to install it yourself.
51+
1952
***** Ubuntu
20-
#+BEGIN_SRC bash
53+
#+begin_src bash
2154
sudo apt-get install libncurses5-dev libncursesw5-dev
22-
#+END_SRC
55+
#+end_src
56+
2357
***** macOS
2458
macOS has Ncurses with wide character support out of the box, so *there's
25-
nothing you need to do*. If you want to use other Ncurses libraries (from
59+
nothing you need to do*.
60+
61+
*If* for some reason you want to use other Ncurses libraries (from
2662
Macports, Homebrew, etc.) you are able to do it by specifying =LDLAGS= in
2763
the make invocation. See [[https://github.com/mpereira/tty-solitaire/pull/8][this pull request]] for more information.
64+
2865
**** Install tty-solitaire
29-
#+BEGIN_SRC text
30-
$ wget -O tty-solitaire-v1.1.0.tar.gz https://github.com/mpereira/tty-solitaire/archive/v1.1.0.tar.gz
31-
$ tar xvf tty-solitaire-v1.1.0.tar.gz
32-
$ cd tty-solitaire-1.1.0
33-
$ make
34-
$ sudo make install
35-
#+END_SRC
36-
*** Via package managers
37-
Check out https://github.com/mpereira/tty-solitaire/issues/29.
66+
#+begin_src bash
67+
wget -O tty-solitaire-v1.2.0.tar.gz https://github.com/mpereira/tty-solitaire/archive/v1.2.0.tar.gz
68+
tar xvf tty-solitaire-v1.2.0.tar.gz
69+
cd tty-solitaire-1.2.0
70+
make
71+
sudo make install
72+
#+end_src
3873

3974
** Play
4075
Run in your favorite shell:
41-
#+BEGIN_SRC bash
76+
77+
#+begin_src bash
4278
ttysolitaire
43-
#+END_SRC
79+
#+end_src
4480

4581
** Usage
46-
#+BEGIN_SRC text
82+
#+begin_src text
4783
usage: ttysolitaire [-v|--version] [-h|--help] [-p|--passes=NUMBER]
4884
-v, --version Show version
4985
-h, --help Show this message
5086
-p, --passes Number of passes through the deck
51-
#+END_SRC
87+
#+end_src
5288

5389
** Development
5490
*** Get the code
55-
#+BEGIN_SRC bash
91+
#+begin_src bash
5692
git clone https://github.com/mpereira/tty-solitaire.git
57-
#+END_SRC
93+
#+end_src
94+
5895
*** Run the unit tests
59-
#+BEGIN_SRC bash
96+
#+begin_src bash
6097
make test
61-
#+END_SRC
98+
#+end_src
99+
100+
*** [[https://invisible-island.net/ncurses/man/ncurses.3x.html][Ncurses documentation]]
101+
102+
*** [[https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/][Ncurses programming HOWTO]]
62103

63104
** Author
64105
[[http://murilopereira.com][Murilo Pereira]]

src/game.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,16 @@ static void shuffle_deck(struct deck *deck) {
153153
card[i] = stack_pop(&(deck->stock));
154154
}
155155
srand(time(NULL));
156-
for (int i = 0; i < NUMBER_OF_CARDS - 1; i++) {
157-
random = i + (rand() % (NUMBER_OF_CARDS) - i);
156+
for (int i = 0; i < NUMBER_OF_CARDS; i++) {
157+
random = rand() % (NUMBER_OF_CARDS);
158158
tmp = *card[i];
159159
*card[i] = (*card[random]);
160160
*card[random] = tmp;
161161
}
162162
for (int i = 0; i < NUMBER_OF_CARDS; i++) {
163163
stack_push(&(deck->stock), card[i]);
164164
}
165+
free(card);
165166
}
166167

167168
static void deal_cards(struct deck *deck) {

src/stack.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ int stack_length(struct stack *stack) {
6969
void stack_push(struct stack **stack, struct card *card) {
7070
if (card) {
7171
if (stack_empty(*stack)) {
72+
card_free((*stack)->card);
7273
(*stack)->card = card;
7374
} else {
7475
/* Allocating by hand because stack_malloc() would

tests/card_test.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ void test_card_dup() {
2525

2626
assert(card_0 != card_1);
2727
assert(cards_equal(card_0, card_1));
28+
29+
card_free(card_0);
30+
card_free(card_1);
2831
}
2932

3033
void test_card_set() {

tests/frame_test.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ void test_frame_dup() {
2525

2626
assert(frame_0 != frame_1);
2727
assert(frames_equal(frame_0, frame_1));
28+
29+
frame_free(frame_0);
30+
frame_free(frame_1);
2831
}
2932

3033
void test_frame_set() {

tests/game_test.c

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ void test_valid_move_from_waste_pile_to_foundation_stacks() {
119119

120120
stack_malloc(&waste_pile);
121121
stack_init(waste_pile);
122-
card_set(waste_pile->card, ACE, SPADES, EXPOSED, WASTE_PILE_BEGIN_Y, WASTE_PILE_BEGIN_X);
122+
card_set(waste_pile->card, TWO, SPADES, EXPOSED, WASTE_PILE_BEGIN_Y, WASTE_PILE_BEGIN_X);
123123
for (int i = 0; i < 4; i++) {
124124
stack_malloc(&foundation_stacks[i]);
125125
stack_init(foundation_stacks[i]);
@@ -129,7 +129,6 @@ void test_valid_move_from_waste_pile_to_foundation_stacks() {
129129
card_set(foundation_stacks[2]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_2_BEGIN_X);
130130
card_set(foundation_stacks[3]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_3_BEGIN_X);
131131
for (int i = 0; i < 4; i++) {
132-
// TODO: fix error here
133132
assert(valid_move(waste_pile, foundation_stacks[i]));
134133
}
135134
stack_free(waste_pile);
@@ -143,20 +142,19 @@ void test_valid_move_from_waste_pile_to_maneuvre_stacks() {
143142

144143
stack_malloc(&waste_pile);
145144
stack_init(waste_pile);
146-
card_set(waste_pile->card, ACE, SPADES, EXPOSED, WASTE_PILE_BEGIN_Y, WASTE_PILE_BEGIN_X);
145+
card_set(waste_pile->card, ACE, DIAMONDS, EXPOSED, WASTE_PILE_BEGIN_Y, WASTE_PILE_BEGIN_X);
147146
for (int i = 0; i < 7; i++) {
148147
stack_malloc(&maneuvre_stacks[i]);
149148
stack_init(maneuvre_stacks[i]);
150149
}
151-
card_set(maneuvre_stacks[0]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
152-
card_set(maneuvre_stacks[1]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
153-
card_set(maneuvre_stacks[2]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
154-
card_set(maneuvre_stacks[3]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
155-
card_set(maneuvre_stacks[4]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
156-
card_set(maneuvre_stacks[5]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
157-
card_set(maneuvre_stacks[6]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
150+
card_set(maneuvre_stacks[0]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
151+
card_set(maneuvre_stacks[1]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
152+
card_set(maneuvre_stacks[2]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
153+
card_set(maneuvre_stacks[3]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
154+
card_set(maneuvre_stacks[4]->card, TWO, CLUBS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
155+
card_set(maneuvre_stacks[5]->card, TWO, CLUBS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
156+
card_set(maneuvre_stacks[6]->card, TWO, CLUBS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
158157
for (int i = 0; i < 7; i++) {
159-
// TODO: fix error here
160158
assert(valid_move(waste_pile, maneuvre_stacks[i]));
161159
}
162160
stack_free(waste_pile);
@@ -219,15 +217,14 @@ void test_valid_move_from_foundation_stack_to_foundation_stacks() {
219217
stack_init(foundation_stacks[i]);
220218
}
221219
card_set(foundation_stacks[0]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_0_BEGIN_X);
222-
card_set(foundation_stacks[1]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_1_BEGIN_X);
223-
card_set(foundation_stacks[2]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_2_BEGIN_X);
224-
card_set(foundation_stacks[3]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_3_BEGIN_X);
220+
card_set(foundation_stacks[1]->card, TWO, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_1_BEGIN_X);
221+
card_set(foundation_stacks[2]->card, THREE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_2_BEGIN_X);
222+
card_set(foundation_stacks[3]->card, FOUR, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_3_BEGIN_X);
225223
for (int i = 0; i < 4; i++) {
226224
for (int j = 0; j < 4; j++) {
227-
if (i == j) {
225+
if (i != j + 1) {
228226
assert(!valid_move(foundation_stacks[i], foundation_stacks[j]));
229227
} else {
230-
// TODO: fix error here
231228
assert(valid_move(foundation_stacks[i], foundation_stacks[j]));
232229
}
233230
}
@@ -247,22 +244,21 @@ void test_valid_move_from_foundation_stack_to_maneuvre_stacks() {
247244
}
248245
card_set(foundation_stacks[0]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_0_BEGIN_X);
249246
card_set(foundation_stacks[1]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_1_BEGIN_X);
250-
card_set(foundation_stacks[2]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_2_BEGIN_X);
251-
card_set(foundation_stacks[3]->card, ACE, SPADES, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_3_BEGIN_X);
247+
card_set(foundation_stacks[2]->card, ACE, CLUBS, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_2_BEGIN_X);
248+
card_set(foundation_stacks[3]->card, ACE, CLUBS, EXPOSED, FOUNDATION_BEGIN_Y, FOUNDATION_3_BEGIN_X);
252249
for (int i = 0; i < 7; i++) {
253250
stack_malloc(&maneuvre_stacks[i]);
254251
stack_init(maneuvre_stacks[i]);
255252
}
256-
card_set(maneuvre_stacks[0]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
257-
card_set(maneuvre_stacks[1]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
258-
card_set(maneuvre_stacks[2]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
259-
card_set(maneuvre_stacks[3]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
260-
card_set(maneuvre_stacks[4]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
261-
card_set(maneuvre_stacks[5]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
262-
card_set(maneuvre_stacks[6]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
253+
card_set(maneuvre_stacks[0]->card, TWO, HEARTS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
254+
card_set(maneuvre_stacks[1]->card, TWO, HEARTS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
255+
card_set(maneuvre_stacks[2]->card, TWO, HEARTS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
256+
card_set(maneuvre_stacks[3]->card, TWO, HEARTS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
257+
card_set(maneuvre_stacks[4]->card, TWO, DIAMONDS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
258+
card_set(maneuvre_stacks[5]->card, TWO, DIAMONDS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
259+
card_set(maneuvre_stacks[6]->card, TWO, DIAMONDS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
263260
for (int i = 0; i < 4; i++) {
264261
for (int j = 0; j < 7; j++) {
265-
// TODO: fix error here
266262
assert(valid_move(foundation_stacks[i], maneuvre_stacks[j]));
267263
}
268264
}
@@ -342,16 +338,15 @@ void test_valid_move_from_maneuvre_stack_to_foundation_stacks() {
342338
stack_malloc(&maneuvre_stacks[i]);
343339
stack_init(maneuvre_stacks[i]);
344340
}
345-
card_set(maneuvre_stacks[0]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
346-
card_set(maneuvre_stacks[1]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
347-
card_set(maneuvre_stacks[2]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
348-
card_set(maneuvre_stacks[3]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
349-
card_set(maneuvre_stacks[4]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
350-
card_set(maneuvre_stacks[5]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
351-
card_set(maneuvre_stacks[6]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
341+
card_set(maneuvre_stacks[0]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
342+
card_set(maneuvre_stacks[1]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
343+
card_set(maneuvre_stacks[2]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
344+
card_set(maneuvre_stacks[3]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
345+
card_set(maneuvre_stacks[4]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
346+
card_set(maneuvre_stacks[5]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
347+
card_set(maneuvre_stacks[6]->card, TWO, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
352348
for (int i = 0; i < 7; i++) {
353349
for (int j = 0; j < 4; j++) {
354-
// TODO: fix error here
355350
assert(valid_move(maneuvre_stacks[i], foundation_stacks[j]));
356351
}
357352
}
@@ -371,18 +366,17 @@ void test_valid_move_from_maneuvre_stack_to_maneuvre_stacks() {
371366
stack_init(maneuvre_stacks[i]);
372367
}
373368
card_set(maneuvre_stacks[0]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_0_BEGIN_X);
374-
card_set(maneuvre_stacks[1]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
375-
card_set(maneuvre_stacks[2]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
376-
card_set(maneuvre_stacks[3]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
377-
card_set(maneuvre_stacks[4]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
378-
card_set(maneuvre_stacks[5]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
379-
card_set(maneuvre_stacks[6]->card, ACE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
369+
card_set(maneuvre_stacks[1]->card, TWO, HEARTS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_1_BEGIN_X);
370+
card_set(maneuvre_stacks[2]->card, THREE, CLUBS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_2_BEGIN_X);
371+
card_set(maneuvre_stacks[3]->card, FOUR, DIAMONDS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_3_BEGIN_X);
372+
card_set(maneuvre_stacks[4]->card, FIVE, SPADES, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_4_BEGIN_X);
373+
card_set(maneuvre_stacks[5]->card, SIX, DIAMONDS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_5_BEGIN_X);
374+
card_set(maneuvre_stacks[6]->card, SEVEN, CLUBS, EXPOSED, MANEUVRE_BEGIN_Y, MANEUVRE_6_BEGIN_X);
380375
for (int i = 0; i < 7; i++) {
381376
for (int j = 0; j < 7; j++) {
382-
if (i == j) {
377+
if (i + 1 != j) {
383378
assert(!valid_move(maneuvre_stacks[i], maneuvre_stacks[j]));
384379
} else {
385-
// TODO: fix error here
386380
assert(valid_move(maneuvre_stacks[i], maneuvre_stacks[j]));
387381
}
388382
}
@@ -412,6 +406,8 @@ void test_move_card_from_stack_empty_stack_to_stack_empty_stack() {
412406
assert(destination == new_destination);
413407
assert(stacks_equal(destination, destination_duplicate));
414408

409+
stack_free(origin_duplicate);
410+
stack_free(destination_duplicate);
415411
stack_free(origin);
416412
stack_free(destination);
417413
}
@@ -442,6 +438,8 @@ void test_move_card_from_stack_empty_stack_to_non_stack_empty_stack() {
442438
assert(destination == new_destination);
443439
assert(stacks_equal(destination, destination_duplicate));
444440

441+
stack_free(origin_duplicate);
442+
stack_free(destination_duplicate);
445443
stack_free(origin);
446444
stack_free(destination);
447445
}

0 commit comments

Comments
 (0)