" A MFTEquipmentTest is a test class for testing the behavior of MFTEquipment " Class { #name : 'MFTEquipmentTest', #superclass : 'TestCase', #category : 'MyFitnessTracker-Core-Tests-Base', #package : 'MyFitnessTracker-Core-Tests', #tag : 'Base' } { #category : 'tests' } MFTEquipmentTest >> equipmentFactorySelectors [ ^ #( barbell cable dumbbell ezBar legExtensionMachine pecDeck seatedLegCurlMachine ) ] { #category : 'tests' } MFTEquipmentTest >> testEnglishNameCanBeAssigned [ | equipment | equipment := MFTEquipment new englishName: 'barbell'. self assert: equipment englishName equals: 'barbell'. self assert: equipment canonicalName equals: 'barbell' ] { #category : 'tests' } MFTEquipmentTest >> testEquipmentIsNotEqualToObjectOfAnotherClass [ self deny: MFTEquipment barbell equals: 'barbell' ] { #category : 'tests' } MFTEquipmentTest >> testEquipmentWithDifferentEnglishNamesAreNotEqual [ | first second | first := MFTEquipment new englishName: 'barbell'. second := MFTEquipment new englishName: 'dumbbell'. self deny: first equals: second ] { #category : 'tests' } MFTEquipmentTest >> testEquipmentWithSameEnglishNameAreEqual [ | first second | first := MFTEquipment new englishName: 'barbell'. second := MFTEquipment new englishName: 'barbell'. self deny: first == second. self assert: first equals: second. self assert: first hash equals: second hash ] { #category : 'tests' } MFTEquipmentTest >> testEzBarFactoryKeepsExpectedCapitalization [ | equipment | equipment := MFTEquipment ezBar. self assert: equipment englishName equals: 'EZ bar'. self assert: equipment canonicalName equals: 'EZ bar' ] { #category : 'tests' } MFTEquipmentTest >> testFactoryCreatesFreshButEqualEquipment [ | first second | first := MFTEquipment barbell. second := MFTEquipment barbell. self deny: first == second. self assert: first equals: second. self assert: first hash equals: second hash ] { #category : 'tests' } MFTEquipmentTest >> testFactoryEquipmentEnglishNamesAreUnique [ | equipment duplicates duplicateNames | equipment := self equipmentFactorySelectors collect: [ :selector | MFTEquipment perform: selector ]. duplicates := equipment groupedBy: #englishName. duplicateNames := duplicates associations select: [ :association | association value size > 1 ]. self assert: duplicateNames isEmpty description: 'Duplicate equipment English names: ' , duplicateNames printString ] { #category : 'tests' } MFTEquipmentTest >> testFactoryEquipmentHaveEnglishName [ self equipmentFactorySelectors do: [ :selector | | equipment | equipment := MFTEquipment perform: selector. self deny: equipment englishName isEmptyOrNil description: selector asString , ' should set an English name' ] ] { #category : 'tests' } MFTEquipmentTest >> testKnownFactoryNames [ self assert: MFTEquipment barbell englishName equals: 'barbell'. self assert: MFTEquipment dumbbell englishName equals: 'dumbbell'. self assert: MFTEquipment cable englishName equals: 'cable'. self assert: MFTEquipment pecDeck englishName equals: 'pec deck'. self assert: MFTEquipment legExtensionMachine englishName equals: 'leg extension machine'. self assert: MFTEquipment seatedLegCurlMachine englishName equals: 'seated leg curl machine' ] { #category : 'tests' } MFTEquipmentTest >> testNewEquipmentHasNoEnglishName [ | equipment | equipment := MFTEquipment new. self assert: equipment englishName isNil. self assert: equipment canonicalName isNil ] { #category : 'tests' } MFTEquipmentTest >> testNewWithEnglishNameUsesCallingSelector [ | equipment | equipment := MFTEquipment seatedLegCurlMachine. self assert: equipment englishName equals: 'seated leg curl machine'. self assert: equipment canonicalName equals: 'seated leg curl machine' ]