RegressionTests__DeepCopyTests.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: 963
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
114
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
     2
158
0d741c461dfc moved to namespace
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
     3
"{ NameSpace: RegressionTests }"
0d741c461dfc moved to namespace
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
     4
114
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
     5
TestCase subclass:#DeepCopyTests
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
     6
	instanceVariableNames:''
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
     7
	classVariableNames:''
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
     8
	poolDictionaries:''
181
a56517005229 category change
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
     9
	category:'tests-Regression'
114
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    10
!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    11
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    12
!DeepCopyTests class methodsFor:'documentation'!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    13
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    14
documentation
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    15
"
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    16
    documentation to be added.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    17
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    18
    [author:]
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 963
diff changeset
    19
	 (james@miraculix)
114
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    20
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    21
    [see also:]
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    22
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    23
    [instance variables:]
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    24
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    25
    [class variables:]
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    26
"
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    27
!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    28
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    29
history
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    30
    "Created: / 25.10.2001 / 11:32:08 / james"
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    31
! !
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    32
963
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    33
!DeepCopyTests methodsFor:'helpers'!
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    34
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    35
makeBlock
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    36
    "although you cannot copy lock closures in st/x, it should at least not crash the system..."
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    37
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    38
    ^ self makeBlockHelper:[ 0 ].
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    39
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    40
    "
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    41
     self new makeBlock
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    42
    "
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    43
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    44
    "Created: / 02-08-2013 / 17:30:04 / cg"
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    45
!
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    46
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    47
makeBlockHelper:blockIn
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    48
    "although you cannot copy lock closures in st/x, it should at least not crash the system..."
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    49
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    50
    ^ #(1 2 3) at:4 ifAbsent:[^ blockIn ]
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    51
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    52
    "Created: / 02-08-2013 / 17:30:28 / cg"
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    53
! !
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    54
114
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    55
!DeepCopyTests methodsFor:'tests'!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    56
963
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    57
testBlockCopy1
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    58
    "although you cannot copy lock closures in st/x, it should at least not crash the system..."
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    59
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    60
    |original copy|
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    61
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    62
    original := self makeBlock.
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    63
    copy := original deepCopy
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    64
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    65
    "
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    66
     self basicNew testBlockCopy1
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    67
    "
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    68
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    69
    "Created: / 02-08-2013 / 17:29:46 / cg"
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    70
!
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
    71
114
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    72
testCopyTwoLevel
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    73
    |original copy elL1 elL2 elL3 copyOfElL1|
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    74
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    75
    original := Array new:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    76
    original at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    77
    original at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    78
    original at:3 put:(elL1 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    79
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    80
    elL1 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    81
    elL1 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    82
    elL1 at:3 put:(elL2 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    83
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    84
    elL2 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    85
    elL2 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    86
    elL2 at:3 put:(elL3 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    87
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    88
    elL3 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    89
    elL3 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    90
    elL3 at:3 put:(Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    91
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    92
    copy := original copyTwoLevel.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    93
    self assert:( (original at:2) ~~ (copy at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    94
    self assert:( (original at:3) ~~ (copy at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    95
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    96
    copyOfElL1 := copy at:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    97
    self assert:( (elL1 at:2) == (copyOfElL1 at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    98
    self assert:( (elL1 at:3) == (copyOfElL1 at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
    99
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   100
    "
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   101
     self basicNew testCopyTwoLevel
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   102
    "
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   103
!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   104
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   105
testToLevel2
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   106
     |original copy elL1 elL2 elL3 copyOfElL1|
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   107
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   108
     original := Array new:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   109
     original at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   110
     original at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   111
     original at:3 put:(elL1 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   112
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   113
     elL1 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   114
     elL1 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   115
     elL1 at:3 put:(elL2 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   116
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   117
     elL2 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   118
     elL2 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   119
     elL2 at:3 put:(elL3 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   120
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   121
     elL3 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   122
     elL3 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   123
     elL3 at:3 put:(Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   124
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   125
     copy := original copyToLevel:2.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   126
     self assert:( (original at:2) ~~ (copy at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   127
     self assert:( (original at:3) ~~ (copy at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   128
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   129
     copyOfElL1 := copy at:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   130
     self assert:( (elL1 at:2) == (copyOfElL1 at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   131
     self assert:( (elL1 at:3) == (copyOfElL1 at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   132
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   133
    "
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   134
     self basicNew testToLevel2
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   135
    "
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   136
!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   137
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   138
testToLevel3
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   139
     |original copy elL1 elL2 elL3 copyOfElL1 copyOfElL2|
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   140
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   141
     original := Array new:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   142
     original at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   143
     original at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   144
     original at:3 put:(elL1 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   145
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   146
     elL1 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   147
     elL1 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   148
     elL1 at:3 put:(elL2 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   149
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   150
     elL2 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   151
     elL2 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   152
     elL2 at:3 put:(elL3 := Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   153
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   154
     elL3 at:1 put:1234.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   155
     elL3 at:2 put:'hello'.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   156
     elL3 at:3 put:(Array new:3).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   157
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   158
     copy := original copyToLevel:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   159
     self assert:( (original at:2) ~~ (copy at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   160
     self assert:( (original at:3) ~~ (copy at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   161
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   162
     copyOfElL1 := copy at:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   163
     self assert:( (elL1 at:2) ~~ (copyOfElL1 at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   164
     self assert:( (elL1 at:3) ~~ (copyOfElL1 at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   165
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   166
     copyOfElL2 := copyOfElL1 at:3.
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   167
     self assert:( (elL2 at:2) == (copyOfElL2 at:2) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   168
     self assert:( (elL2 at:3) == (copyOfElL2 at:3) ).
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   169
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   170
    "
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   171
     self basicNew testToLevel3
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   172
    "
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   173
! !
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   174
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   175
!DeepCopyTests class methodsFor:'documentation'!
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   176
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   177
version
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   178
    ^ '$Header$'
4bc8e8c6c4fc initial checkin
james
parents:
diff changeset
   179
! !
963
50736877d51d class: RegressionTests::DeepCopyTests
Claus Gittinger <cg@exept.de>
parents: 181
diff changeset
   180