Introduce equality predicates.

Commit
2f50d0790eeeaace58a82f166f2269fb5064d597
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
src/MyFitnessTracker-Core/MFTEquipment.class.st
index b5b4a18b..ceb7b42b 100644..100644
@@ -49,6 +49,15 @@
49 49 ^ self newWithEnglishName
50 50 ]
51 51
52 Added: { #category : 'comparing' }
53 Added: MFTEquipment >> = anObject [
54 Added: "Answer whether the receiver and anObject represent the same object."
55 Added:
56 Added: self == anObject ifTrue: [ ^ true ].
57 Added: self class = anObject class ifFalse: [ ^ false ].
58 Added: ^ englishName = anObject canonicalName
59 Added: ]
60 Added:
52 61 { #category : 'initialization' }
53 62 MFTEquipment >> canonicalName [
54 63
@@ -65,4 +74,11 @@
65 74 MFTEquipment >> englishName: aString [
66 75
67 76 englishName := aString
77 Added: ]
78 Added:
79 Added: { #category : 'comparing' }
80 Added: MFTEquipment >> hash [
81 Added: "Answer an integer value that is related to the identity of the receiver."
82 Added:
83 Added: ^ englishName hash
68 84 ]
src/MyFitnessTracker-Core/MFTExercise.class.st
index 7d5a0895..4049a4c8 100644..100644
@@ -207,6 +207,16 @@
207 207 ^ self newWithEnglishName
208 208 ]
209 209
210 Added: { #category : 'comparing' }
211 Added: MFTExercise >> = anObject [
212 Added: "Answer whether the receiver and anObject represent the same object."
213 Added:
214 Added: self == anObject ifTrue: [ ^ true ].
215 Added: self class = anObject class ifFalse: [ ^ false ].
216 Added: ^ equipment = anObject equipment and: [
217 Added: englishName = anObject englishName ]
218 Added: ]
219 Added:
210 220 { #category : 'accessing' }
211 221 MFTExercise >> activates: aMFTMuscleGroup [
212 222
@@ -259,6 +269,13 @@
259 269 MFTExercise >> frenchName: aString [
260 270
261 271 frenchName := aString
272 Added: ]
273 Added:
274 Added: { #category : 'comparing' }
275 Added: MFTExercise >> hash [
276 Added: "Answer an integer value that is related to the identity of the receiver."
277 Added:
278 Added: ^ equipment hash bitXor: englishName hash
262 279 ]
263 280
264 281 { #category : 'initialization' }
src/MyFitnessTracker-Core/MFTRepScheme.class.st
index cd1e6938..242073b5 100644..100644
@@ -22,10 +22,26 @@
22 22 yourself
23 23 ]
24 24
25 Added: { #category : 'comparing' }
26 Added: MFTRepScheme >> = anObject [
27 Added: "Answer whether the receiver and anObject represent the same object."
28 Added:
29 Added: self == anObject ifTrue: [ ^ true ].
30 Added: self class = anObject class ifFalse: [ ^ false ].
31 Added: ^ minReps = anObject minReps and: [ maxReps = anObject maxReps ]
32 Added: ]
33 Added:
25 34 { #category : 'initialization' }
26 35 MFTRepScheme >> canonicalName [
27 36
28 37 ^ minReps asString , '–' , maxReps asString
38 Added: ]
39 Added:
40 Added: { #category : 'comparing' }
41 Added: MFTRepScheme >> hash [
42 Added: "Answer an integer value that is related to the identity of the receiver."
43 Added:
44 Added: ^ minReps hash bitXor: maxReps hash
29 45 ]
30 46
31 47 { #category : 'testing' }
src/MyFitnessTracker-Core/MFTSetPrescription.class.st
index 540d654b..84633b97 100644..100644
@@ -30,6 +30,15 @@
30 30 yourself
31 31 ]
32 32
33 Added: { #category : 'comparing' }
34 Added: MFTSetPrescription >> = anObject [
35 Added: "Answer whether the receiver and anObject represent the same object."
36 Added:
37 Added: self == anObject ifTrue: [ ^ true ].
38 Added: self class = anObject class ifFalse: [ ^ false ].
39 Added: ^ repScheme = anObject repScheme and: [ exercise = anObject exercise ]
40 Added: ]
41 Added:
33 42 { #category : 'initialization' }
34 43 MFTSetPrescription >> canonicalName [
35 44
@@ -46,6 +55,13 @@
46 55 MFTSetPrescription >> exercise: aMFTExercise [
47 56
48 57 exercise := aMFTExercise
58 Added: ]
59 Added:
60 Added: { #category : 'comparing' }
61 Added: MFTSetPrescription >> hash [
62 Added: "Answer an integer value that is related to the identity of the receiver."
63 Added:
64 Added: ^ repScheme hash bitXor: exercise hash
49 65 ]
50 66
51 67 { #category : 'as yet unclassified' }