RegressionTests__BinaryTreeTester.st
author Claus Gittinger <cg@exept.de>
Wed, 10 Dec 2003 10:54:15 +0100
changeset 228 435158e920b8
child 245 efcf384ed8ae
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
228
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'exept:regression' }"
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
TestCase subclass:#BinaryTreeTester
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Collections-Ordered'
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!BinaryTreeTester class methodsFor:'documentation'!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
documentation
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
    documentation to be added.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    [author:]
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
        Claus Gittinger (cg@alan)
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    [instance variables:]
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    [class variables:]
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    [see also:]
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
history
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
    "Created: / 9.12.2003 / 19:34:33 / cg"
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
! !
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
!BinaryTreeTester methodsFor:'initialize / release'!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
setUp
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
    "common setup - invoked before testing."
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
    super setUp
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
tearDown
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    "common cleanup - invoked after testing."
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    super tearDown
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
! !
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!BinaryTreeTester methodsFor:'tests'!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
exhaustive_test03_removing
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    |bt|
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    #(10 9 8 7 6 5 4 3 2 1) permutationsDo:[:sequenceToRemoveElements |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
        bt := BinaryTree new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        bt addAll:#(1 2 3 4 5 6 7 8 9 10).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
        
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
        sequenceToRemoveElements do:[:each |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
            bt remove:each.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
            self assert: ( bt includes:each ) not.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
        ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
        self assert: ( bt size == 0 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        sequenceToRemoveElements do:[:each |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
            bt add:each.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
            self assert: ( bt includes:each ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
        ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
        self assert: ( bt size == 10 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
     self run:#exhaustive_test03_removing
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
     self new exhaustive_test03_removing
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
test01_empty
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    |bt|
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    bt := BinaryTree new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    self assert: ( bt size == 0 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self assert: ( bt isEmpty ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    self assert: ( bt asArray = #() ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     self run:#test01_empty
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     self new test01_empty
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
test02_adding
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    |bt|
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    bt := BinaryTree new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    bt add:1.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    self assert: ( bt size == 1 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    self assert: ( bt notEmpty ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    self assert: ( bt asArray = #(1) ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    bt add:2.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    self assert: ( bt size == 2 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    self assert: ( bt asArray = #(1 2) ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    bt addAll:#(3 4 5 6 7 8 9 10).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    self assert: ( bt size == 10 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    self assert: ( bt asArray = #(1 2 3 4 5 6 7 8 9 10) ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
     self run:#test02_adding
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
     self new test02_adding
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
test03_removing
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    |bt|
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    bt := BinaryTree new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    bt addAll:#(1 2 3 4 5 6 7 8 9 10).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    self assert: ( bt size == 10 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    self assert: ( bt asArray = #(1 2 3 4 5 6 7 8 9 10) ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    #(4 2 1 3 5 6) do:[:toRemove |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
        |t|
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
        bt := BinaryTree new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
        bt addAll:#(1 2 3 4 5 6 7 8 9 10).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
        bt remove:toRemove.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
        self assert: ( bt includes:toRemove ) not.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
        self assert: ( bt size == 9 ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
        t := #(1 2 3 4 5 6 7 8 9 10) asOrderedCollection.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
        t remove:toRemove.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
        self assert:( bt asArray = t asArray ).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
     self run:#test03_removing
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
     self new test03_removing
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
test04_addingRemoving
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    |allSelectors bt|
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    allSelectors := OrderedCollection new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    Smalltalk allClassesDo:[:cls |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
        cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
            allSelectors add:sel.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
        ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    bt := BinaryTree new.
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    allSelectors do:[:sel |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
        bt add:sel
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    self assert:(bt size == allSelectors size).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    allSelectors do:[:sel |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
        self assert:(bt includesIdentical:sel)
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    allSelectors do:[:sel |
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
        bt removeIdentical:sel
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    ].
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    self assert:(bt isEmpty).
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
     self run:#test04_addingRemoving
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
     self new test04_addingRemoving
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
! !
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
!BinaryTreeTester class methodsFor:'documentation'!
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
version
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    ^ '$Header$'
435158e920b8 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
! !