@jsenv/humanize 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -10
- package/dist/browser/jsenv_humanize_browser.js +96 -2
- package/dist/node/jsenv_humanize_node.js +1470 -1531
- package/package.json +3 -3
- package/src/.jsenv/jsenv_tests_output.txt +27 -30
- package/src/_tests/byte/file_size.test.js +2 -2
- package/src/_tests/byte/memory.test.js +11 -0
- package/src/_tests/js_value/array.test.js +14 -14
- package/src/_tests/js_value/biginit.test.js +10 -10
- package/src/_tests/js_value/boolean.test.js +12 -12
- package/src/_tests/js_value/date.test.js +4 -4
- package/src/_tests/js_value/error.test.js +8 -8
- package/src/_tests/js_value/function.test.js +12 -12
- package/src/_tests/js_value/instance.test.js +2 -2
- package/src/_tests/js_value/null.test.js +2 -2
- package/src/_tests/js_value/number.test.js +54 -54
- package/src/_tests/js_value/object.test.js +34 -34
- package/src/_tests/js_value/regexp.test.js +4 -4
- package/src/_tests/js_value/string.test.js +32 -32
- package/src/_tests/js_value/symbol.test.js +6 -6
- package/src/_tests/js_value/undefined.test.js +2 -2
- package/src/_tests/log/logger.test.mjs +14 -14
- package/src/_tests/log/spinner.test.mjs +6 -6
- package/src/_tests/percentage/percentage_distribution.test.mjs +2 -2
- package/src/_tests/time/decimals.test.js +40 -40
- package/src/_tests/time/duration.test.js +2 -2
- package/src/_tests/time/ellapsed.test.js +2 -2
- package/src/ansi/ansi_browser.js +3 -0
- package/src/ansi/ansi_node.js +16 -0
- package/src/ansi/ansi_runtime_agnostic.js +33 -0
- package/src/byte/byte.js +1 -1
- package/src/js_value/humanize.js +1 -1
- package/src/js_value/string.js +1 -1
- package/src/log/dynamic_log.js +6 -4
- package/src/log/spinner.js +1 -1
- package/src/log/task_log.js +1 -1
- package/src/main_browser.js +3 -5
- package/src/main_node.js +9 -13
- package/src/unicode/unicode_browser.js +7 -0
- package/src/unicode/unicode_node.js +8 -0
- package/src/unicode/unicode_runtime_agnostic.js +53 -0
- package/src/_tests/byte/memory_usage.test.js +0 -11
- package/src/log/ansi.js +0 -37
- package/src/log/unicode.js +0 -52
|
@@ -3,21 +3,21 @@ import { humanize } from "@jsenv/humanize";
|
|
|
3
3
|
|
|
4
4
|
{
|
|
5
5
|
const actual = humanize({});
|
|
6
|
-
const
|
|
7
|
-
assert({ actual,
|
|
6
|
+
const expect = "{}";
|
|
7
|
+
assert({ actual, expect });
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
{
|
|
11
11
|
// eslint-disable-next-line no-new-object
|
|
12
12
|
const actual = humanize(new Object({}));
|
|
13
|
-
const
|
|
14
|
-
assert({ actual,
|
|
13
|
+
const expect = "{}";
|
|
14
|
+
assert({ actual, expect });
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
{
|
|
18
18
|
const actual = humanize({}, { objectConstructor: true });
|
|
19
|
-
const
|
|
20
|
-
assert({ actual,
|
|
19
|
+
const expect = "Object({})";
|
|
20
|
+
assert({ actual, expect });
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
{
|
|
@@ -25,37 +25,37 @@ import { humanize } from "@jsenv/humanize";
|
|
|
25
25
|
{ foo: true },
|
|
26
26
|
{ objectConstructor: true, useNew: true },
|
|
27
27
|
);
|
|
28
|
-
const
|
|
28
|
+
const expect = `new Object({
|
|
29
29
|
"foo": true
|
|
30
30
|
})`;
|
|
31
31
|
assert({
|
|
32
32
|
actual,
|
|
33
|
-
|
|
33
|
+
expect,
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
{
|
|
38
38
|
const actual = humanize({ 0: "foo" });
|
|
39
|
-
const
|
|
39
|
+
const expect = `{
|
|
40
40
|
0: "foo"
|
|
41
41
|
}`;
|
|
42
|
-
assert({ actual,
|
|
42
|
+
assert({ actual, expect });
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
{
|
|
46
46
|
const actual = humanize({ Infinity: "foo" });
|
|
47
|
-
const
|
|
47
|
+
const expect = `{
|
|
48
48
|
"Infinity": "foo"
|
|
49
49
|
}`;
|
|
50
|
-
assert({ actual,
|
|
50
|
+
assert({ actual, expect });
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
{
|
|
54
54
|
const actual = humanize({ name: "dam" }, { quote: "'" });
|
|
55
|
-
const
|
|
55
|
+
const expect = `{
|
|
56
56
|
'name': 'dam'
|
|
57
57
|
}`;
|
|
58
|
-
assert({ actual,
|
|
58
|
+
assert({ actual, expect });
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
{
|
|
@@ -63,24 +63,24 @@ import { humanize } from "@jsenv/humanize";
|
|
|
63
63
|
{ foo: true, nested: { bar: true } },
|
|
64
64
|
{ parenthesis: true },
|
|
65
65
|
);
|
|
66
|
-
const
|
|
66
|
+
const expect = `({
|
|
67
67
|
"foo": true,
|
|
68
68
|
"nested": ({
|
|
69
69
|
"bar": true
|
|
70
70
|
})
|
|
71
71
|
})`;
|
|
72
|
-
assert({ actual,
|
|
72
|
+
assert({ actual, expect });
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
{
|
|
76
76
|
const foo = { foo: true, bar: false };
|
|
77
77
|
|
|
78
78
|
const actual = humanize(foo);
|
|
79
|
-
const
|
|
79
|
+
const expect = `{
|
|
80
80
|
"foo": true,
|
|
81
81
|
"bar": false
|
|
82
82
|
}`;
|
|
83
|
-
assert({ actual,
|
|
83
|
+
assert({ actual, expect });
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
{
|
|
@@ -89,19 +89,19 @@ import { humanize } from "@jsenv/humanize";
|
|
|
89
89
|
foo: true,
|
|
90
90
|
}),
|
|
91
91
|
);
|
|
92
|
-
const
|
|
93
|
-
assert({ actual,
|
|
92
|
+
const expect = "{}";
|
|
93
|
+
assert({ actual, expect });
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
{
|
|
97
97
|
const nested = { foo: { name: "dam" } };
|
|
98
98
|
const actual = humanize(nested);
|
|
99
|
-
const
|
|
99
|
+
const expect = `{
|
|
100
100
|
"foo": {
|
|
101
101
|
"name": "dam"
|
|
102
102
|
}
|
|
103
103
|
}`;
|
|
104
|
-
assert({ actual,
|
|
104
|
+
assert({ actual, expect });
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
{
|
|
@@ -110,11 +110,11 @@ import { humanize } from "@jsenv/humanize";
|
|
|
110
110
|
};
|
|
111
111
|
circularObject.self = circularObject;
|
|
112
112
|
const actual = humanize(circularObject);
|
|
113
|
-
const
|
|
113
|
+
const expect = `{
|
|
114
114
|
"foo": true,
|
|
115
115
|
"self": Symbol.for('circular')
|
|
116
116
|
}`;
|
|
117
|
-
assert({ actual,
|
|
117
|
+
assert({ actual, expect });
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
{
|
|
@@ -126,30 +126,30 @@ import { humanize } from "@jsenv/humanize";
|
|
|
126
126
|
parent: nestedCircularObject,
|
|
127
127
|
};
|
|
128
128
|
const actual = humanize(nestedCircularObject);
|
|
129
|
-
const
|
|
129
|
+
const expect = `{
|
|
130
130
|
"foo": true,
|
|
131
131
|
"nested": {
|
|
132
132
|
"bar": true,
|
|
133
133
|
"parent": Symbol.for('circular')
|
|
134
134
|
}
|
|
135
135
|
}`;
|
|
136
|
-
assert({ actual,
|
|
136
|
+
assert({ actual, expect });
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
{
|
|
140
140
|
const actual = humanize(Object.create(null));
|
|
141
|
-
const
|
|
142
|
-
assert({ actual,
|
|
141
|
+
const expect = "{}";
|
|
142
|
+
assert({ actual, expect });
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
{
|
|
146
146
|
const object = Object.create(null);
|
|
147
147
|
object[Symbol.toStringTag] = "stuff";
|
|
148
148
|
const actual = humanize(object);
|
|
149
|
-
const
|
|
149
|
+
const expect = `{
|
|
150
150
|
[Symbol("Symbol.toStringTag")]: "stuff"
|
|
151
151
|
}`;
|
|
152
|
-
assert({ actual,
|
|
152
|
+
assert({ actual, expect });
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
{
|
|
@@ -157,17 +157,17 @@ import { humanize } from "@jsenv/humanize";
|
|
|
157
157
|
object[Symbol.toStringTag] = "stuff";
|
|
158
158
|
object.foo = true;
|
|
159
159
|
const actual = humanize(object);
|
|
160
|
-
const
|
|
160
|
+
const expect = `{
|
|
161
161
|
"foo": true,
|
|
162
162
|
[Symbol("Symbol.toStringTag")]: "stuff"
|
|
163
163
|
}`;
|
|
164
|
-
assert({ actual,
|
|
164
|
+
assert({ actual, expect });
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
{
|
|
168
168
|
const actual = humanize({ [Symbol()]: true });
|
|
169
|
-
const
|
|
169
|
+
const expect = `{
|
|
170
170
|
[Symbol()]: true
|
|
171
171
|
}`;
|
|
172
|
-
assert({ actual,
|
|
172
|
+
assert({ actual, expect });
|
|
173
173
|
}
|
|
@@ -3,12 +3,12 @@ import { humanize } from "@jsenv/humanize";
|
|
|
3
3
|
|
|
4
4
|
{
|
|
5
5
|
const actual = humanize(/ok/g);
|
|
6
|
-
const
|
|
7
|
-
assert({ actual,
|
|
6
|
+
const expect = "/ok/g";
|
|
7
|
+
assert({ actual, expect });
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
{
|
|
11
11
|
const actual = humanize(new RegExp("foo", "g"));
|
|
12
|
-
const
|
|
13
|
-
assert({ actual,
|
|
12
|
+
const expect = "/foo/g";
|
|
13
|
+
assert({ actual, expect });
|
|
14
14
|
}
|
|
@@ -3,104 +3,104 @@ import { humanize } from "@jsenv/humanize";
|
|
|
3
3
|
|
|
4
4
|
{
|
|
5
5
|
const actual = humanize(String.fromCharCode(127));
|
|
6
|
-
const
|
|
7
|
-
assert({ actual,
|
|
6
|
+
const expect = `"\\x7F"`;
|
|
7
|
+
assert({ actual, expect });
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
{
|
|
11
11
|
const actual = humanize("");
|
|
12
|
-
const
|
|
13
|
-
assert({ actual,
|
|
12
|
+
const expect = `""`;
|
|
13
|
+
assert({ actual, expect });
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
{
|
|
17
17
|
const actual = humanize("dam");
|
|
18
|
-
const
|
|
19
|
-
assert({ actual,
|
|
18
|
+
const expect = `"dam"`;
|
|
19
|
+
assert({ actual, expect });
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
{
|
|
23
23
|
const actual = humanize("don't");
|
|
24
|
-
const
|
|
25
|
-
assert({ actual,
|
|
24
|
+
const expect = `"don't"`;
|
|
25
|
+
assert({ actual, expect });
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
{
|
|
29
29
|
const actual = humanize("don't", { quote: "'" });
|
|
30
|
-
const
|
|
31
|
-
assert({ actual,
|
|
30
|
+
const expect = `'don\\\'t'`;
|
|
31
|
+
assert({ actual, expect });
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
{
|
|
35
35
|
const actual = humanize(`his name is "dam"`);
|
|
36
|
-
const
|
|
37
|
-
assert({ actual,
|
|
36
|
+
const expect = `'his name is "dam"'`;
|
|
37
|
+
assert({ actual, expect });
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
{
|
|
41
41
|
const actual = humanize(`his name is "dam"`, { quote: "'" });
|
|
42
|
-
const
|
|
43
|
-
assert({ actual,
|
|
42
|
+
const expect = `'his name is "dam"'`;
|
|
43
|
+
assert({ actual, expect });
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
{
|
|
47
47
|
const actual = humanize("a\nb");
|
|
48
|
-
const
|
|
49
|
-
assert({ actual,
|
|
48
|
+
const expect = `"a\\nb"`;
|
|
49
|
+
assert({ actual, expect });
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
{
|
|
53
53
|
const actual = humanize("a\rb");
|
|
54
|
-
const
|
|
55
|
-
assert({ actual,
|
|
54
|
+
const expect = `"a\\rb"`;
|
|
55
|
+
assert({ actual, expect });
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
{
|
|
59
59
|
const actual = humanize("a\u2028b");
|
|
60
|
-
const
|
|
61
|
-
assert({ actual,
|
|
60
|
+
const expect = `"a\\u2028b"`;
|
|
61
|
+
assert({ actual, expect });
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
{
|
|
65
65
|
const actual = humanize("a\u2029b");
|
|
66
|
-
const
|
|
67
|
-
assert({ actual,
|
|
66
|
+
const expect = `"a\\u2029b"`;
|
|
67
|
+
assert({ actual, expect });
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
{
|
|
71
71
|
// eslint-disable-next-line no-new-wrappers
|
|
72
72
|
const actual = humanize(new String(""));
|
|
73
|
-
const
|
|
73
|
+
const expect = `String("")`;
|
|
74
74
|
assert({
|
|
75
75
|
actual,
|
|
76
|
-
|
|
76
|
+
expect,
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
{
|
|
81
81
|
// eslint-disable-next-line no-new-wrappers
|
|
82
82
|
const actual = humanize(new String("dam"));
|
|
83
|
-
const
|
|
83
|
+
const expect = `String("dam")`;
|
|
84
84
|
assert({
|
|
85
85
|
actual,
|
|
86
|
-
|
|
86
|
+
expect,
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
{
|
|
91
91
|
const actual = humanize("dam", { quote: "'" });
|
|
92
|
-
const
|
|
93
|
-
assert({ actual,
|
|
92
|
+
const expect = `'dam'`;
|
|
93
|
+
assert({ actual, expect });
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
{
|
|
97
97
|
const actual = humanize(`\`"'`);
|
|
98
|
-
const
|
|
99
|
-
assert({ actual,
|
|
98
|
+
const expect = `"\`\\\"'"`;
|
|
99
|
+
assert({ actual, expect });
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
{
|
|
103
103
|
const actual = humanize(`""''`);
|
|
104
|
-
const
|
|
105
|
-
assert({ actual,
|
|
104
|
+
const expect = `\`""''\``;
|
|
105
|
+
assert({ actual, expect });
|
|
106
106
|
}
|
|
@@ -3,18 +3,18 @@ import { humanize } from "@jsenv/humanize";
|
|
|
3
3
|
|
|
4
4
|
{
|
|
5
5
|
const actual = humanize(Symbol());
|
|
6
|
-
const
|
|
7
|
-
assert({ actual,
|
|
6
|
+
const expect = "Symbol()";
|
|
7
|
+
assert({ actual, expect });
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
{
|
|
11
11
|
const actual = humanize(Symbol("foo"));
|
|
12
|
-
const
|
|
13
|
-
assert({ actual,
|
|
12
|
+
const expect = `Symbol("foo")`;
|
|
13
|
+
assert({ actual, expect });
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
{
|
|
17
17
|
const actual = humanize(Symbol(42));
|
|
18
|
-
const
|
|
19
|
-
assert({ actual,
|
|
18
|
+
const expect = `Symbol("42")`;
|
|
19
|
+
assert({ actual, expect });
|
|
20
20
|
}
|
|
@@ -6,7 +6,7 @@ try {
|
|
|
6
6
|
createLogger({ logLevel: "foo" });
|
|
7
7
|
throw new Error("should throw");
|
|
8
8
|
} catch (actual) {
|
|
9
|
-
const
|
|
9
|
+
const expect = new Error(`unexpected logLevel.
|
|
10
10
|
--- logLevel ---
|
|
11
11
|
foo
|
|
12
12
|
--- allowed log levels ---
|
|
@@ -15,77 +15,77 @@ error
|
|
|
15
15
|
warn
|
|
16
16
|
info
|
|
17
17
|
debug`);
|
|
18
|
-
assert({ actual,
|
|
18
|
+
assert({ actual, expect });
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
{
|
|
22
22
|
const logger = createLogger();
|
|
23
23
|
const actual = logger.levels;
|
|
24
|
-
const
|
|
24
|
+
const expect = {
|
|
25
25
|
debug: false,
|
|
26
26
|
info: true,
|
|
27
27
|
warn: true,
|
|
28
28
|
error: true,
|
|
29
29
|
};
|
|
30
|
-
assert({ actual,
|
|
30
|
+
assert({ actual, expect });
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
{
|
|
34
34
|
const logger = createLogger({ logLevel: "off" });
|
|
35
35
|
const actual = logger.levels;
|
|
36
|
-
const
|
|
36
|
+
const expect = {
|
|
37
37
|
debug: false,
|
|
38
38
|
info: false,
|
|
39
39
|
warn: false,
|
|
40
40
|
error: false,
|
|
41
41
|
};
|
|
42
|
-
assert({ actual,
|
|
42
|
+
assert({ actual, expect });
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
{
|
|
46
46
|
const logger = createLogger({ logLevel: "debug" });
|
|
47
47
|
const actual = logger.levels;
|
|
48
|
-
const
|
|
48
|
+
const expect = {
|
|
49
49
|
debug: true,
|
|
50
50
|
info: true,
|
|
51
51
|
warn: true,
|
|
52
52
|
error: true,
|
|
53
53
|
};
|
|
54
|
-
assert({ actual,
|
|
54
|
+
assert({ actual, expect });
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
{
|
|
58
58
|
const logger = createLogger({ logLevel: "info" });
|
|
59
59
|
const actual = logger.levels;
|
|
60
|
-
const
|
|
60
|
+
const expect = {
|
|
61
61
|
debug: false,
|
|
62
62
|
info: true,
|
|
63
63
|
warn: true,
|
|
64
64
|
error: true,
|
|
65
65
|
};
|
|
66
|
-
assert({ actual,
|
|
66
|
+
assert({ actual, expect });
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
{
|
|
70
70
|
const logger = createLogger({ logLevel: "warn" });
|
|
71
71
|
const actual = logger.levels;
|
|
72
|
-
const
|
|
72
|
+
const expect = {
|
|
73
73
|
debug: false,
|
|
74
74
|
info: false,
|
|
75
75
|
warn: true,
|
|
76
76
|
error: true,
|
|
77
77
|
};
|
|
78
|
-
assert({ actual,
|
|
78
|
+
assert({ actual, expect });
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
{
|
|
82
82
|
const logger = createLogger({ logLevel: "error" });
|
|
83
83
|
const actual = logger.levels;
|
|
84
|
-
const
|
|
84
|
+
const expect = {
|
|
85
85
|
debug: false,
|
|
86
86
|
info: false,
|
|
87
87
|
warn: false,
|
|
88
88
|
error: true,
|
|
89
89
|
};
|
|
90
|
-
assert({ actual,
|
|
90
|
+
assert({ actual, expect });
|
|
91
91
|
}
|
|
@@ -12,22 +12,22 @@
|
|
|
12
12
|
|
|
13
13
|
// {
|
|
14
14
|
// const actual = getOutput()
|
|
15
|
-
// const
|
|
16
|
-
// assert({ actual,
|
|
15
|
+
// const expect = `a loading\n`
|
|
16
|
+
// assert({ actual, expect })
|
|
17
17
|
// }
|
|
18
18
|
// getOutput = spyStreamOutput(process.stdout)
|
|
19
19
|
// await new Promise((resolve) => setTimeout(resolve, 1500))
|
|
20
20
|
|
|
21
21
|
// {
|
|
22
22
|
// const actual = getOutput()
|
|
23
|
-
// const
|
|
24
|
-
// assert({ actual,
|
|
23
|
+
// const expect = `b loading\n`
|
|
24
|
+
// assert({ actual, expect })
|
|
25
25
|
// }
|
|
26
26
|
// getOutput = spyStreamOutput(process.stdout)
|
|
27
27
|
// await new Promise((resolve) => setTimeout(resolve, 1500))
|
|
28
28
|
|
|
29
29
|
// {
|
|
30
30
|
// const actual = getOutput()
|
|
31
|
-
// const
|
|
32
|
-
// assert({ actual,
|
|
31
|
+
// const expect = `a loading\n`
|
|
32
|
+
// assert({ actual, expect })
|
|
33
33
|
// }
|
|
@@ -2,9 +2,9 @@ import { assert } from "@jsenv/assert";
|
|
|
2
2
|
|
|
3
3
|
import { distributePercentages } from "@jsenv/humanize";
|
|
4
4
|
|
|
5
|
-
const test = (namedNumbers,
|
|
5
|
+
const test = (namedNumbers, expect) => {
|
|
6
6
|
const actual = distributePercentages(namedNumbers);
|
|
7
|
-
assert({ actual,
|
|
7
|
+
assert({ actual, expect });
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
test(
|
|
@@ -11,109 +11,109 @@ import {
|
|
|
11
11
|
// rounds last decimal
|
|
12
12
|
{
|
|
13
13
|
const actual = setRoundedPrecision(0.54);
|
|
14
|
-
const
|
|
15
|
-
assert({ actual,
|
|
14
|
+
const expect = 0.5;
|
|
15
|
+
assert({ actual, expect });
|
|
16
16
|
}
|
|
17
17
|
{
|
|
18
18
|
const actual = setRoundedPrecision(0.55);
|
|
19
|
-
const
|
|
20
|
-
assert({ actual,
|
|
19
|
+
const expect = 0.6;
|
|
20
|
+
assert({ actual, expect });
|
|
21
21
|
}
|
|
22
22
|
// floor last decimal
|
|
23
23
|
{
|
|
24
24
|
const actual = setFlooredPrecision(0.54);
|
|
25
|
-
const
|
|
26
|
-
assert({ actual,
|
|
25
|
+
const expect = 0.5;
|
|
26
|
+
assert({ actual, expect });
|
|
27
27
|
}
|
|
28
28
|
{
|
|
29
29
|
const actual = setFlooredPrecision(0.55);
|
|
30
|
-
const
|
|
31
|
-
assert({ actual,
|
|
30
|
+
const expect = 0.5;
|
|
31
|
+
assert({ actual, expect });
|
|
32
32
|
}
|
|
33
33
|
{
|
|
34
34
|
const actual = setFlooredPrecision(0.501);
|
|
35
|
-
const
|
|
36
|
-
assert({ actual,
|
|
35
|
+
const expect = 0.5;
|
|
36
|
+
assert({ actual, expect });
|
|
37
37
|
}
|
|
38
38
|
// ceil last decimal
|
|
39
39
|
{
|
|
40
40
|
const actual = setCeiledPrecision(0.54);
|
|
41
|
-
const
|
|
42
|
-
assert({ actual,
|
|
41
|
+
const expect = 0.6;
|
|
42
|
+
assert({ actual, expect });
|
|
43
43
|
}
|
|
44
44
|
{
|
|
45
45
|
const actual = setCeiledPrecision(0.54);
|
|
46
|
-
const
|
|
47
|
-
assert({ actual,
|
|
46
|
+
const expect = 0.6;
|
|
47
|
+
assert({ actual, expect });
|
|
48
48
|
}
|
|
49
49
|
{
|
|
50
50
|
const actual = setCeiledPrecision(0.501);
|
|
51
|
-
const
|
|
52
|
-
assert({ actual,
|
|
51
|
+
const expect = 0.6;
|
|
52
|
+
assert({ actual, expect });
|
|
53
53
|
}
|
|
54
54
|
// truncate last decimal
|
|
55
55
|
{
|
|
56
56
|
const actual = setPrecision(0.501);
|
|
57
|
-
const
|
|
58
|
-
assert({ actual,
|
|
57
|
+
const expect = 0.5;
|
|
58
|
+
assert({ actual, expect });
|
|
59
59
|
}
|
|
60
60
|
{
|
|
61
61
|
const actual = setPrecision(0.56);
|
|
62
|
-
const
|
|
63
|
-
assert({ actual,
|
|
62
|
+
const expect = 0.5;
|
|
63
|
+
assert({ actual, expect });
|
|
64
64
|
}
|
|
65
65
|
// rounded tests
|
|
66
66
|
{
|
|
67
67
|
const actual = setRoundedPrecision(0.0101);
|
|
68
|
-
const
|
|
69
|
-
assert({ actual,
|
|
68
|
+
const expect = 0.01;
|
|
69
|
+
assert({ actual, expect });
|
|
70
70
|
}
|
|
71
71
|
{
|
|
72
72
|
const actual = setRoundedPrecision(0.012);
|
|
73
|
-
const
|
|
74
|
-
assert({ actual,
|
|
73
|
+
const expect = 0.01;
|
|
74
|
+
assert({ actual, expect });
|
|
75
75
|
}
|
|
76
76
|
{
|
|
77
77
|
const actual = setRoundedPrecision(0.016);
|
|
78
|
-
const
|
|
79
|
-
assert({ actual,
|
|
78
|
+
const expect = 0.02;
|
|
79
|
+
assert({ actual, expect });
|
|
80
80
|
}
|
|
81
81
|
{
|
|
82
82
|
const actual = setRoundedPrecision(0.016556, {
|
|
83
83
|
decimals: 3,
|
|
84
84
|
});
|
|
85
|
-
const
|
|
86
|
-
assert({ actual,
|
|
85
|
+
const expect = 0.0166;
|
|
86
|
+
assert({ actual, expect });
|
|
87
87
|
}
|
|
88
88
|
{
|
|
89
89
|
const actual = setRoundedPrecision(0);
|
|
90
|
-
const
|
|
91
|
-
assert({ actual,
|
|
90
|
+
const expect = 0;
|
|
91
|
+
assert({ actual, expect });
|
|
92
92
|
}
|
|
93
93
|
{
|
|
94
94
|
const actual = setRoundedPrecision(-0.0015);
|
|
95
|
-
const
|
|
96
|
-
assert({ actual,
|
|
95
|
+
const expect = -0.002;
|
|
96
|
+
assert({ actual, expect });
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
/* numbers above 1 */
|
|
100
100
|
{
|
|
101
101
|
const actual = setRoundedPrecision(37.04);
|
|
102
|
-
const
|
|
103
|
-
assert({ actual,
|
|
102
|
+
const expect = 37;
|
|
103
|
+
assert({ actual, expect });
|
|
104
104
|
}
|
|
105
105
|
{
|
|
106
106
|
const actual = setRoundedPrecision(37.05);
|
|
107
|
-
const
|
|
108
|
-
assert({ actual,
|
|
107
|
+
const expect = 37.1;
|
|
108
|
+
assert({ actual, expect });
|
|
109
109
|
}
|
|
110
110
|
{
|
|
111
111
|
const actual = setCeiledPrecision(37.01);
|
|
112
|
-
const
|
|
113
|
-
assert({ actual,
|
|
112
|
+
const expect = 37.1;
|
|
113
|
+
assert({ actual, expect });
|
|
114
114
|
}
|
|
115
115
|
{
|
|
116
116
|
const actual = setFlooredPrecision(37.01);
|
|
117
|
-
const
|
|
118
|
-
assert({ actual,
|
|
117
|
+
const expect = 37;
|
|
118
|
+
assert({ actual, expect });
|
|
119
119
|
}
|
|
@@ -2,9 +2,9 @@ import { assert } from "@jsenv/assert";
|
|
|
2
2
|
|
|
3
3
|
import { humanizeDuration } from "@jsenv/humanize";
|
|
4
4
|
|
|
5
|
-
const test = (durationInMs,
|
|
5
|
+
const test = (durationInMs, expect) => {
|
|
6
6
|
const actual = humanizeDuration(durationInMs);
|
|
7
|
-
assert({ actual,
|
|
7
|
+
assert({ actual, expect });
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
test(0.1, "0 second");
|