0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00
nodejs/test/parallel/test-intl.js
Rich Trott 082cc8d6d8 test: remove unnecessary assignments
common.js needs to be loaded in all tests so that there is checking
for variable leaks and possibly other things. However, it does not
need to be assigned to a variable if nothing in common.js is referred
to elsewhere in the test.

PR-URL: https://github.com/nodejs/node/pull/4408
Reviewed-By: James M Snell <jasnell@gmail.com>
2015-12-26 18:00:02 -08:00

84 lines
2.7 KiB
JavaScript

'use strict';
require('../common');
var assert = require('assert');
// does node think that i18n was enabled?
var enablei18n = process.config.variables.v8_enable_i18n_support;
if (enablei18n === undefined) {
enablei18n = false;
}
// is the Intl object present?
var haveIntl = (global.Intl != undefined);
// Returns true if no specific locale ids were configured (i.e. "all")
// Else, returns true if loc is in the configured list
// Else, returns false
function haveLocale(loc) {
var locs = process.config.variables.icu_locales.split(',');
return locs.indexOf(loc) !== -1;
}
if (!haveIntl) {
var erMsg =
'"Intl" object is NOT present but v8_enable_i18n_support is ' +
enablei18n;
assert.equal(enablei18n, false, erMsg);
console.log('1..0 # Skipped: Intl tests because Intl object not present.');
} else {
var erMsg =
'"Intl" object is present but v8_enable_i18n_support is ' +
enablei18n +
'. Is this test out of date?';
assert.equal(enablei18n, true, erMsg);
// Construct a new date at the beginning of Unix time
var date0 = new Date(0);
// Use the GMT time zone
var GMT = 'Etc/GMT';
// Construct an English formatter. Should format to "Jan 70"
var dtf =
new Intl.DateTimeFormat(['en'],
{timeZone: GMT, month: 'short', year: '2-digit'});
// If list is specified and doesn't contain 'en' then return.
if (process.config.variables.icu_locales && !haveLocale('en')) {
console.log('1..0 # Skipped: detailed Intl tests because English is not ' +
'listed as supported.');
// Smoke test. Does it format anything, or fail?
console.log('Date(0) formatted to: ' + dtf.format(date0));
return;
}
// Check with toLocaleString
var localeString = dtf.format(date0);
assert.equal(localeString, 'Jan 70');
// Options to request GMT
var optsGMT = {timeZone: GMT};
// Test format
localeString = date0.toLocaleString(['en'], optsGMT);
assert.equal(localeString, '1/1/1970, 12:00:00 AM');
// number format
assert.equal(new Intl.NumberFormat(['en']).format(12345.67890), '12,345.679');
var collOpts = { sensitivity: 'base', ignorePunctuation: true };
var coll = new Intl.Collator(['en'], collOpts);
assert.equal(coll.compare('blackbird', 'black-bird'), 0,
'ignore punctuation failed');
assert.equal(coll.compare('blackbird', 'red-bird'), -1,
'compare less failed');
assert.equal(coll.compare('bluebird', 'blackbird'), 1,
'compare greater failed');
assert.equal(coll.compare('Bluebird', 'bluebird'), 0,
'ignore case failed');
assert.equal(coll.compare('\ufb03', 'ffi'), 0,
'ffi ligature (contraction) failed');
}