1
- var numberFormat = require ( '@src/lib' ) . _numberFormat ;
1
+ var numberFormat = require ( '@src/lib' ) . numberFormat ;
2
2
3
3
describe ( 'number format' , function ( ) {
4
4
'use strict' ;
@@ -17,12 +17,22 @@ describe('number format', function() {
17
17
{ format : '.5%' , number : ratio , exp : '67.89010%' } ,
18
18
19
19
// multiply by 100, round to significant digits, and then decimal notation with a percent sign
20
+ { format : '.0p' , number : ratio , exp : '70%' } ,
20
21
{ format : '.1p' , number : ratio , exp : '70%' } ,
21
22
{ format : '.2p' , number : ratio , exp : '68%' } ,
22
23
{ format : '.3p' , number : ratio , exp : '67.9%' } ,
23
24
{ format : '.4p' , number : ratio , exp : '67.89%' } ,
24
25
{ format : '.5p' , number : ratio , exp : '67.890%' } ,
25
26
27
+ // type none
28
+ { format : '.1' , number : float , exp : '1e+4' } ,
29
+ { format : '.2' , number : float , exp : '1.2e+4' } ,
30
+ { format : '.3' , number : float , exp : '1.23e+4' } ,
31
+ { format : '.4' , number : float , exp : '1.235e+4' } ,
32
+ { format : '.5' , number : float , exp : '12346' } ,
33
+ { format : '.6' , number : float , exp : '12345.7' } ,
34
+ { format : '.7' , number : float , exp : '12345.68' } ,
35
+
26
36
// fixed point notation
27
37
{ format : '.0f' , number : float , exp : '12346' } ,
28
38
{ format : '.1f' , number : float , exp : '12345.7' } ,
@@ -31,14 +41,18 @@ describe('number format', function() {
31
41
{ format : '.4f' , number : float , exp : '12345.6789' } ,
32
42
{ format : '.5f' , number : float , exp : '12345.67890' } ,
33
43
34
- // f with stating zero
44
+ // handle for backward compatibility
35
45
{ format : '0.0f' , number : float , exp : '12346' } ,
36
46
{ format : '0.1f' , number : float , exp : '12345.7' } ,
37
47
{ format : '0.2f' , number : float , exp : '12345.68' } ,
38
48
{ format : '0.3f' , number : float , exp : '12345.679' } ,
39
49
{ format : '0.4f' , number : float , exp : '12345.6789' } ,
40
50
{ format : '0.5f' , number : float , exp : '12345.67890' } ,
41
51
52
+ // bad formats
53
+ { format : '0f' , number : float , exp : '12345.678901' } ,
54
+ { format : '1f' , number : float , exp : '12345.678901' } ,
55
+
42
56
// space-filled and default sign
43
57
{ format : '-13' , number : float , exp : '-12345.678901' } ,
44
58
{ format : '-14' , number : float , exp : ' -12345.678901' } ,
@@ -49,6 +63,16 @@ describe('number format', function() {
49
63
{ format : '+14' , number : float , exp : ' +12345.678901' } ,
50
64
{ format : '+15' , number : float , exp : ' +12345.678901' } ,
51
65
66
+ // space-filled and negatives in parentheses
67
+ { format : '(14' , number : float , exp : ' (12345.678901)' } ,
68
+ { format : '(15' , number : float , exp : ' (12345.678901)' } ,
69
+ { format : '(16' , number : float , exp : ' (12345.678901)' } ,
70
+
71
+ // space-filled and negatives in parentheses with currency symbols per the locale definition
72
+ { format : '($15' , number : float , exp : ' ($12345.678901)' } ,
73
+ { format : '($16' , number : float , exp : ' ($12345.678901)' } ,
74
+ { format : '($17' , number : float , exp : ' ($12345.678901)' } ,
75
+
52
76
// hexadecimal, octal, or binary notation with symbol
53
77
{ format : '#0X' , number : integer , exp : '0xDE' } ,
54
78
{ format : '#0x' , number : integer , exp : '0xde' } ,
@@ -61,14 +85,26 @@ describe('number format', function() {
61
85
{ format : 'o' , number : integer , exp : '336' } ,
62
86
{ format : 'b' , number : integer , exp : '11011110' } ,
63
87
88
+ // exponent notation
89
+ { format : 'e' , number : float , exp : '1.234568e+4' } ,
90
+
91
+ // decimal notation, rounded to integer
92
+ { format : 'd' , number : float , exp : '12346' } ,
93
+
64
94
// decimal notation, rounded to significant digits
95
+ { format : 'r' , number : float , exp : '12345.7' } ,
65
96
{ format : '0.3r' , number : float , exp : '12300' } ,
66
97
{ format : ',.3r' , number : float , exp : '12,300' } ,
67
98
{ format : ',.2r' , number : float , exp : '12,000' } ,
68
99
{ format : ',.1r' , number : float , exp : '10,000' } ,
69
100
70
101
// decimal notation with an SI prefix, rounded to significant digits
71
102
{ format : '0.3s' , number : float , exp : '12.3k' } ,
103
+ { format : 's' , number : float , exp : '12.3457k' } ,
104
+ { format : 's' , number : float * 1e+6 , exp : '12.3457G' } ,
105
+ { format : 's' , number : float * 1e+3 , exp : '12.3457M' } ,
106
+ { format : 's' , number : float * 1e-6 , exp : '12.3457m' } ,
107
+ { format : 's' , number : float * 1e-9 , exp : '12.3457µ' } ,
72
108
] . forEach ( function ( test ) {
73
109
var number = test . number ;
74
110
var format = test . format ;
0 commit comments