RegressionTests__WeakCollectionTest.st
author Claus Gittinger <cg@exept.de>
Wed, 27 Apr 2005 13:40:26 +0200
changeset 266 7abd1fd501a5
parent 181 a56517005229
child 868 745b639be55b
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'exept:regression' }"
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#WeakCollectionTest
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
181
a56517005229 category change
Claus Gittinger <cg@exept.de>
parents: 146
diff changeset
     9
	category:'tests-Regression'
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!WeakCollectionTest methodsFor:'tests'!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
fetchValueAtKey:k from:aWeakValueDict
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
    ^ aWeakValueDict at:k
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
     self run:#testWeakValueDictionary3
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
fetchValueAtKey:k from:aWeakValueDict ifAbsent:exArg
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
    ^ aWeakValueDict at:k ifAbsent:exArg
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
     self run:#testWeakValueDictionary3
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
testWeakValueDictionary1
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
    |ww N|
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    N := 10000.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    ww := WeakValueDictionary new.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    1 "100" timesRepeat:[
266
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    41
	(1 to:N) do:[:idx |
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    42
	    |k v|
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
266
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    44
	    k := 'k_' , idx printString , '_12345678901234567890'.
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    45
	    v := 'v_' , idx printString , '_12345678901234567890'.
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    46
	    ww at:k put:v.
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    47
	].
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
266
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    49
	(1 to:N) do:[:idx |
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    50
	    |k v|
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
266
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    52
	    k := 'k_' , idx printString , '_12345678901234567890'.
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    53
	    v := ww at:k ifAbsent:nil.
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    54
	    v notNil ifTrue:[
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    55
		self halt.
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    56
	    ]
7abd1fd501a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    57
	].
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    ].
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
     self run:#testWeakValueDictionary1
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
testWeakValueDictionary2
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    |ww k v|
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    ww := WeakValueDictionary new.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    k := 'k_' , 1 printString , '_12345678901234567890'.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    v := 'v_' , 1 printString , '_12345678901234567890'.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    ww at:k put:v.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    self assert: ( (ww at:k) == v ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    self assert: ( (ww at:k) == v ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    v := v copy.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self assert: ( (ww at:k) = v ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    self assert: ( (ww at:k ifAbsent:nil) == nil ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
     self run:#testWeakValueDictionary2
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
testWeakValueDictionary3
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    |ww k v v2|
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    ww := WeakValueDictionary new.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    k := 'k_' , 1 printString , '_12345678901234567890'.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    v := 'v_' , 1 printString , '_12345678901234567890'.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    ww at:k put:v.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    v2 := self fetchValueAtKey:k from:ww.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    self assert: ( v2 == v ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    v2 := nil.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    v := v copy.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    v2 := self fetchValueAtKey:k from:ww ifAbsent:nil.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    self assert: ( v2 == nil ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    v2 := nil.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
     self run:#testWeakValueDictionary3
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
! !
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
!WeakCollectionTest class methodsFor:'documentation'!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
version
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    ^ '$Header$'
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
! !