Skip to content

Commit 536f974

Browse files
authored
Merge pull request #14 from YannickChevalier/13-add_request
Addition of a add: anElement unless: aPresentelementSatisties for issue 13
2 parents 096cf73 + bf333d8 commit 536f974

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

src/Containers-Queue-Tests/CTQueueTest.class.st

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,3 +421,22 @@ CTQueueTest >> testSize [
421421
queue dequeue.
422422
self assert: queue size equals: 2
423423
]
424+
425+
{ #category : 'tests' }
426+
CTQueueTest >> testEnqueueUnless [
427+
queue enqueue: 1 unless: [ :v | (v rem: 2) = 0].
428+
self assert: (queue includes: 1).
429+
self assert: queue size equals: 1 .
430+
queue enqueue: 2 unless: [ :v | (v rem: 2) = 0].
431+
self assert: (queue includes: 1).
432+
self assert: (queue includes: 2) .
433+
self assert: queue size equals: 2 .
434+
queue enqueue: 4 unless: [ :v | (v rem: 2) = 0].
435+
self assert: (queue includes: 1).
436+
self assert: (queue includes: 2) .
437+
self assert: queue size equals: 2 .
438+
queue enqueue: 3 unless: [ :v | (v rem: 2) = 0].
439+
self assert: (queue includes: 1).
440+
self assert: (queue includes: 2) .
441+
self assert: queue size equals: 2
442+
]

src/Containers-Queue/CTQueue.class.st

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,19 @@ CTQueue >> enqueue: anObject [
105105
size := size + 1.
106106
^ self
107107
]
108+
{ #category : 'adding' }
109+
CTQueue >> enqueue: anObject unless: thisTestIsTrue [
110+
1 to: self size do: [ :i |
111+
( thisTestIsTrue value: (elements at: (self indexAt: i - 1 ) ) ) ifTrue: [ ^ self ]
112+
].
113+
self isFull ifTrue: [ self grow ].
114+
115+
elements at: rearIndex put: anObject.
116+
rearIndex := self nextIndex: rearIndex.
117+
size := size + 1.
118+
^ self
119+
]
120+
108121

109122
{ #category : 'adding' }
110123
CTQueue >> enqueueAll: aCollection [
@@ -217,3 +230,4 @@ CTQueue >> size [
217230

218231
^ size
219232
]
233+

0 commit comments

Comments
 (0)