View raw

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