diff --git a/src/Dice/Die.class.st b/src/Dice/Die.class.st new file mode 100644 index 0000000..e73b65d --- /dev/null +++ b/src/Dice/Die.class.st @@ -0,0 +1,40 @@ +Class { + #name : #Die, + #superclass : #Object, + #instVars : [ + 'faces' + ], + #category : #Dice +} + +{ #category : #'instance creation' } +Die class >> withFaces: anInteger [ + + | d | + d := Die new. + d faces: anInteger. + ^ d +] + +{ #category : #accessing } +Die >> faces [ + ^ faces +] + +{ #category : #accessing } +Die >> faces: anInteger [ + faces := anInteger +] + +{ #category : #initialization } +Die >> initialize [ + + super initialize. + faces := 6 +] + +{ #category : #accessing } +Die >> roll [ + + ^ faces atRandom +] diff --git a/src/Dice/DieTest.class.st b/src/Dice/DieTest.class.st new file mode 100644 index 0000000..f62b2af --- /dev/null +++ b/src/Dice/DieTest.class.st @@ -0,0 +1,30 @@ +Class { + #name : #DieTest, + #superclass : #TestCase, + #category : #Dice +} + +{ #category : #tests } +DieTest >> testCreationIsOk [ + + | d | + d := Die withFaces: 20. + self assert: d faces equals: 20 +] + +{ #category : #tests } +DieTest >> testInitializationIsOk [ + + | d | + d := Die new. + self assert: d faces equals: 6 +] + +{ #category : #tests } +DieTest >> testRolling [ + + | d | + d := Die new. + 10 timesRepeat: + [ self assert: (d roll between: 1 and: 6) ] +] diff --git a/src/Dice/package.st b/src/Dice/package.st new file mode 100644 index 0000000..30779b6 --- /dev/null +++ b/src/Dice/package.st @@ -0,0 +1 @@ +Package { #name : #Dice }