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