RegressionTests__CacheDictionaryTest.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 18:53:03 +0200
changeset 2327 bf482d49aeaf
parent 1939 9a6e4956515f
permissions -rw-r--r--
#QUALITY by exept class: RegressionTests::StringTests added: #test82c_expanding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1939
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
     1
"{ Encoding: utf8 }"
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
     2
1931
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
TestCase subclass:#CacheDictionaryTest
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	instanceVariableNames:''
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	category:'tests-Regression-Collections'
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
!CacheDictionaryTest methodsFor:'testing'!
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
testAdd
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    "(self run: #testAdd)"
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
    | dict |
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    dict := CacheDictionary new:4.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
    self assert: (dict isEmpty).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    dict add:(1->'one').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
    self assert: (dict size == 1).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
    dict add:(2->'two').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    self assert: (dict size == 2).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
    dict add:(3->'three').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
    self assert: (dict size == 3).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
    dict add:(4->'four').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
    self assert: (dict size == 4).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    dict add:(5->'five').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
    self assert: (dict size == 5).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    dict add:(6->'six').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    self assert: (dict size == 6).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    dict add:(7->'seven').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    self assert: (dict size == 7).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    dict add:(8->'eight').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    self assert: (dict size == 7).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    dict add:(9->'nine').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    self assert: (dict size == 7).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
testAddRemove
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    "(self run: #testAddRemove)"
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    | dict notThere wasRemoved toRemove keysBefore keysAfter|
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    dict := CacheDictionary new:4.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    self assert: (dict isEmpty).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    1 to:50 do:[:i | dict at:i put:i printString].
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    self assert: (dict size == 7).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    self assert:(dict includesKey:17) not.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    notThere := false.    
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    wasRemoved := (dict removeKey:17 ifAbsent:[ notThere := true. nil ]) notNil.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    self assert:notThere.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    self assert:wasRemoved not.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    self assert:(dict size == 7).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    toRemove := dict keys first.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    self assert:(dict includesKey:toRemove).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    notThere := false.    
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    wasRemoved := (dict removeKey:toRemove ifAbsent:[ notThere := true. nil ]) notNil.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    self assert:notThere not.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    self assert:wasRemoved.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    self assert:(dict size == 6).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    keysBefore := dict keys copy.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self assert:(dict size == keysBefore size).
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    dict add:(99->'99').
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    keysAfter := dict keys copy.
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    self assert:(dict size == keysAfter size).
1939
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    84
!
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    85
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    86
testSizes
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    87
    "(self run: #testAddRemove)"
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    88
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    89
    | dict origCapacity|
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    90
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    91
    dict := CacheDictionary new:500.
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    92
    self assert: (dict isEmpty).
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    93
    self assert: ((origCapacity := dict capacity) >= 500).
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    94
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    95
    1 to:50 do:[:i | dict at:i put:i printString].
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    96
    self assert: (dict size == 50).
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    97
    self assert: (origCapacity == dict capacity).
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    98
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
    99
    1 to:50 do:[:i | dict removeKey:i ifAbsent:[]].
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
   100
    self assert: (dict size == 0).
9a6e4956515f #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1931
diff changeset
   101
    self assert: (origCapacity == dict capacity).
1931
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
! !
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
!CacheDictionaryTest class methodsFor:'documentation'!
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
version
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    ^ '$Header$'
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
version_CVS
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    ^ '$Header$'
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
! !
bdc99c92a5a6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113