Skip to content

Commit

Permalink
Test: performing undo on refactoring that has more changes than the U…
Browse files Browse the repository at this point in the history
…ndoSize
  • Loading branch information
balsa-sarenac committed Apr 26, 2024
1 parent 945a477 commit f59f4f0
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 2 deletions.
Expand Up @@ -11,7 +11,7 @@ Class {
{ #category : 'instance creation' }
RBRefactoringChangeManagerPerformChangesTest >> listOfMockChangesWithSize: aNumber [

^ (1 to: aNumber) collect: [ :i | RBRefactoringChangeMock new ]
^ (1 to: aNumber) collect: [ :i | RBRefactoringChangeMock new name: i asString ]
]

{ #category : 'instance creation' }
Expand Down Expand Up @@ -39,3 +39,27 @@ RBRefactoringChangeManagerPerformChangesTest >> testPerformChanges [

self deny: manager hasUndoableOperations
]

{ #category : 'tests' }
RBRefactoringChangeManagerPerformChangesTest >> testPerformChangesWhenChangesBiggerThanUndoSizeExpectCorrectChangesUndone [

| changes undoneChanges |
changes := self listOfMockChangesWithSize: manager class undoSize + 1.
manager performChanges: changes.

undoneChanges := manager undoLastRefactoring.

self assertCollection: undoneChanges first changes asArray equals: changes reversed asArray
]

{ #category : 'tests' }
RBRefactoringChangeManagerPerformChangesTest >> testPerformChangesWhenChangesSmallerThanUndoSizeExpectCorrectChangesUndone [

| changes undoneChanges |
changes := self listOfMockChangesWithSize: 5.
manager performChanges: changes.

undoneChanges := manager undoLastRefactoring.

self assertCollection: undoneChanges first changes asArray equals: changes reversed asArray
]
10 changes: 10 additions & 0 deletions src/Refactoring-Changes-Tests/RBRefactoringChangeMock.class.st
Expand Up @@ -49,6 +49,16 @@ RBRefactoringChangeMock >> one [
^ 1
]

{ #category : 'printing' }
RBRefactoringChangeMock >> printOn: aStream [
"Generate a string representation of the receiver based on its instance variables."

super printOn: aStream.
aStream
nextPutAll: ' name: ';
print: name
]

{ #category : 'accessing' }
RBRefactoringChangeMock >> renameChangesForClass: oldClassName to: newClassName [
"I'm a mock, I do nothing"
Expand Down
3 changes: 2 additions & 1 deletion src/Refactoring-Changes/RBRefactoryChangeManager.class.st
Expand Up @@ -248,7 +248,8 @@ RBRefactoryChangeManager >> undoLastRefactoring [
list := OrderedCollection new.
limit := manager lastUndoPointer .
1 to: limit do:[ :i | list add: manager undoChange ].
list do: [ :e | e execute ]
list do: [ :e | e execute ].
^ list
] asJob
title: 'Refactoring';
run]
Expand Down

0 comments on commit f59f4f0

Please sign in to comment.