@@ -29,35 +29,57 @@ describe("infinity", () => {
29
29
} ) ;
30
30
} ) ;
31
31
32
- describe ( "to decimal places " , function ( ) {
32
+ describe ( "toprecision " , function ( ) {
33
33
const d = "123.456" ;
34
34
const decimalD = new Decimal128 ( d ) ;
35
- test ( "more digits than available means digits get added" , ( ) => {
36
- expectDecimal128 (
37
- decimalD . toString ( { numDecimalDigits : 4 } ) ,
38
- "123.4560"
39
- ) ;
35
+ test ( "no argument" , ( ) => {
36
+ expect ( decimalD . toPrecision ( ) ) . toStrictEqual ( "123.456" ) ;
37
+ } ) ;
38
+ test ( "wrong argument type" , ( ) => {
39
+ expect ( decimalD . toPrecision ( "foo" ) ) . toStrictEqual ( "123.456" ) ;
40
+ } ) ;
41
+ test ( "empty options" , ( ) => {
42
+ expect ( decimalD . toPrecision ( { } ) ) . toStrictEqual ( "123.456" ) ;
43
+ } ) ;
44
+ test ( "expected property missing" , ( ) => {
45
+ expect ( decimalD . toPrecision ( { foo : "bar" } ) ) . toStrictEqual ( "123.456" ) ;
46
+ } ) ;
47
+ test ( "more digits requested than integer digits available" , ( ) => {
48
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 7 } ) , "123.4560" ) ;
49
+ } ) ;
50
+ test ( "exact number of digits requested as digits available" , ( ) => {
51
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 6 } ) , "123.456" ) ;
52
+ } ) ;
53
+ test ( "possibly round non-integer part (1)" , ( ) => {
54
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 5 } ) , "123.45" ) ;
55
+ } ) ;
56
+ test ( "possibly round non-integer part (2)" , ( ) => {
57
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 4 } ) , "123.4" ) ;
40
58
} ) ;
41
59
test ( "same number of digits as available means no change" , ( ) => {
42
- expectDecimal128 ( decimalD . toString ( { numDecimalDigits : 3 } ) , "123.456 " ) ;
60
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 3 } ) , "123" ) ;
43
61
} ) ;
44
62
test ( "cutoff if number has more digits than requested (1)" , ( ) => {
45
- expectDecimal128 ( decimalD . toString ( { numDecimalDigits : 2 } ) , "123.45 " ) ;
63
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 2 } ) , "1.2e+2 " ) ;
46
64
} ) ;
47
65
test ( "cutoff if number has more digits than requested (2)" , ( ) => {
48
- expectDecimal128 ( decimalD . toString ( { numDecimalDigits : 1 } ) , "123.4 " ) ;
66
+ expectDecimal128 ( decimalD . toPrecision ( { digits : 1 } ) , "1e+2 " ) ;
49
67
} ) ;
50
- test ( "zero decimal places" , ( ) => {
51
- expectDecimal128 ( decimalD . toString ( { numDecimalDigits : 0 } ) , "123" ) ;
68
+ test ( "zero decimal places throws " , ( ) => {
69
+ expect ( ( ) => decimalD . toPrecision ( { digits : 0 } ) ) . toThrow ( RangeError ) ;
52
70
} ) ;
53
71
test ( "negative number of decimal places" , ( ) => {
54
- expect ( decimalD . toString ( { numDecimalDigits : - 1 } ) ) . toStrictEqual (
55
- "123.456"
56
- ) ;
72
+ expect ( ( ) => decimalD . toPrecision ( { digits : - 1 } ) ) . toThrow ( RangeError ) ;
57
73
} ) ;
58
- test ( "non-integer number of decimal places reverts to default" , ( ) => {
59
- expect ( decimalD . toString ( { numDecimalDigits : 1.5 } ) ) . toStrictEqual (
60
- "123.456"
61
- ) ;
74
+ test ( "non-integer number throws" , ( ) => {
75
+ expect ( ( ) => decimalD . toPrecision ( { digits : 1.5 } ) ) . toThrow ( RangeError ) ;
76
+ } ) ;
77
+ describe ( "negative" , ( ) => {
78
+ let negD = decimalD . neg ( ) ;
79
+ test ( "integer part" , ( ) => {
80
+ expect ( negD . toPrecision ( { digits : 3 } ) . toString ( ) ) . toStrictEqual (
81
+ "-123"
82
+ ) ;
83
+ } ) ;
62
84
} ) ;
63
85
} ) ;
0 commit comments