7
7
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
8
8
//
9
9
10
+ import Foundation
11
+
10
12
class TestDecimal : XCTestCase {
11
13
12
14
func test_NSDecimalNumberInit( ) {
@@ -137,13 +139,15 @@ class TestDecimal: XCTestCase {
137
139
XCTAssertEqual ( 8 , NSDecimalMaxSize)
138
140
XCTAssertEqual ( 32767 , NSDecimalNoScale)
139
141
let smallest = Decimal ( _exponent: 127 , _length: 8 , _isNegative: 1 , _isCompact: 1 , _reserved: 0 , _mantissa: ( UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max) )
140
- XCTAssertEqual ( smallest, Decimal . leastFiniteMagnitude )
142
+ XCTAssertEqual ( smallest, - Decimal. greatestFiniteMagnitude )
141
143
let biggest = Decimal ( _exponent: 127 , _length: 8 , _isNegative: 0 , _isCompact: 1 , _reserved: 0 , _mantissa: ( UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max, UInt16 . max) )
142
144
XCTAssertEqual ( biggest, Decimal . greatestFiniteMagnitude)
143
- let leastNormal = Decimal ( _exponent: - 127 , _length: 1 , _isNegative: 0 , _isCompact: 1 , _reserved: 0 , _mantissa: ( 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) )
145
+ let leastNormal = Decimal ( _exponent: - 128 , _length: 1 , _isNegative: 0 , _isCompact: 1 , _reserved: 0 , _mantissa: ( 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) )
144
146
XCTAssertEqual ( leastNormal, Decimal . leastNormalMagnitude)
145
- let leastNonzero = Decimal ( _exponent: - 127 , _length: 1 , _isNegative: 0 , _isCompact: 1 , _reserved: 0 , _mantissa: ( 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) )
147
+ let leastNonzero = Decimal ( _exponent: - 128 , _length: 1 , _isNegative: 0 , _isCompact: 1 , _reserved: 0 , _mantissa: ( 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) )
146
148
XCTAssertEqual ( leastNonzero, Decimal . leastNonzeroMagnitude)
149
+ let leastFinite = 0 as Decimal
150
+ XCTAssertEqual ( leastFinite, Decimal . leastFiniteMagnitude)
147
151
let pi = Decimal ( _exponent: - 38 , _length: 8 , _isNegative: 0 , _isCompact: 1 , _reserved: 0 , _mantissa: ( 0x6623 , 0x7d57 , 0x16e7 , 0xad0d , 0xaf52 , 0x4641 , 0xdfa7 , 0xec58 ) )
148
152
XCTAssertEqual ( pi, Decimal . pi)
149
153
XCTAssertEqual ( 10 , Decimal . radix)
@@ -177,13 +181,12 @@ class TestDecimal: XCTestCase {
177
181
XCTAssertEqual ( " -5 " , Decimal ( signOf: Decimal ( - 3 ) , magnitudeOf: Decimal ( - 5 ) ) . description)
178
182
XCTAssertEqual ( " 5 " , NSDecimalNumber ( decimal: Decimal ( 5 ) ) . description)
179
183
XCTAssertEqual ( " -5 " , NSDecimalNumber ( decimal: Decimal ( - 5 ) ) . description)
180
- XCTAssertEqual ( " -3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " , Decimal . leastFiniteMagnitude. description)
181
184
XCTAssertEqual ( " 3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " , Decimal . greatestFiniteMagnitude. description)
182
- XCTAssertEqual ( " 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , Decimal . leastNormalMagnitude. description)
183
- XCTAssertEqual ( " 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , Decimal . leastNonzeroMagnitude. description)
185
+ XCTAssertEqual ( " 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , Decimal . leastNormalMagnitude. description)
186
+ XCTAssertEqual ( " 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , Decimal . leastNonzeroMagnitude. description)
187
+ XCTAssertEqual ( " 0 " , Decimal . leastFiniteMagnitude. description)
184
188
185
189
let fr = Locale ( identifier: " fr_FR " )
186
- let leastFiniteMagnitude = " -3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "
187
190
let greatestFiniteMagnitude = " 3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "
188
191
189
192
XCTAssertEqual ( " 0 " , NSDecimalNumber ( decimal: Decimal ( ) ) . description ( withLocale: fr) )
@@ -194,10 +197,9 @@ class TestDecimal: XCTestCase {
194
197
XCTAssertEqual ( " 3,14159265358979323846264338327950288419 " , NSDecimalNumber ( decimal: Decimal . pi) . description ( withLocale: fr) )
195
198
XCTAssertEqual ( " -30000000000 " , NSDecimalNumber ( decimal: Decimal ( sign: . minus, exponent: 10 , significand: Decimal ( 3 ) ) ) . description ( withLocale: fr) )
196
199
XCTAssertEqual ( " 123456,789 " , NSDecimalNumber ( decimal: Decimal ( string: " 123456.789 " ) !) . description ( withLocale: fr) )
197
- XCTAssertEqual ( leastFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . leastFiniteMagnitude) . description ( withLocale: fr) )
198
200
XCTAssertEqual ( greatestFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . greatestFiniteMagnitude) . description ( withLocale: fr) )
199
- XCTAssertEqual ( " 0,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: fr) )
200
- XCTAssertEqual ( " 0,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNonzeroMagnitude) . description ( withLocale: fr) )
201
+ XCTAssertEqual ( " 0,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: fr) )
202
+ XCTAssertEqual ( " 0,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNonzeroMagnitude) . description ( withLocale: fr) )
201
203
202
204
let en = Locale ( identifier: " en_GB " )
203
205
XCTAssertEqual ( " 0 " , NSDecimalNumber ( decimal: Decimal ( ) ) . description ( withLocale: en) )
@@ -208,10 +210,9 @@ class TestDecimal: XCTestCase {
208
210
XCTAssertEqual ( " 3.14159265358979323846264338327950288419 " , NSDecimalNumber ( decimal: Decimal . pi) . description ( withLocale: en) )
209
211
XCTAssertEqual ( " -30000000000 " , NSDecimalNumber ( decimal: Decimal ( sign: . minus, exponent: 10 , significand: Decimal ( 3 ) ) ) . description ( withLocale: en) )
210
212
XCTAssertEqual ( " 123456.789 " , NSDecimalNumber ( decimal: Decimal ( string: " 123456.789 " ) !) . description ( withLocale: en) )
211
- XCTAssertEqual ( leastFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . leastFiniteMagnitude) . description ( withLocale: en) )
212
213
XCTAssertEqual ( greatestFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . greatestFiniteMagnitude) . description ( withLocale: en) )
213
- XCTAssertEqual ( " 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: en) )
214
- XCTAssertEqual ( " 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNonzeroMagnitude) . description ( withLocale: en) )
214
+ XCTAssertEqual ( " 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: en) )
215
+ XCTAssertEqual ( " 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNonzeroMagnitude) . description ( withLocale: en) )
215
216
}
216
217
217
218
func test_ExplicitConstruction( ) {
@@ -333,7 +334,6 @@ class TestDecimal: XCTestCase {
333
334
XCTAssertEqual ( NSDecimalNumber ( floatLiteral: 2880.4 ) . subtracting ( NSDecimalNumber ( floatLiteral: 5538 ) ) , NSDecimalNumber ( floatLiteral: 2880.4 - 5538 ) )
334
335
335
336
XCTAssertEqual ( Decimal . greatestFiniteMagnitude - Decimal. greatestFiniteMagnitude, Decimal ( 0 ) )
336
- XCTAssertEqual ( Decimal . leastFiniteMagnitude - Decimal( 1 ) , Decimal . leastFiniteMagnitude)
337
337
let overflowed = Decimal . greatestFiniteMagnitude + Decimal. greatestFiniteMagnitude
338
338
XCTAssertTrue ( overflowed. isNaN)
339
339
@@ -388,7 +388,7 @@ class TestDecimal: XCTestCase {
388
388
XCTAssertEqual ( ( 1 as Decimal ) . magnitude, abs ( - 1 as Decimal ) )
389
389
XCTAssertEqual ( ( - 1 as Decimal ) . magnitude, abs ( - 1 as Decimal ) )
390
390
XCTAssertEqual ( ( - 1 as Decimal ) . magnitude, abs ( 1 as Decimal ) )
391
- XCTAssertEqual ( Decimal . leastFiniteMagnitude. magnitude, - Decimal. leastFiniteMagnitude) // A bit of a misnomer.
391
+ XCTAssertEqual ( Decimal . leastFiniteMagnitude. magnitude, - Decimal. leastFiniteMagnitude)
392
392
XCTAssertEqual ( Decimal . greatestFiniteMagnitude. magnitude, Decimal . greatestFiniteMagnitude)
393
393
XCTAssertTrue ( Decimal . nan. magnitude. isNaN)
394
394
@@ -568,15 +568,15 @@ class TestDecimal: XCTestCase {
568
568
XCTAssertTrue ( Int ( small. exponent) - Int( large. exponent) < Int ( Int8 . min) )
569
569
XCTAssertNotEqual ( small, large)
570
570
571
- XCTAssertEqual ( small. exponent, - 127 )
571
+ XCTAssertEqual ( small. exponent, - 128 )
572
572
XCTAssertEqual ( large. exponent, 127 )
573
573
XCTAssertEqual ( . lossOfPrecision, NSDecimalNormalize ( & small, & large, . plain) )
574
574
XCTAssertEqual ( small. exponent, 127 )
575
575
XCTAssertEqual ( large. exponent, 127 )
576
576
577
577
small = Decimal . leastNonzeroMagnitude
578
578
large = Decimal . greatestFiniteMagnitude
579
- XCTAssertEqual ( small. exponent, - 127 )
579
+ XCTAssertEqual ( small. exponent, - 128 )
580
580
XCTAssertEqual ( large. exponent, 127 )
581
581
XCTAssertEqual ( . lossOfPrecision, NSDecimalNormalize ( & large, & small, . plain) )
582
582
XCTAssertEqual ( small. exponent, 127 )
0 commit comments