RegressionTests__WeakCollectionTest.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 1447 2351db93aa5b
child 1500 d406a10b2965
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
146
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:''
1061
34aa7fc79330 category
Claus Gittinger <cg@exept.de>
parents: 868
diff changeset
     9
	category:'tests-Regression-Collections'
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
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    13
!WeakCollectionTest methodsFor:'helpers'!
146
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
    "
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    31
! !
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    32
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    33
!WeakCollectionTest methodsFor:'tests'!
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
868
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    35
testWeakIdentityDictionary1
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    36
    |w o1 o2|
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    37
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    38
    w := WeakIdentityDictionary new.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    39
    o1 := Object new.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    40
    o2 := Object new.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    41
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    42
    w at:o1 put:'o1'.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    43
    w at:o2 put:'o2'.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    44
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    45
    ObjectMemory garbageCollect.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    46
    ObjectMemory finalize.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    47
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    48
    self assert:(w size == 2).
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    49
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    50
    o1 := nil.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
    51
868
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    52
    ObjectMemory garbageCollect.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    53
    ObjectMemory finalize.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    54
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    55
    self assert:(w size == 1).
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    56
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    57
    o2 := nil.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    58
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    59
    ObjectMemory garbageCollect.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    60
    ObjectMemory finalize.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    61
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    62
    self assert:(w size == 0).
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    63
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    64
    "
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    65
     self run:#testWeakIdentityDictionary1
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    66
    "
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    67
!
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    68
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    69
testWeakIdentityDictionary2
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    70
    |w o1 o2|
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    71
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    72
    w := WeakIdentityDictionary new.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    73
    o1 := '1' copy.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    74
    o2 := '2' copy.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    75
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    76
    w at:o1 put:'o1'.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    77
    w at:o2 put:'o2'.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    78
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    79
    ObjectMemory garbageCollect.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    80
    ObjectMemory finalize.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    81
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    82
    self assert:(w size == 2).
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    83
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    84
    o1 := nil.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
    85
868
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    86
    ObjectMemory garbageCollect.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    87
    ObjectMemory finalize.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    88
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    89
    self assert:(w size == 1).
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    90
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    91
    o2 := nil.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    92
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    93
    ObjectMemory garbageCollect.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    94
    ObjectMemory finalize.
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    95
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    96
    self assert:(w size == 0).
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    97
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    98
    "
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
    99
     self run:#testWeakIdentityDictionary1
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
   100
    "
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
   101
!
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
   102
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
testWeakValueDictionary1
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   104
    |ww n|
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   106
    n := 10000.
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    ww := WeakValueDictionary new.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    1 "100" timesRepeat:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   111
	(1 to:n) do:[:idx |
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   112
	    |k v|
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   114
	    k := 'k_' , idx printString , '_12345678901234567890'.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   115
	    v := 'v_' , idx printString , '_12345678901234567890'.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   116
	    ww at:k put:v.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   117
	    k := v := nil.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   118
	].
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   120
	ObjectMemory garbageCollect.
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   121
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   122
	1 to:n do:[:idx |
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   123
	    |k v|
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   125
	    k := 'k_' , idx printString , '_12345678901234567890'.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   126
	    v := ww at:k ifAbsent:nil.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   127
	    self assert:v isNil.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   128
	].
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    ].
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
     self run:#testWeakValueDictionary1
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
testWeakValueDictionary2
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   137
    |ww k v v1|
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    ww := WeakValueDictionary new.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   143
    k := 'k_12345678901234567890' copy.
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   144
    v := 'v_12345678901234567890' copy.
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    ww at:k put:v.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    self assert: ( (ww at:k) == v ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    self assert: ( (ww at:k) == v ).
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   150
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   151
    v1 := v copy.
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   152
    v := nil.
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   153
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   154
    "/ now the original v is not referenced any longer and should be garbage collected
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   155
    self assert: ( (ww at:k) ~~ v1 ).
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   156
    self assert: ( (ww at:k) = v1 ).
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   157
1439
a51a503a55b8 #OTHER by mawalch
mawalch
parents: 1302
diff changeset
   158
    "/ give background finalizer a chance to run.
a51a503a55b8 #OTHER by mawalch
mawalch
parents: 1302
diff changeset
   159
    2 timesRepeat:[ ObjectMemory scavenge. Delay waitForSeconds:0.5 ].
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   160
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   161
"/    self assert: ( ww size = 0 ).
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   162
    self assert: ( (ww at:k ifAbsent:nil) isNil ).
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
     self run:#testWeakValueDictionary2
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
testWeakValueDictionary3
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    |ww k v v2|
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ww := WeakValueDictionary new.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    ObjectMemory scavenge.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   177
    k := 'k_12345678901234567890' copy.
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   178
    v := 'v_12345678901234567890' copy.
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    ww at:k put:v.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    v2 := self fetchValueAtKey:k from:ww.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    self assert: ( v2 == v ).
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    v2 := nil.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    v := v copy.
1439
a51a503a55b8 #OTHER by mawalch
mawalch
parents: 1302
diff changeset
   186
    2 timesRepeat:[ ObjectMemory scavenge. Delay waitForSeconds:0.5 ].
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    v2 := self fetchValueAtKey:k from:ww ifAbsent:nil.
1302
8149bc9ff84f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   188
    self assert: ( v2 isNil ).
146
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    v2 := nil.
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
     self run:#testWeakValueDictionary3
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    "
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
! !
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!WeakCollectionTest class methodsFor:'documentation'!
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
version
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    ^ '$Header$'
b86931293eb3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
! !
868
745b639be55b class: RegressionTests::WeakCollectionTest
Claus Gittinger <cg@exept.de>
parents: 266
diff changeset
   202