UNPKG

6 kBJavaScriptView Raw
1const assert = require('assert');
2let number = require('../namespace/number');
3const HOUR = 60 * 60;
4const DAY = 24 * HOUR;
5
6describe("Number tests", function () {
7
8 it("Time Constants:: should exist and be correct", function () {
9 assert.equal(number.SECOND, 1000);
10 assert.equal(number.MINUTE, 1000 * 60);
11 assert.equal(number.HOUR, 1000 * 60 * 60);
12 assert.equal(number.DAY, 1000 * 60 * 60 * 24);
13 });
14
15 it("parse:: Should strip weird stuff", function () {
16 assert.equal(number.parse("$34.72"), 34.72);
17 assert.equal(number.parse("65.323%"), 65.323);
18 assert.equal(number.parse("65%"), 65);
19 })
20
21 it("parse:: Should respect negative numbers", function () {
22 assert.equal(number.parse("-65%"), -65);
23 assert.equal(number.parse("-$65.34"), -65.34);
24 assert.equal(number.parse("-78.32-"), -78.32);
25 });
26
27 it("random:: Should generate a random number between x,y", function () {
28 let rand = number.random(5,10);
29 assert.equal(rand <= 10, true);
30 assert.equal(rand >= 5, true);
31 rand = number.random(100, 1000);
32 assert.equal(rand <= 1000, true);
33 assert.equal(rand >= 100, true);
34 });
35
36 it("withDelimiter:: Should simply format a number with commas and decimals", function () {
37 assert.equal(number.withDelimiter(4), '4.00');
38 assert.equal(number.withDelimiter(45), '45.00');
39 assert.equal(number.withDelimiter(450), '450.00');
40 assert.equal(number.withDelimiter(4500), '4,500.00');
41 assert.equal(number.withDelimiter(45000), '45,000.00');
42 assert.equal(number.withDelimiter(450000), '450,000.00');
43 assert.equal(number.withDelimiter(4500000), '4,500,000.00');
44 assert.equal(number.withDelimiter(45000000), '45,000,000.00');
45 assert.equal(number.withDelimiter(450000000), '450,000,000.00');
46 assert.equal(number.withDelimiter(4500000000), '4,500,000,000.00');
47 assert.equal(number.withDelimiter(45000000000), '45,000,000,000.00');
48 assert.equal(number.withDelimiter(450000000000), '450,000,000,000.00');
49 assert.equal(number.withDelimiter(4500000000000), '4,500,000,000,000.00');
50 assert.equal(number.withDelimiter(45000000000000), '45,000,000,000,000.00');
51 assert.equal(number.withDelimiter(450000000000000), '450,000,000,000,000.00');
52 assert.equal(number.withDelimiter(99e19), '990,000,000,000,000,000,000.00');
53 });
54
55 it("toAbbr:: should abbreviate a number", function () {
56 assert.equal(number.toAbbr(45000), '45k');
57 assert.equal(number.toAbbr(450000), '450k');
58 assert.equal(number.toAbbr(4500000), '4.5m');
59 assert.equal(number.toAbbr(45000000), '45m');
60 assert.equal(number.toAbbr(450000000), '450m');
61 assert.equal(number.toAbbr(4500000000), '4.5b');
62 assert.equal(number.toAbbr(45000000000), '45b');
63 assert.equal(number.toAbbr(450000000000), '450b');
64 assert.equal(number.toAbbr(450), '450');
65 assert.equal(number.toAbbr(4500), '4.5k');
66 });
67
68 it("toData:: should format data", function () {
69 assert.equal(number.toData(126.02 * 1000), '126.0 kB');
70 assert.equal(number.toData(126.32 * 1000), '126.3 kB');
71 assert.equal(number.toData(126.32 * 1000 * 1000), '126.3 MB');
72 assert.equal(number.toData(126.32 * Math.pow(1000, 3)), '126.3 GB');
73 assert.equal(number.toData(126.32 * Math.pow(1000, 4)), '126.3 TB');
74 assert.equal(number.toData(126.32 * Math.pow(1000, 5)), '126.3 PB');
75 assert.equal(number.toData(126.32 * Math.pow(1000, 6)), '126.3 EB');
76 assert.equal(number.toData(126.32 * Math.pow(1000, 7)), '126.3 ZB');
77 assert.equal(number.toData(126.32 * Math.pow(1000, 8)), '126.3 YB');
78 });
79
80 it("toTime:: should format a number in time", function () {
81 assert.equal(number.toTime(50), '50 sec');
82 assert.equal(number.toTime(60), '1 min');
83 assert.equal(number.toTime(HOUR), '1 hr');
84 assert.equal(number.toTime(DAY), '1 day');
85 assert.equal(number.toTime(DAY * 30), '30 days');
86 assert.equal(number.toTime( (DAY * 2) + 10), '2 days 10 sec');
87 assert.equal(number.toTime( (DAY * 2) + (HOUR * 2) + 32), '2 days 2 hr 32 sec');
88 });
89
90 it("toTime:: should format a number in time and return an array", function () {
91 assert.deepEqual(number.toTime(50, true), [0, 0, 0, 50]);
92 assert.deepEqual(number.toTime(60, true), [0, 0, 1, 0]);
93 assert.deepEqual(number.toTime(HOUR, true), [0, 1, 0, 0]);
94 assert.deepEqual(number.toTime(DAY, true), [1, 0, 0, 0]);
95 assert.deepEqual(number.toTime(DAY * 30, true), [30, 0, 0, 0]);
96 assert.deepEqual(number.toTime( (DAY * 2) + 10, true), [2, 0, 0, 10]);
97 assert.deepEqual(number.toTime( (DAY * 2) + (HOUR * 2) + 32, true), [2, 2, 0, 32]);
98 });
99
100 it("toCurrency: should format a number to currency", function () {
101 assert.equal(number.toCurrency(240.658), '$240.66');
102 });
103
104 it("toCurrency:: should format a negative number to currency", function () {
105 assert.equal(number.toCurrency(-376240.658), '$-376,240.66');
106 });
107
108 it("toPercent:: should format a number to percentage", function () {
109 assert.equal(number.toPercent(43.47576353), '43.48%');
110 assert.equal(number.toPercent(43.47576353, 4), '43.4758%');
111 });
112
113 it("toPercent:: should format a number to percentage with extra parameters", function () {
114 assert.equal(number.toPercent(43873.47581765327, 4, '*', '\''), '43\'873*4758%');
115 });
116
117 it("toPercent:: should format a negative number to percentage", function () {
118 assert.equal(number.toPercent(-43.47576353), '-43.48%');
119 assert.equal(number.toPercent(-43.47576353, 4), '-43.4758%');
120 });
121
122 it("toPhone:: should format a number as a phone number", function () {
123 assert.equal(number.toPhone(9255551212), "925-555-1212");
124 assert.equal(number.toPhone('9255551212'), "925-555-1212");
125 assert.equal(number.toPhone(9255551212, true), "(925) 555-1212");
126 assert.equal(number.toPhone(9255551212, true, 4528), "(925) 555-1212 x4528");
127 });
128
129 it("NumberFormatter:: should create new formatters with default parameters", function () {
130 let toGBP = new number.NumberFormatter("£", false, 2, ',', '.');
131 assert.equal(toGBP(1234567.89), '£1.234.567,89');
132 });
133
134});