-
Notifications
You must be signed in to change notification settings - Fork 1
/
armour_test.go
139 lines (113 loc) · 3.69 KB
/
armour_test.go
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package microdungeon
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
func newTestArmour(_type Armour_Type, wc WeightClass) *Armour {
return &Armour{
Name: "A piece of test armour",
Aliases: []string{"test armour", "piece"},
Description: `A piece of test armour, this is it's long description`,
WeightClass: wc,
Type: _type,
}
}
var _ = Describe("Armour", func() {
It("Errors if the character provided is nil", func() {
a := newTestArmour(Armour_MAIN, WeightClass_HEAVY)
err := a.Wear(nil)
Expect(err).ToNot(BeNil())
})
Context("Enforce the number of worn armour types", func() {
char := newTestCharacter()
It("ensures only one piece of headgear can be worn", func() {
a := newTestArmour(Armour_HEADGEAR, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_HEADGEAR, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one piece of main armour can be worn", func() {
a := newTestArmour(Armour_MAIN, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_MAIN, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one pair of gloves can be worn", func() {
a := newTestArmour(Armour_GLOVES, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_GLOVES, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one pair of boots can be worn", func() {
a := newTestArmour(Armour_BOOTS, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_BOOTS, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only two rings can be worn", func() {
a := newTestArmour(Armour_RING, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_RING, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_RING, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one belt can be worn", func() {
a := newTestArmour(Armour_BELT, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_BELT, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one cloak can be worn", func() {
a := newTestArmour(Armour_CLOAK, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_CLOAK, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one shield can be worn", func() {
a := newTestArmour(Armour_SHIELD, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_SHIELD, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only one pair of glasses can be worn", func() {
a := newTestArmour(Armour_GLASSES, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_GLASSES, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
It("ensures only three pieces of unknown gear can be worn", func() {
a := newTestArmour(Armour_UNKNOWN, WeightClass_LIGHT)
err := a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_UNKNOWN, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_UNKNOWN, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).To(BeNil())
a = newTestArmour(Armour_UNKNOWN, WeightClass_LIGHT)
err = a.Wear(char)
Expect(err).ToNot(BeNil())
})
})
})