[Pharo] Personal fitness tracker web app.
1
"
2
A MFTMuscleTest is a test class for testing the behavior of MFTMuscle
3
"
4
Class {
5
#name : 'MFTMuscleTest',
6
#superclass : 'TestCase',
7
#category : 'MyFitnessTracker-Core-Tests-Anatomy',
8
#package : 'MyFitnessTracker-Core-Tests',
9
#tag : 'Anatomy'
10
}
11
12
{ #category : 'tests' }
13
MFTMuscleTest >> muscleFactorySelectors [
14
15
^ #( bicepsBrachii brachioRadialis deltoidAnterior deltoidMedial
16
deltoidPosterior erectorSpinae extensorCarpiRadialiasBrevis
17
extensorCarpiRadialisLongus extensorCarpiUlnaris
18
flexorCarpiRadialis flexorCarpiUlnaris gastrocnemius
19
gluteusMaximus gluteusMedius gluteusMinimus hamstring latissimusDorsi
20
obliquusExternusAbdominis obliquusInternusAbdominis
21
pectoralisMajor pectoralisMinor quadricepsFemoris
22
rectusAbdominis rotatorCuff soleus transversusAbdominis
23
trapezius tricepsBrachii )
24
]
25
26
{ #category : 'tests' }
27
MFTMuscleTest >> testFactoryCreatesFreshButEqualMuscles [
28
29
| first second |
30
first := MFTMuscle pectoralisMajor.
31
second := MFTMuscle pectoralisMajor.
32
33
self deny: first identicalTo: second.
34
self assert: first equals: second.
35
self assert: first hash equals: second hash
36
]
37
38
{ #category : 'tests' }
39
MFTMuscleTest >> testFactoryMuscleLatinNamesAreUniqueExceptKnownRegionalVariants [
40
41
| muscles duplicates allowedDuplicateLatinNames unexpectedDuplicates |
42
muscles := self muscleFactorySelectors collect: [ :selector |
43
MFTMuscle perform: selector ].
44
duplicates := muscles groupedBy: #latinName.
45
allowedDuplicateLatinNames := #( 'deltoideus' ).
46
47
unexpectedDuplicates := duplicates associations select: [
48
:association |
49
association value size > 1 and: [
50
(allowedDuplicateLatinNames includes:
51
association key) not ] ].
52
53
self
54
assert: unexpectedDuplicates isEmpty
55
description: 'Unexpected duplicate Latin muscle names: '
56
, unexpectedDuplicates printString
57
]
58
59
{ #category : 'tests' }
60
MFTMuscleTest >> testFactoryMusclesHaveEnglishName [
61
62
self muscleFactorySelectors do: [ :selector |
63
| muscle |
64
muscle := MFTMuscle perform: selector.
65
self
66
deny: muscle englishName isEmpty
67
description: selector asString , ' should set an English name' ]
68
]
69
70
{ #category : 'tests' }
71
MFTMuscleTest >> testFactoryMusclesHaveLatinName [
72
73
self muscleFactorySelectors do: [ :selector |
74
| muscle |
75
muscle := MFTMuscle perform: selector.
76
self
77
deny: muscle latinName isEmpty
78
description: selector asString , ' should set a Latin name' ]
79
]
80
81
{ #category : 'tests' }
82
MFTMuscleTest >> testMuscleIsNotEqualToObjectOfAnotherClass [
83
84
self deny: MFTMuscle pectoralisMajor equals: 'pectoralis major'
85
]
86
87
{ #category : 'tests' }
88
MFTMuscleTest >> testMusclesWithDifferentEnglishNamesAreNotEqual [
89
90
| first second |
91
first := MFTMuscle new
92
latinName: 'pectoralis major';
93
englishName: 'pecs'.
94
second := MFTMuscle new
95
latinName: 'pectoralis major';
96
englishName: 'chest'.
97
98
self deny: first identicalTo: second.
99
self deny: first hash identicalTo: second hash
100
]
101
102
{ #category : 'tests' }
103
MFTMuscleTest >> testMusclesWithDifferentLatinNamesAreNotEqual [
104
105
| first second |
106
first := MFTMuscle new latinName: 'pectoralis major'.
107
second := MFTMuscle new latinName: 'pectoralis minor'.
108
109
self deny: first equals: second
110
]
111
112
{ #category : 'tests' }
113
MFTMuscleTest >> testMusclesWithSameLatinAndEnglishNamesAreEqual [
114
115
| first second |
116
first := MFTMuscle new
117
latinName: 'pectoralis major';
118
englishName: 'pecs'.
119
second := MFTMuscle new
120
latinName: 'pectoralis major';
121
englishName: 'pecs'.
122
123
self assert: first equals: second.
124
self assert: first hash equals: second hash
125
]
126
127
{ #category : 'tests' }
128
MFTMuscleTest >> testNamesAndDescriptionCanBeAssigned [
129
130
| muscle |
131
muscle := MFTMuscle new.
132
133
muscle
134
latinName: 'pectoralis major';
135
englishName: 'pectoral';
136
description: 'Large chest muscle.'.
137
138
self assert: muscle latinName equals: 'pectoralis major'.
139
self assert: muscle englishName equals: 'pectoral'.
140
self assert: muscle description equals: 'Large chest muscle.'.
141
self assert: muscle canonicalName equals: 'pectoralis major'
142
]
143
144
{ #category : 'tests' }
145
MFTMuscleTest >> testNewMuscleHasEmptyNamesAndDescription [
146
147
| muscle |
148
muscle := MFTMuscle new.
149
150
self assert: muscle latinName equals: ''.
151
self assert: muscle englishName equals: ''.
152
self assert: muscle description equals: ''.
153
self assert: muscle canonicalName equals: ''
154
]
155
156
{ #category : 'tests' }
157
MFTMuscleTest >> testNewWithLatinNameUsesCallingSelector [
158
159
| muscle |
160
muscle := MFTMuscle bicepsBrachii.
161
162
self assert: muscle latinName equals: 'biceps brachii'.
163
self assert: muscle canonicalName equals: 'biceps brachii'
164
]
165
166
{ #category : 'tests' }
167
MFTMuscleTest >> testPectoralisMajorFactoryIsComplete [
168
169
| muscle |
170
muscle := MFTMuscle pectoralisMajor.
171
172
self assert: muscle latinName equals: 'pectoralis major'.
173
self assert: muscle englishName equals: 'pectoral'.
174
self deny: muscle description isEmpty
175
]
176
177
{ #category : 'tests' }
178
MFTMuscleTest >> testTerminologiaAnatomicaLinkUsesLatinName [
179
180
| muscle |
181
muscle := MFTMuscle new latinName: 'pectoralis major'.
182
183
self
184
assert: muscle linkTerminologiaAnatomica
185
equals:
186
'http://terminologia-anatomica.org/en/Search?query=musculus pectoralis major'
187
]
188