shouldCountTheTurnInitially()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 3
c 1
b 0
f 0
cc 1
rs 10
1
package com.fjalvarez.tdd.darts;
2
3
import org.junit.Before;
4
import org.junit.Test;
5
6
import static org.hamcrest.core.Is.*;
7
import static org.hamcrest.core.IsEqual.*;
8
import static org.junit.Assert.*;
9
10
public class DartsTest {
11
    private Darts d;
12
13
    @Before
14
    public void setUpGame() {
15
        d = new Darts();
16
    }
17
18
    @Test
19
    public void aGameShouldStartAt301() {
20
        assertThat(d.score(), equalTo(301));
21
        assertThat(d.isFinished(), is(false));
22
    }
23
24
    @Test
25
    public void shouldCountADoubleThrow() {
26
        d.dart(20, Darts.Multiplier.DOUBLE);
27
    }
28
29
    @Test
30
    public void shouldCountAtTripleThrow() {
31
        d.dart(30, Darts.Multiplier.TRIPLE);
32
    }
33
34
    @Test
35
    public void shouldCountTheTurnInitially() {
36
        assertThat(d.getTurn(), is(1));
37
    }
38
39
    @Test
40
    public void shouldCountTheTurn() {
41
        d.dart(1);
42
        assertThat(d.getTurn(), is(1));
43
        assertThat(d.dartsLeft(), is(2));
44
45
        d.dart(1);
46
        assertThat(d.getTurn(), is(1));
47
        assertThat(d.dartsLeft(), is(1));
48
49
        d.dart(1);
50
        assertThat(d.getTurn(), is(2));
51
        assertThat(d.dartsLeft(), is(3));
52
    }
53
54
    @Test
55
    public void shouldGoBustReaching1() {
56
        // Lets reach 121
57
        for (int i=0; i<3; i++) {
58
            d.dart(20, Darts.Multiplier.TRIPLE);
59
        }
60
        d.dart(20, Darts.Multiplier.TRIPLE);
61
        d.dart(20, Darts.Multiplier.TRIPLE); // 1!
62
63
        assertEquals(121, d.score());
64
        assertEquals(3, d.getTurn());
65
        assertEquals(3, d.dartsLeft());
66
    }
67
68
    @Test
69
    public void shouldGoBustAboveZero() {
70
        // Lets reach 121
71
        for (int i=0; i<3; i++) {
72
            d.dart(20, Darts.Multiplier.TRIPLE);
73
        }
74
        d.dart(15, Darts.Multiplier.TRIPLE); // 76
75
        d.dart(15, Darts.Multiplier.TRIPLE); // 31
76
        d.dart(20, Darts.Multiplier.TRIPLE); // -29! Gone
77
78
        assertEquals(121, d.score());
79
        assertEquals(3, d.getTurn());
80
        assertEquals(3, d.dartsLeft());
81
    }
82
83
    @Test
84
    public void shouldCompleteAGameWithADouble() {
85
        // Lets reach 121
86
        for (int i=0; i<3; i++) {
87
            d.dart(20, Darts.Multiplier.TRIPLE);
88
        }
89
        d.dart(17, Darts.Multiplier.TRIPLE); // 70
90
        d.dart(20, Darts.Multiplier.TRIPLE); // 10
91
        d.dart(5, Darts.Multiplier.DOUBLE); // 0
92
93
        assertTrue(d.isFinished());
94
    }
95
}
96