From 6829d8e6a20588a4f815dc9f0b1205829ff09c89 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 16 Sep 2025 09:40:03 +0200 Subject: [PATCH] Extensions to the Integer class for Dies and operation on DieHandle --- src/Dice/DieHandle.class.st | 10 ++++++++++ src/Dice/DieHandleTest.class.st | 12 ++++++++++++ src/Dice/Integer.extension.st | 28 ++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 src/Dice/Integer.extension.st diff --git a/src/Dice/DieHandle.class.st b/src/Dice/DieHandle.class.st index 2162c62..6820367 100644 --- a/src/Dice/DieHandle.class.st +++ b/src/Dice/DieHandle.class.st @@ -7,6 +7,16 @@ Class { #category : #Dice } +{ #category : #initialization } +DieHandle >> + aDieHandle [ + + | handle | + handle := self class new. + self dice do: [ :each | handle addDie: each ]. + aDieHandle dice do: [ :each | handle addDie: each ]. + ^ handle +] + { #category : #initialization } DieHandle >> addDie: aDie [ diff --git a/src/Dice/DieHandleTest.class.st b/src/Dice/DieHandleTest.class.st index 5761e65..ed20131 100644 --- a/src/Dice/DieHandleTest.class.st +++ b/src/Dice/DieHandleTest.class.st @@ -47,3 +47,15 @@ DieHandleTest >> testRoll [ 10 timesRepeat: [ self assert: (handle roll between: handle diceNumber and: handle maxValue) ] ] + +{ #category : #tests } +DieHandleTest >> testSimpleHandle [ + + self assert: 2 D20 diceNumber equals: 2 +] + +{ #category : #tests } +DieHandleTest >> testSumming [ + + self assert: (3 D4 + 2 D6) diceNumber equals: 5 +] diff --git a/src/Dice/Integer.extension.st b/src/Dice/Integer.extension.st new file mode 100644 index 0000000..f97a827 --- /dev/null +++ b/src/Dice/Integer.extension.st @@ -0,0 +1,28 @@ +Extension { #name : #Integer } + +{ #category : #'*Dice' } +Integer >> D20 [ + + self D: 20 +] + +{ #category : #'*Dice' } +Integer >> D4 [ + + ^ self D: 4 +] + +{ #category : #'*Dice' } +Integer >> D6 [ + + ^ self D: 6 +] + +{ #category : #'*Dice' } +Integer >> D: anInteger [ + + | handle | + handle := DieHandle new. + self timesRepeat: [ handle addDie: (Die withFaces: anInteger) ]. + ^ handle +]