" A MFTMuscleTest is a test class for testing the behavior of MFTMuscle " Class { #name : 'MFTMuscleTest', #superclass : 'TestCase', #category : 'MyFitnessTracker-Core-Tests-Anatomy', #package : 'MyFitnessTracker-Core-Tests', #tag : 'Anatomy' } { #category : 'tests' } MFTMuscleTest >> muscleFactorySelectors [ ^ #( bicepsBrachii brachioRadialis deltoidAnterior deltoidMedial deltoidPosterior erectorSpinae extensorCarpiRadialiasBrevis extensorCarpiRadialisLongus extensorCarpiUlnaris flexorCarpiRadialis flexorCarpiUlnaris gastrocnemius gluteusMaximus gluteusMedius gluteusMinimus hamstring latissimusDorsi obliquusExternusAbdominis obliquusInternusAbdominis pectoralisMajor pectoralisMinor quadricepsFemoris rectusAbdominis rotatorCuff soleus transversusAbdominis trapezius tricepsBrachii ) ] { #category : 'tests' } MFTMuscleTest >> testFactoryCreatesFreshButEqualMuscles [ | first second | first := MFTMuscle pectoralisMajor. second := MFTMuscle pectoralisMajor. self deny: first identicalTo: second. self assert: first equals: second. self assert: first hash equals: second hash ] { #category : 'tests' } MFTMuscleTest >> testFactoryMuscleLatinNamesAreUniqueExceptKnownRegionalVariants [ | muscles duplicates allowedDuplicateLatinNames unexpectedDuplicates | muscles := self muscleFactorySelectors collect: [ :selector | MFTMuscle perform: selector ]. duplicates := muscles groupedBy: #latinName. allowedDuplicateLatinNames := #( 'deltoideus' ). unexpectedDuplicates := duplicates associations select: [ :association | association value size > 1 and: [ (allowedDuplicateLatinNames includes: association key) not ] ]. self assert: unexpectedDuplicates isEmpty description: 'Unexpected duplicate Latin muscle names: ' , unexpectedDuplicates printString ] { #category : 'tests' } MFTMuscleTest >> testFactoryMusclesHaveEnglishName [ self muscleFactorySelectors do: [ :selector | | muscle | muscle := MFTMuscle perform: selector. self deny: muscle englishName isEmpty description: selector asString , ' should set an English name' ] ] { #category : 'tests' } MFTMuscleTest >> testFactoryMusclesHaveLatinName [ self muscleFactorySelectors do: [ :selector | | muscle | muscle := MFTMuscle perform: selector. self deny: muscle latinName isEmpty description: selector asString , ' should set a Latin name' ] ] { #category : 'tests' } MFTMuscleTest >> testMuscleIsNotEqualToObjectOfAnotherClass [ self deny: MFTMuscle pectoralisMajor equals: 'pectoralis major' ] { #category : 'tests' } MFTMuscleTest >> testMusclesWithDifferentEnglishNamesAreNotEqual [ | first second | first := MFTMuscle new latinName: 'pectoralis major'; englishName: 'pecs'. second := MFTMuscle new latinName: 'pectoralis major'; englishName: 'chest'. self deny: first identicalTo: second. self deny: first hash identicalTo: second hash ] { #category : 'tests' } MFTMuscleTest >> testMusclesWithDifferentLatinNamesAreNotEqual [ | first second | first := MFTMuscle new latinName: 'pectoralis major'. second := MFTMuscle new latinName: 'pectoralis minor'. self deny: first equals: second ] { #category : 'tests' } MFTMuscleTest >> testMusclesWithSameLatinAndEnglishNamesAreEqual [ | first second | first := MFTMuscle new latinName: 'pectoralis major'; englishName: 'pecs'. second := MFTMuscle new latinName: 'pectoralis major'; englishName: 'pecs'. self assert: first equals: second. self assert: first hash equals: second hash ] { #category : 'tests' } MFTMuscleTest >> testNamesAndDescriptionCanBeAssigned [ | muscle | muscle := MFTMuscle new. muscle latinName: 'pectoralis major'; englishName: 'pectoral'; description: 'Large chest muscle.'. self assert: muscle latinName equals: 'pectoralis major'. self assert: muscle englishName equals: 'pectoral'. self assert: muscle description equals: 'Large chest muscle.'. self assert: muscle canonicalName equals: 'pectoralis major' ] { #category : 'tests' } MFTMuscleTest >> testNewMuscleHasEmptyNamesAndDescription [ | muscle | muscle := MFTMuscle new. self assert: muscle latinName equals: ''. self assert: muscle englishName equals: ''. self assert: muscle description equals: ''. self assert: muscle canonicalName equals: '' ] { #category : 'tests' } MFTMuscleTest >> testNewWithLatinNameUsesCallingSelector [ | muscle | muscle := MFTMuscle bicepsBrachii. self assert: muscle latinName equals: 'biceps brachii'. self assert: muscle canonicalName equals: 'biceps brachii' ] { #category : 'tests' } MFTMuscleTest >> testPectoralisMajorFactoryIsComplete [ | muscle | muscle := MFTMuscle pectoralisMajor. self assert: muscle latinName equals: 'pectoralis major'. self assert: muscle englishName equals: 'pectoral'. self deny: muscle description isEmpty ] { #category : 'tests' } MFTMuscleTest >> testTerminologiaAnatomicaLinkUsesLatinName [ | muscle | muscle := MFTMuscle new latinName: 'pectoralis major'. self assert: muscle linkTerminologiaAnatomica equals: 'http://terminologia-anatomica.org/en/Search?query=musculus pectoralis major' ]