Skip to content

Commit 785f128

Browse files
committed
add jasmine tests
1 parent 17e73b6 commit 785f128

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

src/lib/index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ var MAX_SAFE = numConstants.FP_SAFE;
1010
var MIN_SAFE = -MAX_SAFE;
1111
var BADNUM = numConstants.BADNUM;
1212

13-
var lib = module.exports = {
14-
_numberFormat: d3.format // simply to test d3.format before switching to d3-format
15-
};
13+
var lib = module.exports = {};
1614

1715
lib.adjustFormat = function adjustFormat(formatStr) {
1816
if(

test/jasmine/tests/lib_number_format_test.js

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var numberFormat = require('@src/lib')._numberFormat;
1+
var numberFormat = require('@src/lib').numberFormat;
22

33
describe('number format', function() {
44
'use strict';
@@ -17,12 +17,22 @@ describe('number format', function() {
1717
{ format: '.5%', number: ratio, exp: '67.89010%'},
1818

1919
// multiply by 100, round to significant digits, and then decimal notation with a percent sign
20+
{ format: '.0p', number: ratio, exp: '70%'},
2021
{ format: '.1p', number: ratio, exp: '70%'},
2122
{ format: '.2p', number: ratio, exp: '68%'},
2223
{ format: '.3p', number: ratio, exp: '67.9%'},
2324
{ format: '.4p', number: ratio, exp: '67.89%'},
2425
{ format: '.5p', number: ratio, exp: '67.890%'},
2526

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+
2636
// fixed point notation
2737
{ format: '.0f', number: float, exp: '12346'},
2838
{ format: '.1f', number: float, exp: '12345.7'},
@@ -31,14 +41,18 @@ describe('number format', function() {
3141
{ format: '.4f', number: float, exp: '12345.6789'},
3242
{ format: '.5f', number: float, exp: '12345.67890'},
3343

34-
// f with stating zero
44+
// handle for backward compatibility
3545
{ format: '0.0f', number: float, exp: '12346'},
3646
{ format: '0.1f', number: float, exp: '12345.7'},
3747
{ format: '0.2f', number: float, exp: '12345.68'},
3848
{ format: '0.3f', number: float, exp: '12345.679'},
3949
{ format: '0.4f', number: float, exp: '12345.6789'},
4050
{ format: '0.5f', number: float, exp: '12345.67890'},
4151

52+
// bad formats
53+
{ format: '0f', number: float, exp: '12345.678901'},
54+
{ format: '1f', number: float, exp: '12345.678901'},
55+
4256
// space-filled and default sign
4357
{ format: '-13', number: float, exp: '-12345.678901'},
4458
{ format: '-14', number: float, exp: ' -12345.678901'},
@@ -49,6 +63,16 @@ describe('number format', function() {
4963
{ format: '+14', number: float, exp: ' +12345.678901'},
5064
{ format: '+15', number: float, exp: ' +12345.678901'},
5165

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+
5276
// hexadecimal, octal, or binary notation with symbol
5377
{ format: '#0X', number: integer, exp: '0xDE'},
5478
{ format: '#0x', number: integer, exp: '0xde'},
@@ -61,14 +85,26 @@ describe('number format', function() {
6185
{ format: 'o', number: integer, exp: '336'},
6286
{ format: 'b', number: integer, exp: '11011110'},
6387

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+
6494
// decimal notation, rounded to significant digits
95+
{ format: 'r', number: float, exp: '12345.7'},
6596
{ format: '0.3r', number: float, exp: '12300'},
6697
{ format: ',.3r', number: float, exp: '12,300'},
6798
{ format: ',.2r', number: float, exp: '12,000'},
6899
{ format: ',.1r', number: float, exp: '10,000'},
69100

70101
// decimal notation with an SI prefix, rounded to significant digits
71102
{ 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µ'},
72108
].forEach(function(test) {
73109
var number = test.number;
74110
var format = test.format;

0 commit comments

Comments
 (0)