Skip to content

Commit

Permalink
Merge pull request #27 from hpi-swa-teaching/refactoring
Browse files Browse the repository at this point in the history
Refactoring
  • Loading branch information
Johanna-G authored Jun 18, 2024
2 parents 01924a0 + 19cc216 commit 0a17ddc
Show file tree
Hide file tree
Showing 10 changed files with 558 additions and 82 deletions.
42 changes: 37 additions & 5 deletions src/SqueakKara-Core/SKEnvironment.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,23 @@ Class {
#category : #'SqueakKara-Core'
}

{
#category : #'instance creation',
#'squeak_changestamp' : 'JJG 6/18/2024 11:38'
}
SKEnvironment class >> newWithKaraAt: aPoint [

^ self basicNew initializeWithKaraAt: aPoint
]

{
#category : #commands,
#'squeak_changestamp' : 'KD 6/12/2024 13:28'
#'squeak_changestamp' : 'JJG 6/18/2024 18:43'
}
SKEnvironment >> close [

"self workspace close.
self grid abandon."
self workspace close.
self grid abandon.


]
Expand Down Expand Up @@ -69,16 +78,39 @@ SKEnvironment >> grid: anObject [

{
#category : #initialization,
#'squeak_changestamp' : 'JJG 6/17/2024 16:40'
#'squeak_changestamp' : 'JJG 6/18/2024 11:32'
}
SKEnvironment >> initialize [

"self initializeWithChallenge1"
]

{
#category : #initialization,
#'squeak_changestamp' : 'JJG 6/18/2024 18:47'
}
SKEnvironment >> initializeWithChallenge1 [


self grid: (SKGrid newWithExtent: 7 @ 7).
self kara: self grid challenge1.
self workspace: (SKWorkspace newWithKara: self kara).
self executer: (SKExecuter new).
(self executer kara) setRealKara: self kara.
(self executer kara) kara: self kara.
]

{
#category : #initialization,
#'squeak_changestamp' : 'JJG 6/18/2024 18:47'
}
SKEnvironment >> initializeWithKaraAt: aPoint [


self grid: (SKGrid newWithExtent: 7 @ 7).
self kara: (SKKara newInGrid: self grid at: aPoint).
self workspace: (SKWorkspace newWithKara: self kara).
self executer: (SKExecuter new).
(self executer kara) kara: self kara.
]

{
Expand Down
71 changes: 36 additions & 35 deletions src/SqueakKara-Core/SKGrid.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -92,50 +92,51 @@ SKGrid >> backgroundColor [

{
#category : #challenges,
#'squeak_changestamp' : 'KD 6/12/2024 18:26'
#'squeak_changestamp' : 'JJG 6/18/2024 11:19'
}
SKGrid >> challenge1 [
SKTrunk newInGrid: self at: 1@1.
SKTrunk newInGrid: self at: 2@1.
SKTrunk newInGrid: self at: 3@1.
SKTrunk newInGrid: self at: 4@1.
SKTrunk newInGrid: self at: 5@1.
SKTrunk newInGrid: self at: 6@1.
SKTrunk newInGrid: self at: 7@1.

SKTrunk newInGrid: self at: 7@2.
SKTrunk newInGrid: self at: 7@3.
SKTrunk newInGrid: self at: 7@4.
SKTrunk newInGrid: self at: 7@5.
SKTrunk newInGrid: self at: 7@6.
SKTrunk newInGrid: self at: 7@7.
SKTrunk newInGrid: self at: 1 @ 1.
SKTrunk newInGrid: self at: 2 @ 1.
SKTrunk newInGrid: self at: 3 @ 1.
SKTrunk newInGrid: self at: 4 @ 1.
SKTrunk newInGrid: self at: 5 @ 1.
SKTrunk newInGrid: self at: 6 @ 1.
SKTrunk newInGrid: self at: 7 @ 1.

SKTrunk newInGrid: self at: 6@7.
SKTrunk newInGrid: self at: 5@7.
SKTrunk newInGrid: self at: 4@7.
SKTrunk newInGrid: self at: 3@7.
SKTrunk newInGrid: self at: 2@7.
SKTrunk newInGrid: self at: 1@7.
SKTrunk newInGrid: self at: 7 @ 2.
SKTrunk newInGrid: self at: 7 @ 3.
SKTrunk newInGrid: self at: 7 @ 4.
SKTrunk newInGrid: self at: 7 @ 5.
SKTrunk newInGrid: self at: 7 @ 6.
SKTrunk newInGrid: self at: 7 @ 7.

SKTrunk newInGrid: self at: 1@6.
SKTrunk newInGrid: self at: 1@5.
SKTrunk newInGrid: self at: 1@4.
SKTrunk newInGrid: self at: 1@3.
SKTrunk newInGrid: self at: 6 @ 7.
SKTrunk newInGrid: self at: 5 @ 7.
SKTrunk newInGrid: self at: 4 @ 7.
SKTrunk newInGrid: self at: 3 @ 7.
SKTrunk newInGrid: self at: 2 @ 7.
SKTrunk newInGrid: self at: 1 @ 7.

SKTrunk newInGrid: self at: 2@3.
SKTrunk newInGrid: self at: 3@3.
SKTrunk newInGrid: self at: 4@3.
SKTrunk newInGrid: self at: 5@3.
SKTrunk newInGrid: self at: 1 @ 6.
SKTrunk newInGrid: self at: 1 @ 5.
SKTrunk newInGrid: self at: 1 @ 4.
SKTrunk newInGrid: self at: 1 @ 3.

SKTrunk newInGrid: self at: 5@3.
SKTrunk newInGrid: self at: 5@4.
SKTrunk newInGrid: self at: 5@5.
SKTrunk newInGrid: self at: 2 @ 3.
SKTrunk newInGrid: self at: 3 @ 3.
SKTrunk newInGrid: self at: 4 @ 3.
SKTrunk newInGrid: self at: 5 @ 3.

SKTrunk newInGrid: self at: 4@5.
SKTrunk newInGrid: self at: 3@5.
SKTrunk newInGrid: self at: 5 @ 3.
SKTrunk newInGrid: self at: 5 @ 4.
SKTrunk newInGrid: self at: 5 @ 5.

SKCloverleaf newInGrid: self at: 4@4.
^SKKara newInGrid: self at: 1@2.
SKTrunk newInGrid: self at: 4 @ 5.
SKTrunk newInGrid: self at: 3 @ 5.

SKCloverleaf newInGrid: self at: 4 @ 4.
^SKKara newInGrid: self at: 1 @ 2.

]

Expand Down
9 changes: 0 additions & 9 deletions src/SqueakKara-Core/SKKaraDecorator.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,6 @@ SKKaraDecorator >> onCloverleaf [

]

{
#category : #accessing,
#'squeak_changestamp' : 'JJG 6/17/2024 16:34'
}
SKKaraDecorator >> setRealKara: anObject [

kara := anObject
]

{
#category : #'SKKara functions',
#'squeak_changestamp' : 'EB 6/11/2024 10:01'
Expand Down
20 changes: 17 additions & 3 deletions src/SqueakKara-Core/SKWorkspace.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ SKWorkspace class >> newWithKara: aKara [

{
#category : #commands,
#'squeak_changestamp' : 'KD 6/12/2024 11:52'
#'squeak_changestamp' : 'JJG 6/18/2024 18:43'
}
SKWorkspace >> close [

self abandon.
self changed: #close
]

{
Expand Down Expand Up @@ -79,12 +79,26 @@ SKWorkspace >> kara: aKara [

{
#category : #accessing,
#'squeak_changestamp' : 'KD 6/12/2024 12:07'
#'squeak_changestamp' : 'JJG 6/18/2024 11:09'
}
SKWorkspace >> userCode [

"user code with appended other stuff"

|code|

code := self contents.
^ code
]

{
#category : #accessing,
#'squeak_changestamp' : 'JJG 6/18/2024 11:10'
}
SKWorkspace >> userCode: aString [

"to be used only for testing"

self contents: aString

]
158 changes: 158 additions & 0 deletions src/SqueakKara-Tests/SKEnvironmentTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
Class {
#name : #SKEnvironmentTest,
#superclass : #TestCase,
#instVars : [
'environment'
],
#category : #'SqueakKara-Tests'
}

{
#category : #accessing,
#'squeak_changestamp' : 'JJG 6/18/2024 11:14'
}
SKEnvironmentTest >> environment [

^ environment
]

{
#category : #setup,
#'squeak_changestamp' : 'JJG 6/18/2024 11:33'
}
SKEnvironmentTest >> setUp [

environment := (SKEnvironment newWithKaraAt: 1 @ 1)
]

{
#category : #setup,
#'squeak_changestamp' : 'JJG 6/18/2024 18:44'
}
SKEnvironmentTest >> tearDown [

self environment close

]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 11:40'
}
SKEnvironmentTest >> testCreation [

self assert: self environment kara coordinates = (1 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 18:19'
}
SKEnvironmentTest >> testDetectCloverleaf [

self environment workspace userCode: 'kara onCloverleaf ifTrue: [kara move]'.
SKCloverleaf newInGrid: self environment grid at: 1 @ 1.
self environment run.
self environment executer step.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (2 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 18:18'
}
SKEnvironmentTest >> testDetectNoCloverleaf [

self environment workspace userCode: 'kara onCloverleaf ifTrue: [kara move]'.
self environment run.
self environment executer step.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (1 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 18:21'
}
SKEnvironmentTest >> testDetectNoTrunk [

self environment workspace userCode: 'kara trunkAhead ifTrue: [kara turn: right. kara move]'.
self environment run.
self environment executer step.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (1 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 19:04'
}
SKEnvironmentTest >> testDetectTrunk [

self environment workspace userCode: 'kara trunkAhead ifTrue: [kara turn: right. kara move]'.
SKTrunk newInGrid: self environment grid at: 2 @ 1.
self environment run.
self environment executer step.
self environment executer step.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (1 @ 2)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 12:17'
}
SKEnvironmentTest >> testMove [

self environment workspace userCode: 'kara move'.
self environment run.
self environment executer step.
self assert: self environment kara coordinates = (2 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 19:06'
}
SKEnvironmentTest >> testMoveTwice [

self environment workspace userCode: 'kara move. kara move'.
self environment run.
self environment executer step.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (3 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 19:07'
}
SKEnvironmentTest >> testTurnLeftMove [

self environment kara coordinates: (2 @ 2).
self environment workspace userCode: 'kara turn: left. kara move'.
self environment run.
self environment executer step.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (2 @ 1)
]

{
#category : #testing,
#'squeak_changestamp' : 'JJG 6/18/2024 12:20'
}
SKEnvironmentTest >> testTurnRightMove [

self environment workspace userCode: 'kara turn: right. kara move'.
self environment run.
self environment executer step.
self environment executer step.
self assert: self environment kara coordinates = (1 @ 2)
]
Loading

0 comments on commit 0a17ddc

Please sign in to comment.