Levente Uzonyi uploaded a new version of CollectionsTests to project The Trunk:
http://source.squeak.org/trunk/CollectionsTests-ul.139.mcz==================== Summary ====================
Name: CollectionsTests-ul.139
Author: ul
Time: 4 February 2010, 2:12:42.253 am
UUID: daca3284-58c0-6049-9575-44cc4e09e097
Ancestors: CollectionsTests-ar.138
- some tests for WeakRegistry
=============== Diff against CollectionsTests-ar.138 ===============
Item was added:
+ ----- Method: WeakRegistryTest>>testGrowingByAHighPriorityProcessDoesntLeak (in category 'as yet unclassified') -----
+ testGrowingByAHighPriorityProcessDoesntLeak
+
+ | w finalized block object executor semaphore |
+ w := WeakRegistry new: 1.
+ finalized := false.
+ block := [ :v | finalized := v ].
+ object := Object new.
+ executor := ObjectFinalizer new
+ receiver: block
+ selector: #value:
+ argument: true;
+ yourself.
+ w add: object executor: executor.
+ semaphore := Semaphore new.
+ [
+ object := nil. "let it go"
+ w addAll: (1 to: 1000). "force growing"
+ semaphore signal ]
+ forkAt: WeakArray runningFinalizationProcess priority + 1.
+ semaphore wait.
+ Smalltalk garbageCollect. "finalize it"
+ self assert: w size = 1000.
+ self assert: finalized!
Item was added:
+ ----- Method: WeakRegistryTest>>testFinalization (in category 'as yet unclassified') -----
+ testFinalization
+
+ | w finalized block object |
+ w := WeakRegistry new: 1.
+ finalized := false.
+ block := [ :v | finalized := v ].
+ object := ObjectFinalizer new "an object that responds to #finalize"
+ receiver: block
+ selector: #value:
+ argument: true;
+ yourself.
+ w add: object.
+ object := nil. "let it go"
+ Smalltalk garbageCollect. "finalize it"
+ self assert: w isEmpty.
+ self assert: finalized!
Item was added:
+ ClassTestCase subclass: #WeakRegistryTest
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'CollectionsTests-Weak'!
Item was added:
+ ----- Method: WeakRegistryTest>>testGrowingDoesntLeak (in category 'as yet unclassified') -----
+ testGrowingDoesntLeak
+
+ | w finalized block object executor |
+ w := WeakRegistry new: 1.
+ finalized := false.
+ block := [ :v | finalized := v ].
+ object := Object new.
+ executor := ObjectFinalizer new
+ receiver: block
+ selector: #value:
+ argument: true;
+ yourself.
+ w add: object executor: executor.
+ object := nil. "let it go"
+ w addAll: (1 to: 1000). "force growing"
+ Smalltalk garbageCollect. "finalize it"
+ self assert: w size = 1000.
+ self assert: finalized!