RegressionTests__ComplexTest.st
author Patrik Svestka <patrik.svestka@gmail.com>
Tue, 09 Apr 2019 11:18:28 +0200
branchjv
changeset 2214 ba58ef8a6214
parent 1500 d406a10b2965
permissions -rwxr-xr-x
Issue #269: Tests when renaming registy subKey(s)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
     1
"{ Package: 'stx:goodies/regression' }"
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#ComplexTest
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
1066
fe4318fddac9 category
Claus Gittinger <cg@exept.de>
parents: 734
diff changeset
     9
	category:'tests-Regression-Numbers'
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    13
!ComplexTest class methodsFor:'accessing'!
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    14
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    15
testedClasses
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    16
    "for the browser and for coverage analysis:
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    17
     return a collection of classNames, which are tested by this testCase"
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    18
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    19
    ^ #( Complex )
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    20
! !
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    21
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!ComplexTest methodsFor:'tests'!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    24
testAbs
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    25
    | c |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    26
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    27
    c := (6 - 6 i).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    28
    self assert: c abs  = 72 sqrt.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    29
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    30
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    31
     self new testAbs
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    32
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    33
     self run: #testAbs
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    34
     self debug: #testAbs
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    35
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    36
!
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    38
testAddition
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    39
    | c1 c2 c3 |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    40
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    41
    self shouldnt: [ c1 := Complex real: 1 imaginary: 2 ] raise: Exception.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    42
    self shouldnt: [ c2 := Complex real: 3 imaginary: 4 ] raise: Exception.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    43
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    44
    self should: [ (c1 + c2) = (Complex real: 4 imaginary: 6) ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    46
    c3 := (5 - 6 i) + (-5 + 8 i).     "Complex with Complex"
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    47
    self assert: (c3 = (0 + 2 i)).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    48
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    49
    self assert: (c1 + 1)   = (2 + 2 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    50
    self assert: (c1 + 1.0) = (2 + 2 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    51
    self assert: (1 + c1) = (2 + 2 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    52
    self assert: (1.0 + c1) = (2 + 2 i).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    53
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    54
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    55
     self run: #testAddition
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    56
     self new testAddition
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
    57
    "
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    60
testAngle
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    61
    | c |
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    62
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    63
    c := (1 + 1 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    64
    self assert: (c angle radiansToDegrees rounded = 45).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    65
    self assert: (c asPoint x = 1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    66
    self assert: (c asPoint y = 1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    67
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    68
    c := (-1 + 1 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    69
    self assert: (c angle radiansToDegrees rounded = 135).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    70
    self assert: (c asPoint x = -1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    71
    self assert: (c asPoint y = 1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    72
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    73
    c := (-1 - 1 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    74
    self assert: (c angle radiansToDegrees rounded = -135).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    75
    self assert: (c asPoint x = -1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    76
    self assert: (c asPoint y = -1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    77
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    78
    "
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    79
     self new testAngle
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    80
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    81
     self run: #testAngle
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    82
     self debug: #testAngle
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    83
    "
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    84
!
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    85
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    86
testCompare
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    87
    | c1 c2 |
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    88
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    89
    c1 := Complex real: 1 imaginary: 2.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    90
    c2 := Complex real: 3 imaginary: 4.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    91
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    92
    self assert: ( c1 ~= c2 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    93
    self assert: ( c1 = c2 ) not.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    94
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    95
    self should: [ c1 < c2 ] raise: Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    96
    self should: [ c1 <= c2 ] raise: Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    97
    self should: [ c1 >= c2 ] raise: Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    98
    self should: [ c1 > c2 ] raise: Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
    99
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   100
    c1 := Complex fromReal: 1.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   101
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   102
    self assert: ( c1 = 1 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   103
    self assert: ( c1 = 1.0 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   104
    self assert: ( c1 ~= 2 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   105
    self assert: ( c1 ~= 2.0 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   106
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   107
    self assert: ( 1 = c1 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   108
    self assert: ( 1.0 = c1 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   109
    self assert: ( 2 ~= c1 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   110
    self assert: ( 2.0 ~= c1 ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   111
!
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   112
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   113
testConjugated
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   114
    | c |
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   115
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   116
    c := (2 + 5 i) .
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   117
    self assert: c conjugated  = (2 - 5i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   118
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   119
    "
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   120
     self run: #testConjugated
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   121
     self new testConjugated
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   122
    "
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   123
!
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   124
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   125
testConversion
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   126
    | c |
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   127
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   128
    c := Complex fromReal:1.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   129
    self assert: (c asComplex = c).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   130
    self assert: (c asFloat = 1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   131
    self assert: (c asInteger = 1).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   132
    self assert: (c asPoint = (1@0) ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   133
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   134
    c := (1 + 1 i).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   135
    self assert: (c asComplex = c).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   136
    self should:[ c asFloat ] raise:Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   137
    self should:[ c asInteger ] raise:Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   138
    self assert: (c isComplex ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   139
    self assert: (c asPoint = (1@1) ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   140
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   141
    "
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   142
     self new testConversion
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   143
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   144
     self run: #testConversion
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   145
     self debug: #testConversion
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   146
    "
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   147
!
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   148
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
testCreation
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   150
    | c |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   151
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   152
    false ifTrue:[
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   153
	"cg: I dont think this has to be known outside complex"
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   154
	"i.e. should it really be allowed to create complex numbers with new ?"
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   155
	self should: [ (c := Complex new) realPart = 0 ].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   156
	self should: [ c imaginaryPart = 0 ].
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   157
    ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   158
    self should: [ (c := Complex real: 1 imaginary: 2) realPart = 1 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   159
    self should: [ c imaginaryPart = 2 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   160
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   161
    self should: [ (c := Complex real: -1 imaginary: 2) realPart = -1 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   162
    self should: [ c imaginaryPart = 2 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   163
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   164
    self should: [ (c := Complex real: 1 imaginary: -2) realPart = 1 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   165
    self should: [ c imaginaryPart = -2 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   166
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   167
    self should: [ (c := Complex real: -1 imaginary: -2) realPart = -1 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   168
    self should: [ c imaginaryPart = -2 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   169
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   170
    c := (1 % 2).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   171
    self assert: (c real = 1).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   172
    self assert: (c imaginary = 2).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   173
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   174
    c := (-1 % 2).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   175
    self assert: (c real = -1).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   176
    self assert: (c imaginary = 2).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   177
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   178
    c := (1 % -2).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   179
    self assert: (c real = 1).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   180
    self assert: (c imaginary = -2).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   181
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   182
    c := (-1 % -2).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   183
    self assert: (c real = -1).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   184
    self assert: (c imaginary = -2).
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   186
    c := (1.0 % 2.0).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   187
    self assert: (c real = 1.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   188
    self assert: (c imaginary = 2.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   189
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   190
    c := (-1.0 % 2.0).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   191
    self assert: (c real = -1.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   192
    self assert: (c imaginary = 2.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   193
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   194
    c := (1.0 % -2.0).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   195
    self assert: (c real = 1.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   196
    self assert: (c imaginary = -2.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   197
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   198
    c := (-1.0 % -2.0).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   199
    self assert: (c real = -1.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   200
    self assert: (c imaginary = -2.0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   201
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   202
    c := 5 i.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   203
    self assert: (c real = 0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   204
    self assert: (c imaginary = 5).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   205
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   206
    c := 6 + 7 i.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   207
    self assert: (c real = 6).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   208
    self assert: ( c imaginary = 7).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   209
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   210
    c := 5.6 - 8 i.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   211
    self assert: (c real = 5.6).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   212
    self assert: (c imaginary = -8).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   213
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   214
    c := Complex real: 10 imaginary: 5.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   215
    self assert: (c real = 10).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   216
    self assert: (c imaginary = 5).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   217
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   218
    c := Complex abs: 5 arg: (Float pi/2).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   219
    self assert: (c real rounded = 0).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   220
    self assert: (c imaginary = 5).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   221
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   222
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   223
     self run: #testCreation
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   224
     self new testCreation
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   225
    "
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
testDivision
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
	| c1 c2 |
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
	self shouldnt: [ c1 := Complex real: 2 imaginary: 2 ] raise: Exception.
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
	self shouldnt: [ c2 := Complex real: 3 imaginary: 6 ] raise: Exception.
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
	self should: [ (c1 / c1) = (Complex real: 1 imaginary: 0) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
	self should: [ (c1 / c2) = (Complex real: 2/5 imaginary: (-2/15)) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
	self should: [ (c2 / c1) = (Complex real: 9/4 imaginary: 3/4) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
	self should: [ c2 / 3 = (Complex real: 1 imaginary: 2) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
	self should: [ c1 / 2 = (Complex real: 1 imaginary: 1) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
testEquality
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   243
    self should: [ 3 = (Complex real: 3 imaginary: 0) ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   244
    self should: [ (Complex real: 3 imaginary: 0) = 3 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   245
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   246
    self should: [ 3.0 = (Complex real: 3 imaginary: 0) ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   247
    self should: [ (Complex real: 3 imaginary: 0) = 3.0 ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   249
    self shouldnt: [ 3 = (Complex real: 3 imaginary: 1) ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   250
    self shouldnt: [ (Complex real: 3 imaginary: 1) = 3 ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   252
    self shouldnt: [ 3.0 = (Complex real: 3 imaginary: 1) ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   253
    self shouldnt: [ (Complex real: 3 imaginary: 1) = 3.0 ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   255
    self should: [ 3 ~= (Complex real: 3 imaginary: 1) ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   256
    self should: [ (Complex real: 3 imaginary: 1) ~= 3 ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   257
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   258
    self should: [ 3.0 ~= (Complex real: 3 imaginary: 1) ].
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   259
    self should: [ (Complex real: 3 imaginary: 1) ~= 3.0 ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   261
    self assert: 0i = 0.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   262
    self assert: (2 - 5i) = ((1 -4 i) + (1 - 1i)).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   263
    self assert: 0i isZero.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   264
    self deny: (1 + 3 i) = 1.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   265
    self deny: (1 + 3 i) = (1 + 2i).
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   267
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   268
     self run: #testEquality
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   269
     self new testEquality
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   270
    "
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
734
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   273
testFloorCeiling
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   274
    | c1 c2 |
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   275
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   276
    c1 := Complex real: 1 imaginary: 2.
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   277
    c2 := Complex real: 3 imaginary: 4.
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   278
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   279
    self should: [ c1 floor ] raise:Error.
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   280
    self should: [ c1 ceiling ] raise:Error.
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   281
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   282
    "Created: / 02-11-2012 / 10:04:43 / cg"
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   283
!
f43818919707 +testFloorCeiling
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
   284
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
testModulus
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
	| c1 c2 |
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
	"Test case where |a| < |b| in complex number (a + ib)."
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
	self shouldnt: [ c1 := Complex real: 2 imaginary: 3 ] raise: Exception.
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
	self should: [ c1 modulus = (3 * ((1 + ((2 / 3) * (2 / 3))) sqrt)) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
	"Test case where |a| >= |b| in complex number (a + ib)."
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
	self shouldnt: [ c2 := Complex real: 4 imaginary: -2 ] raise: Exception.
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
	self should: [ c2 modulus = (4 * ((1 + ((-2 / 4) * (-2 / 4))) sqrt)) ].
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
testMultiplication
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   300
    | c1 c2 |
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   302
    self shouldnt: [ c1 := Complex real: 1 imaginary: 2 ] raise: Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   303
    self shouldnt: [ c2 := Complex real: 3 imaginary: 4 ] raise: Exception.
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   305
    self should: [ (c1 * c2) = (Complex real: -5 imaginary: 10) ].
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   306
    self should: [ (c1 * Complex zero) = Complex zero ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   308
    self should: [ c1 * 5 = (Complex real: 5 imaginary: 10) ].
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   309
    self should: [ c1 * 1.1 = (Complex real: 1.1 imaginary: 2.2) ].
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   310
    self should: [ c1 * (2/3) = (Complex real: 2/3 imaginary: 4/3) ].
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   311
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   312
    self assert:( 1.0 * c1 = c1 ).
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   315
testNegated
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   316
    | c |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   317
    c := (2 + 5 i) .
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   318
    self assert: c negated  = (-2 - 5i).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   319
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   320
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   321
     self run: #testNegated
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   322
     self new testNegated
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   323
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   324
!
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   325
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
testRaisedTo
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   327
	| c |
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   329
	self shouldnt: [ c := Complex real: 3 imaginary: 2 ] raise: Exception.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   330
	self assert:  ((c raisedTo: 2) = (c * c)).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   331
	self assert:  ((c raisedTo: 3) = (c * c * c)).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   332
	self assert:  ((c raisedTo: 4) = (c * c * c * c)).
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   335
testReciprocal
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   336
    | c |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   337
    c := (2 + 5 i).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   338
    self assert: c reciprocal  = ((2/29) - (5/29)i).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   339
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   340
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   341
     self run: #testReciprocal
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   342
     self new testReciprocal
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   343
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   344
!
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   345
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   346
testReciprocalError
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   347
    | c |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   348
    c := (0 i).
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   349
	self should: [c reciprocal] raise: ZeroDivide
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   350
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   351
     self run: #testReciprocalError
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   352
     self new testReciprocalError
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   353
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   354
!
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   355
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
testSqrt
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   357
	| c w |
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   359
	self shouldnt: [ c := Complex real: 0 imaginary: 0 ] raise: Exception.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   360
	self should: [ c sqrt = 0 ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   362
	self shouldnt: [ c := Complex real: 9 imaginary: 4 ] raise: Exception.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   363
	"cg: that cannot be tested easily, due to rounding errors"
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   364
	"original" false ifTrue:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   365
	    self should: [ w := 3 * (((1 + (1 + ((4/9) * (4/9))) sqrt) / 2) sqrt).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   366
			    c sqrt = (Complex real: w imaginary: 4 / (2 * w)) ].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   367
	] ifFalse:[
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   368
	    self should: [ |t1 t2 epsilon|
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   369
			    w := 3 * (((1 + (1 + ((4/9) * (4/9))) sqrt) / 2) sqrt).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   370
			    t1 := c sqrt.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   371
			    t2 := (Complex real: w imaginary: 4 / (2 * w)).
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   372
			    epsilon := 0.0000001.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   373
			    (t1 realPart - t2 realPart) < epsilon
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   374
			    and:[ (t1 imaginaryPart - t2 imaginaryPart) < epsilon ]
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   375
			 ].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   376
	].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   378
	self shouldnt: [ c := Complex imaginary: -2 ] raise: Exception.
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   379
	"self should: [ c sqrt = (Complex real: 1 imaginary: -1) ].  Should be true, but rounding bites us..."
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   380
	self should: [ (c sqrt realPart - 1) abs < 1.0e-10 ].
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   381
	self should: [ (c sqrt imaginaryPart + 1) abs < 1.0e-10 ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   384
testSquared
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   385
    | c c2 |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   386
    c := (6 - 6 i).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   387
    c2 := (c squared).
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   388
    self assert: c2 imaginary = -72.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   389
    self assert: c2 real = 0.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   390
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   391
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   392
     self new testSquared
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   393
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   394
     self run: #testSquared
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   395
     self debug: #testSquared
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   396
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   397
!
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   398
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
testSubtraction
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   400
    | c1 c2 |
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   401
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   402
    self shouldnt: [ c1 := Complex real: 1 imaginary: 2 ] raise: Exception.
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   403
    self shouldnt: [ c2 := Complex real: 3 imaginary: 4 ] raise: Exception.
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   405
    self should: [ (c1 - c2) = (Complex real: -2 imaginary: -2) ].
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   407
    self assert: ( (c1 - 1.0) = (Complex real: 0 imaginary: 2) ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   408
    self assert: ( (1.0 - c1) = (Complex real: 0 imaginary: -2) ).
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   409
    self assert: ( (1.0 - (Complex fromReal:1.0)) = 0 ).
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   410
!
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   411
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   412
xxtestSecureDivision1
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   413
    | c1 c2 quotient |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   414
    c1 := 2.0e252 + 3.0e70 i.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   415
    c2 := c1.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   416
    quotient := c1 divideSecureBy: c2.
1447
2351db93aa5b package changes
Claus Gittinger <cg@exept.de>
parents: 1066
diff changeset
   417
    self assert: (quotient - 1) isZero.
308
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   418
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   419
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   420
     self run: #testSecureDivision1
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   421
     self new testSecureDivision1
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   422
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   423
!
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   424
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   425
xxtestSecureDivision2
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   426
    | c1 c2 quotient |
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   427
    c1 := 2.0e252 + 3.0e70 i.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   428
    c2 := c1.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   429
    quotient := c1 divideFastAndSecureBy: c2.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   430
    self assert: (quotient - 1) isZero.
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   431
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   432
    "
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   433
     self run: #testSecureDivision2
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   434
     self new testSecureDivision2
0113f7be0cf9 more tests (from squeak)
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   435
    "
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
! !
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
!ComplexTest class methodsFor:'documentation'!
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
version
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
    ^ '$Header$'
566
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   442
!
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   443
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   444
version_CVS
229e35dc2657 more coverage
Claus Gittinger <cg@exept.de>
parents: 308
diff changeset
   445
    ^ '$Header$'
192
403ba5cd66c4 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
! !
1066
fe4318fddac9 category
Claus Gittinger <cg@exept.de>
parents: 734
diff changeset
   447