RegressionTests__DictionaryTest.st
author Claus Gittinger <cg@exept.de>
Tue, 25 Feb 2020 17:19:49 +0100
changeset 2586 7dc7be5a6f3d
parent 2343 f639bb06d701
permissions -rw-r--r--
#OTHER by cg s
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2343
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
     1
"{ Encoding: utf8 }"
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
     2
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1055
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
TestCase subclass:#DictionaryTest
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
     8
	instanceVariableNames:'dictionaryClass'
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
1055
0d0b2641d00b category
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
    11
	category:'tests-Regression-Collections'
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
2166
a93ab3a63417 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 2008
diff changeset
    15
!DictionaryTest methodsFor:'initialize / release'!
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    16
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    17
setUp
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    18
    dictionaryClass := Dictionary.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    19
"/    dictionaryClass := SmallDictionary.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    20
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    21
    "Created: / 14-09-2018 / 16:38:30 / Stefan Vogel"
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    22
! !
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    23
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!DictionaryTest methodsFor:'testing'!
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
2343
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
    26
test01_AddAll
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    27
        "(self run: #testAddAll)"
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1055
diff changeset
    28
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    29
        | dict1 dict2 |
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    30
        dict1 := dictionaryClass new.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    31
        dict1 at: #a put:1 ; at: #b put: 2.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    32
        dict2 := dictionaryClass new.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    33
        dict2 at: #a put: 3 ; at: #c put: 4.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    34
        dict1 addAll: dict2.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    35
        self assert: (dict1 at: #a) = 3.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    36
        self assert: (dict1 at: #b) = 2.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    37
        self assert: (dict1 at: #c) = 4.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    38
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    39
    "Modified: / 14-09-2018 / 16:38:54 / Stefan Vogel"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
2343
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
    42
test02_AssociationsSelect
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    44
        "(self selector: #testAssociationsSelect) run"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    46
        | answer d|
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    48
        d := dictionaryClass new.
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    49
        d at: (Array with: #hello with: #world) put: #fooBar.
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    50
        d at: Smalltalk put: #'Smalltalk is the key'.
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    51
        d at: #Smalltalk put: Smalltalk.
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    53
        answer := d associationsSelect:
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    54
                [:assoc | (assoc key == #Smalltalk) and: [assoc value == Smalltalk]].
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    55
        self should: [answer isKindOf: dictionaryClass].
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    56
        self should: [answer size == 1].
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    57
        self should: [(answer at: #Smalltalk) == Smalltalk].
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    59
        answer := d associationsSelect:
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    60
                [:assoc | (assoc key == #NoSuchKey) and: [assoc value == #NoSuchValue]].
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    61
        self should: [answer isKindOf: dictionaryClass].
1547
606e915e2216 #BUGFIX by sr
sr
parents: 1447
diff changeset
    62
        self should: [answer size == 0]
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    63
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    64
    "Modified: / 14-09-2018 / 16:39:05 / Stefan Vogel"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
2343
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
    67
test03_Comma
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    68
        "(self run: #testComma)"
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1055
diff changeset
    69
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    70
        | dict1 dict2 dict3 |
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    71
        dict1 := dictionaryClass new.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    72
        dict1 at: #a put:1 ; at: #b put: 2.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    73
        dict2 := dictionaryClass new.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    74
        dict2 at: #a put: 3 ; at: #c put: 4.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    75
        dict3 := dict1, dict2.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    76
        self assert: (dict3 at: #a) = 3.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    77
        self assert: (dict3 at: #b) = 2.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    78
        self assert: (dict3 at: #c) = 4.
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    79
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    80
    "Modified: / 14-09-2018 / 16:39:14 / Stefan Vogel"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
2343
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
    83
test04_IncludesAssociation
1553
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    84
        "self debug: #testIncludesAssociation"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
1553
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    86
        | d |
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
    87
        d := dictionaryClass new
1553
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    88
                at: #five put: 5;
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    89
                at: #givemefive put: 5;
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    90
                at: #six put: 6;
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    91
                yourself.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1055
diff changeset
    92
1553
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    93
        self assert: (d includesAssociation: (d associationAt: #five)).
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    94
        self assert: (d associationAt: #five) key == #five.
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    95
        self assert: (d associationAt: #five) value == 5.
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    96
        self assert: (d includesAssociation: (#five -> 5)).
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    97
        self assert: (d includesAssociation: (#five -> 6)) not.
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    98
5eecd405c903 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 1547
diff changeset
    99
    "Modified: / 06-12-2016 / 14:19:15 / cg"
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
   100
    "Modified: / 14-09-2018 / 16:39:21 / Stefan Vogel"
1572
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   101
!
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   102
2343
f639bb06d701 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 2166
diff changeset
   103
test05_RemoveAllDeclareAll
1572
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   104
    "self debug: #testRemoveAllDeclareAll"
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   105
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   106
    "/ verifies that we can restore a dictionaries original contents
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   107
    "/ by making a copy of it, then redeclaring from the copy.
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   108
    "/ (needed by the refactorybrowser)
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   109
    
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   110
    | d copyOfIt |
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   111
    
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
   112
    d := dictionaryClass new
1572
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   113
            at: #five put: (5@5);
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   114
            at: #givemefive put: (55@55);
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   115
            at: #six put: (6@6);
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   116
            yourself.
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   117
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   118
    copyOfIt := d copy.
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   119
    d keysAndValuesDo:[:k :v |
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   120
        self assert: (copyOfIt at:k) == v.
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   121
    ].
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   122
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   123
    "/ add something
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   124
    d at:#seven put:(7@7).
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   125
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   126
    "/ removeall - redeclare
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   127
    d removeAll; declareAllFrom:copyOfIt.
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   128
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   129
    self assert: (d size = copyOfIt size).
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   130
    self assert: (d keys = copyOfIt keys).
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   131
    d keysAndValuesDo:[:k :v |
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   132
        self assert: (copyOfIt at:k) == v.
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   133
    ].
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   134
d558d6dc7c45 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 1553
diff changeset
   135
    "Created: / 06-02-2017 / 12:26:22 / cg"
2008
4cfa2ec59dcc #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 1572
diff changeset
   136
    "Modified: / 14-09-2018 / 16:39:28 / Stefan Vogel"
296
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
! !
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
!DictionaryTest class methodsFor:'documentation'!
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
version
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    ^ '$Header$'
ddacf68f6660 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
! !
1055
0d0b2641d00b category
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   144