mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-12 16:52:50 +00:00
124 lines
5.8 KiB
JavaScript
124 lines
5.8 KiB
JavaScript
describe('iD.coreLocalizer', function() {
|
|
describe('#localized-text', function() {
|
|
it('appends localized text to the DOM', function() {
|
|
var selection = d3.select(document.createElement('div'));
|
|
selection.call(iD.localizer.t.append('icons.download' /* <- just any random string */));
|
|
expect(selection.selectChild().classed('localized-text')).to.be.true;
|
|
});
|
|
});
|
|
describe('#floatFormatter', function () {
|
|
it('uses the specified number of fraction digits', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var formatFloat = localizer.floatFormatter('en');
|
|
expect(formatFloat(-0.1)).to.eql('-0.1');
|
|
expect(formatFloat(-0.1, 0)).to.eql('-0');
|
|
expect(formatFloat(-0.1, 2)).to.eql('-0.10');
|
|
expect(formatFloat(0.0, 1)).to.eql('0.0');
|
|
});
|
|
it('roundtrips English numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var parseFloat = localizer.floatParser('en');
|
|
var formatFloat = localizer.floatFormatter('en');
|
|
expect(formatFloat(parseFloat('0.1'))).to.eql('0.1');
|
|
expect(formatFloat(parseFloat('.1'))).to.eql('0.1');
|
|
expect(formatFloat(parseFloat('-0.1'))).to.eql('-0.1');
|
|
expect(formatFloat(parseFloat('1.234'))).to.eql('1.234');
|
|
expect(formatFloat(parseFloat('1234'))).to.eql('1,234');
|
|
expect(formatFloat(parseFloat('1234.56'))).to.eql('1,234.56');
|
|
expect(formatFloat(parseFloat('3.14159'))).to.eql('3.14159');
|
|
});
|
|
});
|
|
describe('#floatParser', function () {
|
|
it('roundtrips English numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var formatFloat = localizer.floatFormatter('en');
|
|
var parseFloat = localizer.floatParser('en');
|
|
expect(parseFloat(formatFloat(-0.1))).to.eql(-0.1);
|
|
expect(parseFloat(formatFloat(1.234))).to.eql(1.234);
|
|
expect(parseFloat(formatFloat(1234))).to.eql(1234);
|
|
expect(parseFloat(formatFloat(1234.56))).to.eql(1234.56);
|
|
expect(parseFloat(formatFloat(3.14159))).to.eql(3.14159);
|
|
});
|
|
it('roundtrips Spanish numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var formatFloat = localizer.floatFormatter('es');
|
|
var parseFloat = localizer.floatParser('es');
|
|
expect(parseFloat(formatFloat(-0.1))).to.eql(-0.1);
|
|
expect(parseFloat(formatFloat(1.234))).to.eql(1.234);
|
|
expect(parseFloat(formatFloat(1234))).to.eql(1234);
|
|
expect(parseFloat(formatFloat(1234.56))).to.eql(1234.56);
|
|
expect(parseFloat(formatFloat(3.14159))).to.eql(3.14159);
|
|
});
|
|
it('roundtrips Hebrew numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var formatFloat = localizer.floatFormatter('he');
|
|
var parseFloat = localizer.floatParser('he');
|
|
expect(parseFloat(formatFloat(-0.1))).to.eql(-0.1);
|
|
expect(parseFloat(formatFloat(1.234))).to.eql(1.234);
|
|
expect(parseFloat(formatFloat(1234))).to.eql(1234);
|
|
expect(parseFloat(formatFloat(1234.56))).to.eql(1234.56);
|
|
expect(parseFloat(formatFloat(3.14159))).to.eql(3.14159);
|
|
});
|
|
it('roundtrips Arabic numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var formatFloat = localizer.floatFormatter('ar-EG');
|
|
var parseFloat = localizer.floatParser('ar-EG');
|
|
expect(parseFloat(formatFloat(-0.1))).to.eql(-0.1);
|
|
expect(parseFloat(formatFloat(1.234))).to.eql(1.234);
|
|
expect(parseFloat(formatFloat(1234))).to.eql(1234);
|
|
expect(parseFloat(formatFloat(1234.56))).to.eql(1234.56);
|
|
expect(parseFloat(formatFloat(3.14159))).to.eql(3.14159);
|
|
});
|
|
it('roundtrips Bengali numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var formatFloat = localizer.floatFormatter('bn');
|
|
var parseFloat = localizer.floatParser('bn');
|
|
expect(parseFloat(formatFloat(-0.1))).to.eql(-0.1);
|
|
expect(parseFloat(formatFloat(1.234))).to.eql(1.234);
|
|
expect(parseFloat(formatFloat(1234))).to.eql(1234);
|
|
expect(parseFloat(formatFloat(1234.56))).to.eql(1234.56);
|
|
expect(parseFloat(formatFloat(3.14159))).to.eql(3.14159);
|
|
});
|
|
});
|
|
describe('#decimalPlaceCounter', function () {
|
|
it('counts decimal places in English numbers', function () {
|
|
var localizer = iD.coreLocalizer();
|
|
var countDecimalPlaces = localizer.decimalPlaceCounter('en');
|
|
expect(countDecimalPlaces('-0')).to.eql(0);
|
|
expect(countDecimalPlaces('-0.1')).to.eql(1);
|
|
expect(countDecimalPlaces('1.234')).to.eql(3);
|
|
expect(countDecimalPlaces('10')).to.eql(0);
|
|
});
|
|
});
|
|
|
|
describe('localesToUseFrom', () => {
|
|
const SUPPORTED_LANGS = {
|
|
en: true,
|
|
'en-AU': true,
|
|
fr: true,
|
|
zh: true,
|
|
'zh-CN': true,
|
|
};
|
|
|
|
it.each([
|
|
/* [requested, matching] */
|
|
[[], ['en']],
|
|
[['en'], ['en']],
|
|
[['en-AU'], ['en-AU', 'en']],
|
|
[['zh'], ['zh', 'en']],
|
|
[['zh-CN'], ['zh-CN', 'zh', 'en']],
|
|
[['zh-Hans-CN'], ['zh-CN', 'zh', 'en']],
|
|
[['zh-Hans'], ['zh', 'en']],
|
|
[['fr-Latn'], ['fr', 'en']],
|
|
])('resolves %s to %s', (requested, matching) => {
|
|
const localiser = iD.coreLocalizer();
|
|
localiser.preferredLocaleCodes(requested);
|
|
expect(localiser.localesToUseFrom(SUPPORTED_LANGS)).toStrictEqual(matching);
|
|
});
|
|
|
|
after(function() {
|
|
iD.coreLocalizer().preferredLocaleCodes([]);
|
|
});
|
|
});
|
|
});
|