-
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathdnd-character.spec.wren
116 lines (93 loc) · 3.84 KB
/
dnd-character.spec.wren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import "wren-testie/testie" for Testie, Expect
import "./dnd-character" for Character, Util
Testie.test("D&D Character") { |do, skip|
do.describe("Ability modifier") {
do.test("ability modifier for score 3 is -4") {
Expect.value(Util.abilityModifier(3)).toEqual(-4)
}
skip.test("ability modifier for score 4 is -3") {
Expect.value(Util.abilityModifier(4)).toEqual(-3)
}
skip.test("ability modifier for score 5 is -3") {
Expect.value(Util.abilityModifier(5)).toEqual(-3)
}
skip.test("ability modifier for score 6 is -2") {
Expect.value(Util.abilityModifier(6)).toEqual(-2)
}
skip.test("ability modifier for score 7 is -2") {
Expect.value(Util.abilityModifier(7)).toEqual(-2)
}
skip.test("ability modifier for score 8 is -1") {
Expect.value(Util.abilityModifier(8)).toEqual(-1)
}
skip.test("ability modifier for score 9 is -1") {
Expect.value(Util.abilityModifier(9)).toEqual(-1)
}
skip.test("ability modifier for score 10 is 0") {
Expect.value(Util.abilityModifier(10)).toEqual(0)
}
skip.test("ability modifier for score 11 is 0") {
Expect.value(Util.abilityModifier(11)).toEqual(0)
}
skip.test("ability modifier for score 12 is 1") {
Expect.value(Util.abilityModifier(12)).toEqual(1)
}
skip.test("ability modifier for score 13 is 1") {
Expect.value(Util.abilityModifier(13)).toEqual(1)
}
skip.test("ability modifier for score 14 is 2") {
Expect.value(Util.abilityModifier(14)).toEqual(2)
}
skip.test("ability modifier for score 15 is 2") {
Expect.value(Util.abilityModifier(15)).toEqual(2)
}
skip.test("ability modifier for score 16 is 3") {
Expect.value(Util.abilityModifier(16)).toEqual(3)
}
skip.test("ability modifier for score 17 is 3") {
Expect.value(Util.abilityModifier(17)).toEqual(3)
}
skip.test("ability modifier for score 18 is 4") {
Expect.value(Util.abilityModifier(18)).toEqual(4)
}
skip.test("ability score less than 3 throws error") {
Expect.that{
Util.abilityModifier(2)
}.abortsWith("Ability scores must be at least 3")
}
skip.test("ability score greater than 18 throws error") {
Expect.that {
Util.abilityModifier(19)
}.abortsWith("Ability scores can be at most 18")
}
}
skip.test("random ability within range") {
Expect.value(Character.rollAbility()).toBeLessThanOrEqual(18)
Expect.value(Character.rollAbility()).toBeGreaterThanOrEqual(3)
}
skip.test("random character is valid") {
var Drizzt = Character.new()
Expect.value(Drizzt.strength).toBeLessThanOrEqual(18)
Expect.value(Drizzt.strength).toBeGreaterThanOrEqual(3)
Expect.value(Drizzt.dexterity).toBeLessThanOrEqual(18)
Expect.value(Drizzt.dexterity).toBeGreaterThanOrEqual(3)
Expect.value(Drizzt.constitution).toBeLessThanOrEqual(18)
Expect.value(Drizzt.constitution).toBeGreaterThanOrEqual(3)
Expect.value(Drizzt.intelligence).toBeLessThanOrEqual(18)
Expect.value(Drizzt.intelligence).toBeGreaterThanOrEqual(3)
Expect.value(Drizzt.wisdom).toBeLessThanOrEqual(18)
Expect.value(Drizzt.wisdom).toBeGreaterThanOrEqual(3)
Expect.value(Drizzt.charisma).toBeLessThanOrEqual(18)
Expect.value(Drizzt.charisma).toBeGreaterThanOrEqual(3)
Expect.value(Drizzt.hitpoints).toEqual(10 + Util.abilityModifier(Drizzt.constitution))
}
skip.test("each ability is only calculated once") {
var Drizzt = Character.new()
Expect.value(Drizzt.strength).toEqual(Drizzt.strength)
Expect.value(Drizzt.dexterity).toEqual(Drizzt.dexterity)
Expect.value(Drizzt.constitution).toEqual(Drizzt.constitution)
Expect.value(Drizzt.intelligence).toEqual(Drizzt.intelligence)
Expect.value(Drizzt.wisdom).toEqual(Drizzt.wisdom)
Expect.value(Drizzt.charisma).toEqual(Drizzt.charisma)
}
}