View raw

1 " 2 A MFTEquipmentTest is a test class for testing the behavior of MFTEquipment 3 " 4 Class { 5 #name : 'MFTEquipmentTest', 6 #superclass : 'TestCase', 7 #category : 'MyFitnessTracker-Core-Tests-Base', 8 #package : 'MyFitnessTracker-Core-Tests', 9 #tag : 'Base' 10 } 11 12 { #category : 'tests' } 13 MFTEquipmentTest >> equipmentFactorySelectors [ 14 15 ^ #( barbell cable dumbbell ezBar legExtensionMachine 16 pecDeck seatedLegCurlMachine ) 17 ] 18 19 { #category : 'tests' } 20 MFTEquipmentTest >> testEnglishNameCanBeAssigned [ 21 22 | equipment | 23 equipment := MFTEquipment new englishName: 'barbell'. 24 25 self assert: equipment englishName equals: 'barbell'. 26 self assert: equipment canonicalName equals: 'barbell' 27 ] 28 29 { #category : 'tests' } 30 MFTEquipmentTest >> testEquipmentIsNotEqualToObjectOfAnotherClass [ 31 32 self deny: MFTEquipment barbell equals: 'barbell' 33 ] 34 35 { #category : 'tests' } 36 MFTEquipmentTest >> testEquipmentWithDifferentEnglishNamesAreNotEqual [ 37 38 | first second | 39 first := MFTEquipment new englishName: 'barbell'. 40 second := MFTEquipment new englishName: 'dumbbell'. 41 42 self deny: first equals: second 43 ] 44 45 { #category : 'tests' } 46 MFTEquipmentTest >> testEquipmentWithSameEnglishNameAreEqual [ 47 48 | first second | 49 first := MFTEquipment new englishName: 'barbell'. 50 second := MFTEquipment new englishName: 'barbell'. 51 52 self deny: first == second. 53 self assert: first equals: second. 54 self assert: first hash equals: second hash 55 ] 56 57 { #category : 'tests' } 58 MFTEquipmentTest >> testEzBarFactoryKeepsExpectedCapitalization [ 59 60 | equipment | 61 equipment := MFTEquipment ezBar. 62 63 self assert: equipment englishName equals: 'EZ bar'. 64 self assert: equipment canonicalName equals: 'EZ bar' 65 ] 66 67 { #category : 'tests' } 68 MFTEquipmentTest >> testFactoryCreatesFreshButEqualEquipment [ 69 70 | first second | 71 first := MFTEquipment barbell. 72 second := MFTEquipment barbell. 73 74 self deny: first == second. 75 self assert: first equals: second. 76 self assert: first hash equals: second hash 77 ] 78 79 { #category : 'tests' } 80 MFTEquipmentTest >> testFactoryEquipmentEnglishNamesAreUnique [ 81 82 | equipment duplicates duplicateNames | 83 equipment := self equipmentFactorySelectors collect: [ :selector | 84 MFTEquipment perform: selector ]. 85 duplicates := equipment groupedBy: #englishName. 86 duplicateNames := duplicates associations select: [ :association | 87 association value size > 1 ]. 88 89 self 90 assert: duplicateNames isEmpty 91 description: 92 'Duplicate equipment English names: ' , duplicateNames printString 93 ] 94 95 { #category : 'tests' } 96 MFTEquipmentTest >> testFactoryEquipmentHaveEnglishName [ 97 98 self equipmentFactorySelectors do: [ :selector | 99 | equipment | 100 equipment := MFTEquipment perform: selector. 101 self 102 deny: equipment englishName isEmptyOrNil 103 description: selector asString , ' should set an English name' ] 104 ] 105 106 { #category : 'tests' } 107 MFTEquipmentTest >> testKnownFactoryNames [ 108 109 self assert: MFTEquipment barbell englishName equals: 'barbell'. 110 self assert: MFTEquipment dumbbell englishName equals: 'dumbbell'. 111 self assert: MFTEquipment cable englishName equals: 'cable'. 112 self assert: MFTEquipment pecDeck englishName equals: 'pec deck'. 113 self 114 assert: MFTEquipment legExtensionMachine englishName 115 equals: 'leg extension machine'. 116 self 117 assert: MFTEquipment seatedLegCurlMachine englishName 118 equals: 'seated leg curl machine' 119 ] 120 121 { #category : 'tests' } 122 MFTEquipmentTest >> testNewEquipmentHasNoEnglishName [ 123 124 | equipment | 125 equipment := MFTEquipment new. 126 127 self assert: equipment englishName isNil. 128 self assert: equipment canonicalName isNil 129 ] 130 131 { #category : 'tests' } 132 MFTEquipmentTest >> testNewWithEnglishNameUsesCallingSelector [ 133 134 | equipment | 135 equipment := MFTEquipment seatedLegCurlMachine. 136 137 self assert: equipment englishName equals: 'seated leg curl machine'. 138 self 139 assert: equipment canonicalName 140 equals: 'seated leg curl machine' 141 ] 142