1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
// SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
// SPDX-FileCopyrightText: 2013 Red Hat, Inc.
// eslint-disable-next-line no-restricted-properties
const Format = imports.format;
String.prototype.format = Format.format;
describe('imports.format', function () {
it('escapes % with another % character', function () {
expect('%d%%'.format(10)).toEqual('10%');
});
it('formats a single string argument', function () {
expect('%s'.format('Foo')).toEqual('Foo');
});
it('formats two string arguments', function () {
expect('%s %s'.format('Foo', 'Bar')).toEqual('Foo Bar');
});
it('formats two swapped string arguments', function () {
expect('%2$s %1$s'.format('Foo', 'Bar')).toEqual('Bar Foo');
});
it('formats a number in base 10', function () {
expect('%d'.format(42)).toEqual('42');
});
it('formats a number in base 16', function () {
expect('%x'.format(42)).toEqual('2a');
});
it('formats a floating point number with no precision', function () {
expect('%f'.format(0.125)).toEqual('0.125');
});
it('formats a floating point number with precision 2', function () {
expect('%.2f'.format(0.125)).toEqual('0.13');
});
it('pads with zeroes', function () {
let zeroFormat = '%04d';
expect(zeroFormat.format(1)).toEqual('0001');
expect(zeroFormat.format(10)).toEqual('0010');
expect(zeroFormat.format(100)).toEqual('0100');
});
it('pads with spaces', function () {
let spaceFormat = '%4d';
expect(spaceFormat.format(1)).toEqual(' 1');
expect(spaceFormat.format(10)).toEqual(' 10');
expect(spaceFormat.format(100)).toEqual(' 100');
});
it('throws an error when given incorrect modifiers for the conversion type', function () {
expect(() => '%z'.format(42)).toThrow();
expect(() => '%.2d'.format(42)).toThrow();
expect(() => '%Ix'.format(42)).toThrow();
});
it('throws an error when incorrectly instructed to swap arguments', function () {
expect(() => '%2$d %d %1$d'.format(1, 2, 3)).toThrow();
});
});
|