Skip to content

Commit ec6402e

Browse files
committed
Add tests
1 parent 45ffb22 commit ec6402e

File tree

5 files changed

+2340
-5
lines changed

5 files changed

+2340
-5
lines changed

rules/no-zero-fractions.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22
const getDocumentationUrl = require('./utils/get-documentation-url');
3-
const {isNumber, parseNumber} = require('./utils/numeric');
3+
const {isNumber, parseNumber, parseFloat} = require('./utils/numeric');
44

55
const MESSAGE_ZERO_FRACTION = 'zero-fraction';
66
const MESSAGE_DANGLING_DOT = 'dangling-dot';
@@ -12,9 +12,10 @@ const messages = {
1212
const format = text => {
1313
// Legacy octal number `0777` and prefixed number `0o1234` can't has dot.
1414
const {number, mark, sign, power} = parseNumber(text);
15+
const {integer, dot, fractional} = parseFloat(number);
1516
return {
16-
hasDanglingDot: number.endsWith('.'),
17-
formatted: number.replace(/[0_.]$/g, '') + mark + sign + power
17+
hasDanglingDot: !fractional,
18+
formatted: integer + (dot + fractional).replace(/[0_.]+$/g, '') + mark + sign + power
1819
};
1920
}
2021

rules/utils/numeric.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ function parseNumber(text) {
2828
mark = '',
2929
sign = '',
3030
power = ''
31-
} = text.match(/^(?<number>.*?)(?:(?<mark>e)(?<sign>[+-])?(?<power>\d+))?$/i).groups;
31+
} = text.match(/^(?<number>.*?)(?:(?<mark>e)(?<sign>[+-])?(?<power>.+))?$/i).groups;
3232

3333
return {number, mark, sign, power};
3434
}

test/no-zero-fractions.mjs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,36 @@ test.snapshot({
3030
'const foo = 1.e10',
3131
'const foo = +1.e-10',
3232
'const foo = -1.e+10',
33-
'const foo = (1.).toString()'
33+
'const foo = (1.).toString()',
34+
...[
35+
'123_000.',
36+
'123_000.0',
37+
'123_000.000',
38+
'123_000.000_000',
39+
'123_000.123_000',
40+
'123_000.000_400'
41+
]
42+
.flatMap(number => [
43+
number,
44+
`${number}e1`,
45+
`${number}e+1`,
46+
`${number}e-1`,
47+
`${number}e0`,
48+
`${number}e+0`,
49+
`${number}e-0`,
50+
`${number}e10`,
51+
`${number}e+10`,
52+
`${number}e-10`,
53+
`${number}E-10`,
54+
`${number}E-10_10`
55+
])
56+
.flatMap(number => [
57+
`+${number}`,
58+
`-${number}`
59+
])
60+
.flatMap(number => [
61+
`${number};`
62+
])
63+
3464
]
3565
});

0 commit comments

Comments
 (0)