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,10 +181,10 @@ 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
190
let leastFiniteMagnitude = " -3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "
@@ -194,10 +198,10 @@ class TestDecimal: XCTestCase {
194
198
XCTAssertEqual ( " 3,14159265358979323846264338327950288419 " , NSDecimalNumber ( decimal: Decimal . pi) . description ( withLocale: fr) )
195
199
XCTAssertEqual ( " -30000000000 " , NSDecimalNumber ( decimal: Decimal ( sign: . minus, exponent: 10 , significand: Decimal ( 3 ) ) ) . description ( withLocale: fr) )
196
200
XCTAssertEqual ( " 123456,789 " , NSDecimalNumber ( decimal: Decimal ( string: " 123456.789 " ) !) . description ( withLocale: fr) )
197
- XCTAssertEqual ( leastFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . leastFiniteMagnitude) . description ( withLocale: fr) )
198
201
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) )
202
+ XCTAssertEqual ( " 0,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: fr) )
203
+ XCTAssertEqual ( " 0,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNonzeroMagnitude) . description ( withLocale: fr) )
204
+ XCTAssertEqual ( leastFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . leastFiniteMagnitude) . description ( withLocale: fr) )
201
205
202
206
let en = Locale ( identifier: " en_GB " )
203
207
XCTAssertEqual ( " 0 " , NSDecimalNumber ( decimal: Decimal ( ) ) . description ( withLocale: en) )
@@ -208,10 +212,10 @@ class TestDecimal: XCTestCase {
208
212
XCTAssertEqual ( " 3.14159265358979323846264338327950288419 " , NSDecimalNumber ( decimal: Decimal . pi) . description ( withLocale: en) )
209
213
XCTAssertEqual ( " -30000000000 " , NSDecimalNumber ( decimal: Decimal ( sign: . minus, exponent: 10 , significand: Decimal ( 3 ) ) ) . description ( withLocale: en) )
210
214
XCTAssertEqual ( " 123456.789 " , NSDecimalNumber ( decimal: Decimal ( string: " 123456.789 " ) !) . description ( withLocale: en) )
211
- XCTAssertEqual ( leastFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . leastFiniteMagnitude) . description ( withLocale: en) )
212
215
XCTAssertEqual ( greatestFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . greatestFiniteMagnitude) . description ( withLocale: en) )
213
- XCTAssertEqual ( " 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: en) )
216
+ XCTAssertEqual ( " 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNormalMagnitude) . description ( withLocale: en) )
214
217
XCTAssertEqual ( " 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 " , NSDecimalNumber ( decimal: Decimal . leastNonzeroMagnitude) . description ( withLocale: en) )
218
+ XCTAssertEqual ( leastFiniteMagnitude, NSDecimalNumber ( decimal: Decimal . leastFiniteMagnitude) . description ( withLocale: en) )
215
219
}
216
220
217
221
func test_ExplicitConstruction( ) {
@@ -333,7 +337,6 @@ class TestDecimal: XCTestCase {
333
337
XCTAssertEqual ( NSDecimalNumber ( floatLiteral: 2880.4 ) . subtracting ( NSDecimalNumber ( floatLiteral: 5538 ) ) , NSDecimalNumber ( floatLiteral: 2880.4 - 5538 ) )
334
338
335
339
XCTAssertEqual ( Decimal . greatestFiniteMagnitude - Decimal. greatestFiniteMagnitude, Decimal ( 0 ) )
336
- XCTAssertEqual ( Decimal . leastFiniteMagnitude - Decimal( 1 ) , Decimal . leastFiniteMagnitude)
337
340
let overflowed = Decimal . greatestFiniteMagnitude + Decimal. greatestFiniteMagnitude
338
341
XCTAssertTrue ( overflowed. isNaN)
339
342
@@ -388,7 +391,7 @@ class TestDecimal: XCTestCase {
388
391
XCTAssertEqual ( ( 1 as Decimal ) . magnitude, abs ( - 1 as Decimal ) )
389
392
XCTAssertEqual ( ( - 1 as Decimal ) . magnitude, abs ( - 1 as Decimal ) )
390
393
XCTAssertEqual ( ( - 1 as Decimal ) . magnitude, abs ( 1 as Decimal ) )
391
- XCTAssertEqual ( Decimal . leastFiniteMagnitude. magnitude, - Decimal. leastFiniteMagnitude) // A bit of a misnomer.
394
+ XCTAssertEqual ( Decimal . leastFiniteMagnitude. magnitude, - Decimal. leastFiniteMagnitude)
392
395
XCTAssertEqual ( Decimal . greatestFiniteMagnitude. magnitude, Decimal . greatestFiniteMagnitude)
393
396
XCTAssertTrue ( Decimal . nan. magnitude. isNaN)
394
397
@@ -568,15 +571,15 @@ class TestDecimal: XCTestCase {
568
571
XCTAssertTrue ( Int ( small. exponent) - Int( large. exponent) < Int ( Int8 . min) )
569
572
XCTAssertNotEqual ( small, large)
570
573
571
- XCTAssertEqual ( small. exponent, - 127 )
574
+ XCTAssertEqual ( small. exponent, - 128 )
572
575
XCTAssertEqual ( large. exponent, 127 )
573
576
XCTAssertEqual ( . lossOfPrecision, NSDecimalNormalize ( & small, & large, . plain) )
574
577
XCTAssertEqual ( small. exponent, 127 )
575
578
XCTAssertEqual ( large. exponent, 127 )
576
579
577
580
small = Decimal . leastNonzeroMagnitude
578
581
large = Decimal . greatestFiniteMagnitude
579
- XCTAssertEqual ( small. exponent, - 127 )
582
+ XCTAssertEqual ( small. exponent, - 128 )
580
583
XCTAssertEqual ( large. exponent, 127 )
581
584
XCTAssertEqual ( . lossOfPrecision, NSDecimalNormalize ( & large, & small, . plain) )
582
585
XCTAssertEqual ( small. exponent, 127 )
0 commit comments