@@ -749,7 +749,7 @@ class TestDecimal: XCTestCase {
749
749
}
750
750
}
751
751
752
- func test_ScanDecimal( ) {
752
+ func test_ScanDecimal( ) throws {
753
753
let testCases = [
754
754
// expected, value
755
755
( 123.456e78 , " 123.456e78 " ) ,
@@ -764,7 +764,7 @@ class TestDecimal: XCTestCase {
764
764
]
765
765
for testCase in testCases {
766
766
let ( expected, string) = testCase
767
- let decimal = Decimal ( string: string) !
767
+ let decimal = try XCTUnwrap ( Decimal ( string: string) )
768
768
let aboutOne = Decimal ( expected) / decimal
769
769
let approximatelyRight = aboutOne >= Decimal ( 0.99999 ) && aboutOne <= Decimal ( 1.00001 )
770
770
XCTAssertTrue ( approximatelyRight, " \( expected) ~= \( decimal) : \( aboutOne) \( aboutOne >= Decimal ( 0.99999 ) ) \( aboutOne <= Decimal ( 1.00001 ) ) " )
@@ -779,6 +779,33 @@ class TestDecimal: XCTestCase {
779
779
return
780
780
}
781
781
XCTAssertEqual ( answer, num, " \( ones) / 9 = \( answer) \( num) " )
782
+
783
+ // Exponent overflow, returns nil
784
+ XCTAssertNil ( Decimal ( string: " 1e200 " ) )
785
+ XCTAssertNil ( Decimal ( string: " 1e-200 " ) )
786
+ XCTAssertNil ( Decimal ( string: " 1e300 " ) )
787
+ XCTAssertNil ( Decimal ( string: " 1 " + String( repeating: " 0 " , count: 170 ) ) )
788
+ XCTAssertNil ( Decimal ( string: " 0. " + String( repeating: " 0 " , count: 170 ) + " 1 " ) )
789
+ XCTAssertNil ( Decimal ( string: " 0e200 " ) )
790
+
791
+ // Parsing zero in different forms
792
+ let zero1 = try XCTUnwrap ( Decimal ( string: " 000.000e123 " ) )
793
+ XCTAssertTrue ( zero1. isZero)
794
+ XCTAssertEqual ( zero1. _isNegative, 0 )
795
+ XCTAssertEqual ( zero1. _length, 0 )
796
+ XCTAssertEqual ( zero1. description, " 0 " )
797
+
798
+ let zero2 = try XCTUnwrap ( Decimal ( string: " +000.000e-123 " ) )
799
+ XCTAssertTrue ( zero2. isZero)
800
+ XCTAssertEqual ( zero2. _isNegative, 0 )
801
+ XCTAssertEqual ( zero2. _length, 0 )
802
+ XCTAssertEqual ( zero2. description, " 0 " )
803
+
804
+ let zero3 = try XCTUnwrap ( Decimal ( string: " -0.0e1 " ) )
805
+ XCTAssertTrue ( zero3. isZero)
806
+ XCTAssertEqual ( zero3. _isNegative, 0 )
807
+ XCTAssertEqual ( zero3. _length, 0 )
808
+ XCTAssertEqual ( zero3. description, " 0 " )
782
809
}
783
810
784
811
func test_SimpleMultiplication( ) {
0 commit comments