@@ -31,7 +31,8 @@ class TestDecimal: XCTestCase {
3131 ( " test_SimpleMultiplication " , test_SimpleMultiplication) ,
3232 ( " test_SmallerNumbers " , test_SmallerNumbers) ,
3333 ( " test_ZeroPower " , test_ZeroPower) ,
34- ( " test_doubleValue " , test_doubleValue)
34+ ( " test_doubleValue " , test_doubleValue) ,
35+ ( " test_NSDecimalNumberValues " , test_NSDecimalNumberValues) ,
3536 ]
3637 }
3738
@@ -782,4 +783,196 @@ class TestDecimal: XCTestCase {
782783 XCTAssertEqual ( nf. string ( from: NSDecimalNumber ( decimal: a) ) , " 0.00 " )
783784 XCTAssertEqual ( nf. string ( from: NSDecimalNumber ( decimal: b) ) , " 0.00 " )
784785 }
786+
787+ func test_NSDecimalNumberValues( ) {
788+ let uint64MaxDecimal = Decimal ( string: UInt64 . max. description) !
789+
790+ // int8Value
791+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . int8Value, 0 )
792+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . int8Value, - 1 )
793+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . int8Value, 1 )
794+
795+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 129 ) ) . int8Value, 127 )
796+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 128 ) ) . int8Value, - 128 )
797+
798+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . int8Value, Int8 . min)
799+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . int8Value, 0 )
800+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . int8Value, 0 )
801+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . int8Value, 0 )
802+
803+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . int8Value, Int8 . max)
804+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . int8Value, - 1 )
805+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . int8Value, - 1 )
806+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . int8Value, - 1 )
807+
808+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . int8Value, - 1 )
809+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . int8Value, - 1 )
810+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . int8Value, - 1 )
811+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . int8Value, - 1 )
812+
813+ // uint8Value
814+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . uint8Value, 0 )
815+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . uint8Value, UInt8 . max)
816+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . uint8Value, 1 )
817+
818+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 129 ) ) . uint8Value, 127 )
819+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 128 ) ) . uint8Value, 128 )
820+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 256 ) ) . uint8Value, 0 )
821+
822+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . uint8Value, 128 )
823+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . uint8Value, 0 )
824+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . uint8Value, 0 )
825+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . uint8Value, 0 )
826+
827+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . uint8Value, 127 )
828+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . uint8Value, UInt8 . max)
829+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . uint8Value, UInt8 . max)
830+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . uint8Value, UInt8 . max)
831+
832+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . uint8Value, UInt8 . max)
833+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . uint8Value, UInt8 . max)
834+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . uint8Value, UInt8 . max)
835+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . uint8Value, UInt8 . max)
836+
837+ // int16Value
838+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . int16Value, 0 )
839+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . int16Value, - 1 )
840+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . int16Value, 1 )
841+
842+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 32769 ) ) . int16Value, 32767 )
843+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 32768 ) ) . int16Value, - 32768 )
844+
845+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . int16Value, - 128 )
846+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . int16Value, Int16 . min)
847+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . int16Value, 0 )
848+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . int16Value, 0 )
849+
850+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . int16Value, 127 )
851+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . int16Value, Int16 . max)
852+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . int16Value, - 1 )
853+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . int16Value, - 1 )
854+
855+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . int16Value, 255 )
856+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . int16Value, - 1 )
857+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . int16Value, - 1 )
858+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . int16Value, - 1 )
859+
860+ // uint16Value
861+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . uint16Value, 0 )
862+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . uint16Value, UInt16 . max)
863+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . uint16Value, 1 )
864+
865+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 32769 ) ) . uint16Value, 32767 )
866+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 32768 ) ) . uint16Value, 32768 )
867+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 65536 ) ) . uint16Value, 0 )
868+
869+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . uint16Value, 65408 )
870+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . uint16Value, 32768 )
871+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . uint16Value, 0 )
872+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . uint16Value, 0 )
873+
874+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . uint16Value, 127 )
875+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . uint16Value, 32767 )
876+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . uint16Value, UInt16 . max)
877+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . uint16Value, UInt16 . max)
878+
879+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . uint16Value, 255 )
880+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . uint16Value, UInt16 . max)
881+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . uint16Value, UInt16 . max)
882+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . uint16Value, UInt16 . max)
883+
884+ // int32Value
885+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . int32Value, 0 )
886+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . int32Value, - 1 )
887+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . int32Value, 1 )
888+
889+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 32769 ) ) . int32Value, - 32769 )
890+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 32768 ) ) . int32Value, 32768 )
891+
892+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . int32Value, - 128 )
893+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . int32Value, - 32768 )
894+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . int32Value, Int32 . min)
895+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . int32Value, 0 )
896+
897+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . int32Value, 127 )
898+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . int32Value, 32767 )
899+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . int32Value, Int32 . max)
900+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . int32Value, - 1 )
901+
902+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . int32Value, 255 )
903+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . int32Value, 65535 )
904+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . int32Value, - 1 )
905+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . int32Value, - 1 )
906+
907+ // uint32Value
908+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . uint32Value, 0 )
909+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . uint32Value, UInt32 . max)
910+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . uint32Value, 1 )
911+
912+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 32769 ) ) . uint32Value, 4294934527 )
913+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 32768 ) ) . uint32Value, 32768 )
914+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 65536 ) ) . uint32Value, 65536 )
915+
916+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . uint32Value, 4294967168 )
917+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . uint32Value, 4294934528 )
918+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . uint32Value, 2147483648 )
919+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . uint32Value, 0 )
920+
921+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . uint32Value, 127 )
922+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . uint32Value, 32767 )
923+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . uint32Value, UInt32 ( Int32 . max) )
924+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . uint32Value, UInt32 . max)
925+
926+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . uint32Value, 255 )
927+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . uint32Value, 65535 )
928+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . uint32Value, UInt32 . max)
929+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . uint32Value, UInt32 . max)
930+
931+ // int64Value
932+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . int64Value, 0 )
933+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . int64Value, - 1 )
934+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . int64Value, 1 )
935+
936+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 32769 ) ) . int64Value, - 32769 )
937+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 32768 ) ) . int64Value, 32768 )
938+
939+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . int64Value, - 128 )
940+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . int64Value, - 32768 )
941+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . int64Value, - 2147483648 )
942+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . int64Value, Int64 . min)
943+
944+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . int64Value, 127 )
945+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . int64Value, 32767 )
946+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . int64Value, 2147483647 )
947+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . int64Value, Int64 . max)
948+
949+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . int64Value, 255 )
950+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . int64Value, 65535 )
951+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . int64Value, 4294967295 )
952+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . int64Value, - 1 )
953+
954+ // uint64Value
955+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 0 ) ) . uint64Value, 0 )
956+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 1 ) ) . uint64Value, UInt64 . max)
957+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 1 ) ) . uint64Value, 1 )
958+
959+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( - 32769 ) ) . uint64Value, 18446744073709518847 )
960+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 32768 ) ) . uint64Value, 32768 )
961+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( 65536 ) ) . uint64Value, 65536 )
962+
963+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . min) ) . uint64Value, 18446744073709551488 )
964+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . min) ) . uint64Value, 18446744073709518848 )
965+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . min) ) . uint64Value, 18446744071562067968 )
966+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . min) ) . uint64Value, 9223372036854775808 )
967+
968+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int8 . max) ) . uint64Value, 127 )
969+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int16 . max) ) . uint64Value, 32767 )
970+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int32 . max) ) . uint64Value, UInt64 ( Int32 . max) )
971+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( Int64 . max) ) . uint64Value, UInt64 ( Int64 . max) )
972+
973+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt8 . max) ) . uint64Value, 255 )
974+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt16 . max) ) . uint64Value, 65535 )
975+ XCTAssertEqual ( NSDecimalNumber ( decimal: Decimal ( UInt32 . max) ) . uint64Value, 4294967295 )
976+ XCTAssertEqual ( NSDecimalNumber ( decimal: uint64MaxDecimal) . uint64Value, UInt64 . max)
977+ }
785978}
0 commit comments