The Trunk: CollectionsTests-dtl.418.mcz

[email protected]
Newsgroups gmane.comp.lang.smalltalk.squeak.general
Message-ID <[email protected]>
David T. Lewis uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-dtl.418.mcz

==================== Summary ====================

Name: CollectionsTests-dtl.418
Author: dtl
Time: 29 April 2026, 6:19:17.620474 pm
UUID: fb5879fe-7134-4f8c-a9f9-13dd4d448cbd
Ancestors: CollectionsTests-ct.417

SharedQueueTest methods to document the management of the internal contents array in a SharedQueue, which will grow and contract as needed. The tests cover private internal behavior, and will fail if private method #makeRoomAtEnd is changed.

=============== Diff against CollectionsTests-ct.417 ===============

Item was added:
+ ----- Method: SharedQueueTest>>testMakeRoomAtEndLargerArrayWrapAround (in category 'tests') -----
+ testMakeRoomAtEndLargerArrayWrapAround
+ 	| queue |
+ 	queue := self queueClass new.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'initial contentsArray has size 10'.
+ 	18 timesRepeat: [queue nextPut: #something].
+ 	18 timesRepeat: [queue nextOrNil].
+ 	queue nextPut: #ONE.
+ 	queue nextPut: #TWO.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 20
+ 		description: 'contentsArray has grown to size 20'.
+ 	self assert: (queue instVarNamed: #writePosition) = 21.
+ 	"next insert will trigger makeRoomAtBeginning"
+ 	queue nextPut: #THREE.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'new contentsArray with smaller size sufficient for queue contents'.
+ 	self assert: (queue instVarNamed: #writePosition) = 4. "wrapped around in new small collection"
+ 	self assert: (queue instVarNamed: #readPosition) = 1.
+ 	"verify nothing lost from the queue after running makeRoomAtBeginning"
+ 	self assert: #ONE equals: queue nextOrNil.
+ 	self assert: #TWO equals: queue nextOrNil.
+ 	self assert: #THREE equals: queue nextOrNil.
+ 	self assert: nil equals: queue nextOrNil.
+ 	self assert: 0 equals: queue size.
+ !

Item was added:
+ ----- Method: SharedQueueTest>>testMakeRoomAtEndSmallArrayExtend (in category 'tests') -----
+ testMakeRoomAtEndSmallArrayExtend
+ 	| queue |
+ 	queue := self queueClass new.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'initial contentsArray has size 10'.
+ 	8 timesRepeat: [queue nextPut: #something].
+ 	queue nextPut: #ONE.
+ 	queue nextPut: #TWO.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'using initial contentsArray with size 10'.
+ 	self assert: (queue instVarNamed: #writePosition) = 11.
+ 	"next insert will trigger makeRoomAtBeginning"
+ 	queue nextPut: #THREE.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 20
+ 		description: 'new contentsArray, size has been doubled'.
+ 	self assert: (queue instVarNamed: #writePosition) = 12.
+ 	"verify nothing lost from the queue after running makeRoomAtBeginning"
+ 	8 timesRepeat: [self assert: #something equals: queue nextOrNil].
+ 	self assert: #ONE equals: queue nextOrNil.
+ 	self assert: #TWO equals: queue nextOrNil.
+ 	self assert: #THREE equals: queue nextOrNil.
+ 	self assert: nil equals: queue nextOrNil.
+ 	self assert: 0 equals: queue size.
+ !

Item was added:
+ ----- Method: SharedQueueTest>>testMakeRoomAtEndSmallArrayWrapAround (in category 'tests') -----
+ testMakeRoomAtEndSmallArrayWrapAround
+ 	| queue |
+ 	queue := self queueClass new.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'initial contentsArray has size 10'.
+ 	8 timesRepeat: [queue nextPut: #something].
+ 	8 timesRepeat: [queue nextOrNil].
+ 	queue nextPut: #ONE.
+ 	queue nextPut: #TWO.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'using initial contentsArray with size 10'.
+ 	self assert: (queue instVarNamed: #writePosition) = 11.
+ 	"next insert will trigger makeRoomAtBeginning"
+ 	queue nextPut: #THREE.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'initial contentsArray has room, continue using it'.
+ 	self assert: (queue instVarNamed: #writePosition) = 4. "wrapped around in same collection"
+ 	self assert: (queue instVarNamed: #readPosition) = 1.
+ 	"verify nothing lost from the queue after running makeRoomAtBeginning"
+ 	self assert: #ONE equals: queue nextOrNil.
+ 	self assert: #TWO equals: queue nextOrNil.
+ 	self assert: #THREE equals: queue nextOrNil.
+ 	self assert: nil equals: queue nextOrNil.
+ 	self assert: 0 equals: queue size.
+ !

Item was added:
+ ----- Method: SharedQueueTest>>testMakeRoomAtEndVeryLargeArrayExtend (in category 'tests') -----
+ testMakeRoomAtEndVeryLargeArrayExtend
+ 	| queue |
+ 	queue := self queueClass new: 10000.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10000
+ 		description: 'large initiaol contentsArray'.
+ 	9998 timesRepeat: [queue nextPut: #something].
+ 	400 timesRepeat: [queue nextOrNil].
+ 	queue nextPut: #ONE.
+ 	queue nextPut: #TWO.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10000
+ 		description: 'contentsArray filled to end'.
+ 	self assert: (queue instVarNamed: #writePosition) = 10001. 
+ 	"next insert will trigger makeRoomAtBeginning"
+ 	queue nextPut: #THREE.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 20000
+ 		description: 'new contentsArray with smaller size sufficient for queue contents'.
+ 	self assert: (queue instVarNamed: #writePosition) = 9602. "wrapped around in new collection of increased size"
+ 	self assert: (queue instVarNamed: #readPosition) = 1.
+ 	"verify nothing lost from the queue after running makeRoomAtBeginning"
+ 	9998 - 400 timesRepeat: [self assert: #something equals: queue nextOrNil].
+ 	self assert: #ONE equals: queue nextOrNil.
+ 	self assert: #TWO equals: queue nextOrNil.
+ 	self assert: #THREE equals: queue nextOrNil.
+ 	self assert: nil equals: queue nextOrNil.
+ 	self assert: 0 equals: queue size.
+ !

Item was added:
+ ----- Method: SharedQueueTest>>testMakeRoomAtEndVeryLargeArrayWrapAround (in category 'tests') -----
+ testMakeRoomAtEndVeryLargeArrayWrapAround
+ 	| queue |
+ 	queue := self queueClass new: 10000.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10000
+ 		description: 'large initiaol contentsArray'.
+ 	9998 timesRepeat: [queue nextPut: #something].
+ 	9998 timesRepeat: [queue nextOrNil].
+ 	queue nextPut: #ONE.
+ 	queue nextPut: #TWO.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10000
+ 		description: 'contentsArray filled to end'.
+ 	self assert: (queue instVarNamed: #writePosition) = 10001.
+ 	"next insert will trigger makeRoomAtBeginning"
+ 	queue nextPut: #THREE.
+ 	self assert: (queue instVarNamed: #contentsArray) size = 10
+ 		description: 'new contentsArray with smaller size sufficient for queue contents'.
+ 	self assert: (queue instVarNamed: #writePosition) = 4. "wrapped around in new small collection"
+ 	self assert: (queue instVarNamed: #readPosition) = 1.
+ 	"verify nothing lost from the queue after running makeRoomAtBeginning"
+ 	self assert: #ONE equals: queue nextOrNil.
+ 	self assert: #TWO equals: queue nextOrNil.
+ 	self assert: #THREE equals: queue nextOrNil.
+ 	self assert: nil equals: queue nextOrNil.
+ 	self assert: 0 equals: queue size.
+ !

Squeak-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.