RegressionTests__MutabilityTest.st
author Stefan Vogel <sv@exept.de>
Tue, 11 Jun 2019 10:34:41 +0200
changeset 2321 32ea6329f5ad
parent 2313 aada90d91658
child 2324 98d710589596
permissions -rw-r--r--
class: stx_goodies_regression class changed: #classNamesAndAttributes make classes autoloaded that stc cannot compile (yet)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2305
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
     1
"{ Encoding: utf8 }"
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
     2
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/regression' }"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
"{ NameSpace: RegressionTests }"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
TestCase subclass:#MutabilityTest
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	instanceVariableNames:''
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	category:'tests-Regression-Numbers'
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
!MutabilityTest class methodsFor:'documentation'!
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
documentation
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    documentation to be added.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
    class:
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
        <a short class summary here, describing what instances represent>
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    responsibilities:    
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
        <describing what my main role is>
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
    collaborators:    
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
        <describing with whom and how I talk to>
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
    API:
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
        <public api and main messages>
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
        
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    example:
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
        <a one-line examples on how to use - can also be in a separate example method>
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
    implementation:
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
        <implementation points>
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    [author:]
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
        Claus Gittinger
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    [instance variables:]
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    [class variables:]
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    [see also:]
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
! !
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!MutabilityTest methodsFor:'tests'!
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
test01_immutability
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    "literals are immutable - if specified so"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    |arr arr2|
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
2305
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
    57
    self skipIf:(self class compiledMethodAt:#test01_immutability)
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
    58
                byteCode isNil
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
    59
         description:'skipped because stc-compiled literals are always immutable'.
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
    60
         
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    arr := #[1 2 3 4].
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    "/ unboxed s8
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    arr := #s8(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    "/ unboxed s16
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    arr := #s16(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    "/ unboxed s32
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
    88
    "/ arr := #s32(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "/ unboxed s64
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    arr := #s64(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "/ unboxed u1
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    arr := #u1(0 1 1 0).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    self should:[arr at:1 put:1] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    self shouldnt:[arr2 at:1 put:1] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    self should:[arr2 at:1 put:2] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    "/ unboxed u8
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    arr := #u8(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    "/ unboxed u16
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    arr := #u16(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    "/ unboxed u32
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    arr := #u32(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    "/ unboxed u64
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    arr := #s64(1 2 3 4).
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    "/ unboxed f16
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   152
    "/arr := #f16(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    "/ unboxed f32
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   161
    "/arr := #f32(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    "/ unboxed f64
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   170
    "/arr := #f64(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    self assert:(arr isImmutable).  "/ because it comes from a literal
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    self should:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    arr2 := arr copy.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    self assert:(arr2 isImmutable not). 
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    self shouldnt:[arr2 at:1 put:10] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    "
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
     self run:#test01_mutability
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
     self new test01_mutability
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    "
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    "Created: / 09-06-2019 / 15:49:37 / Claus Gittinger"
2305
2df2743279fd #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 2296
diff changeset
   184
    "Modified: / 10-06-2019 / 20:50:21 / Claus Gittinger"
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
!
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
test02_mutability
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    "literals are mutable - if specified so"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    |arr|
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   193
   "/ arr := #[1 2 3 4].
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    "/ unboxed s8
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   198
   "/ arr := #s8(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "/ unboxed s16
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   203
    "/arr := #s16(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    "/ unboxed s32
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   208
    "/arr := #s32(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    "/ unboxed s64
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   213
   "/ arr := #s64(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    "/ unboxed u1
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   218
    "/arr := #u1(0 1 1 0).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    self shouldnt:[arr at:1 put:1] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
    self should:[arr at:1 put:2] raise:Error.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    "/ unboxed u8
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   224
    "/arr := #u8(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    "/ unboxed u16
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   229
    "/arr := #u16(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    "/ unboxed u32
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   234
    "/arr := #u32(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    "/ unboxed u64
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   239
    "/arr := #s64(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    "/ unboxed f16
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   244
    "/ arr := #f16(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
    "/ unboxed f32
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   249
    "/arr := #f32(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    "/ unboxed f64
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   254
    "/arr := #f64(1 2 3 4).
2296
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    self assert:(arr isImmutable not).  "/ because I specifid so
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    self shouldnt:[arr at:1 put:10] raise:NoModificationError.
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    "
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
     self run:#test01_mutability
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
     self new test01_mutability
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    "
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
    "Created: / 09-06-2019 / 15:49:46 / Claus Gittinger"
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
! !
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
!MutabilityTest class methodsFor:'documentation'!
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
version_CVS
7138d2e03876 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    ^ '$Header$'
2313
aada90d91658 *** empty log message ***
sr
parents: 2305
diff changeset
   270
! !