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();
});
});
|