![JAR search and dependency download from the Maven repository](/logo.png)
features.i18n.numberformattest.js Maven / Gradle / Ivy
Go to download
Packages all the features that shindig provides into a single jar file to allow
loading from the classpath
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
/**
* @fileoverview Unit Tests - gadgets.i18n.NumberFormat.
*/
function NumberFormatTest(name) {
TestCase.call(this, name);
}
NumberFormatTest.inherits(TestCase);
var NumberFormatConstants_en = {
DECIMAL_SEP: '.',
GROUP_SEP: ',',
PERCENT: '%',
ZERO_DIGIT: '0',
PLUS_SIGN: '+',
MINUS_SIGN: '-',
EXP_SYMBOL: 'E',
PERMILL: '\u2030',
INFINITY: '\u221E',
NAN: 'NaN',
MONETARY_SEP: '.',
MONETARY_GROUP_SEP: ',',
DECIMAL_PATTERN: '#,##0.###',
SCIENTIFIC_PATTERN: '#E0',
PERCENT_PATTERN: '#,##0%',
CURRENCY_PATTERN: '\u00A4#,##0.00',
DEF_CURRENCY_CODE: 'USD'
};
NumberFormatTest.prototype.setUp = function() {
gadgets.i18n.numFormatter_
= new gadgets.i18n.NumberFormat(NumberFormatConstants_en);
};
NumberFormatTest.prototype.testStandardFormat = function() {
var str;
str = gadgets.i18n.formatNumber(gadgets.i18n.CURRENCY_PATTERN, 1234.579);
this.assertEquals('$1,234.58', str);
str = gadgets.i18n.formatNumber(gadgets.i18n.DECIMAL_PATTERN, 1234.579);
this.assertEquals('1,234.579', str);
str = gadgets.i18n.formatNumber(gadgets.i18n.PERCENT_PATTERN, 1234.579);
this.assertEquals('123,458%', str);
str = gadgets.i18n.formatNumber(gadgets.i18n.SCIENTIFIC_PATTERN, 1234.579);
this.assertEquals('1E3', str);
};
NumberFormatTest.prototype.testBasicParse = function() {
var value;
value = gadgets.i18n.parseNumber('0.0000', '123.4579');
this.assertEquals(123.4579, value);
value = gadgets.i18n.parseNumber('0.0000', '+123.4579');
this.assertEquals(123.4579, value);
value = gadgets.i18n.parseNumber('0.0000', '-123.4579');
this.assertEquals(-123.4579, value);
};
NumberFormatTest.prototype.testPrefixParse = function() {
var value;
value = gadgets.i18n.parseNumber('0.0;(0.0)', '123.4579');
this.assertEquals(123.4579, value);
value = gadgets.i18n.parseNumber('0.0;(0.0)', '(123.4579)');
this.assertEquals(-123.4579, value);
};
NumberFormatTest.prototype.testPrecentParse = function() {
var value;
value = gadgets.i18n.parseNumber('0.0;(0.0)', '123.4579%');
this.assertEquals((123.4579 / 100), value);
value = gadgets.i18n.parseNumber('0.0;(0.0)', '(%123.4579)');
this.assertEquals((-123.4579 / 100), value);
value = gadgets.i18n.parseNumber('0.0;(0.0)', '123.4579\u2030');
this.assertEquals((123.4579 / 1000), value);
value = gadgets.i18n.parseNumber('0.0;(0.0)', '(\u2030123.4579)');
this.assertEquals((-123.4579 / 1000), value);
};
NumberFormatTest.prototype.testPercentAndPerMillAdvance = function() {
var value;
var pos = [0];
value = gadgets.i18n.parseNumber('0', '120%', pos);
this.assertEquals(1.2, value);
this.assertEquals(4, pos[0]);
pos[0] = 0;
value = gadgets.i18n.parseNumber('0', '120\u2030', pos);
this.assertEquals(0.12, value);
this.assertEquals(4, pos[0]);
};
NumberFormatTest.prototype.testInfinityParse = function() {
var value;
// gwt need to add those symbols first
value = gadgets.i18n.parseNumber('0.0;(0.0)', '\u221e');
this.assertEquals(Number.POSITIVE_INFINITY, value);
value = gadgets.i18n.parseNumber('0.0;(0.0)', '(\u221e)');
this.assertEquals(Number.NEGATIVE_INFINITY, value);
};
NumberFormatTest.prototype.testExponentParse = function() {
var value;
value = gadgets.i18n.parseNumber('#E0', '1.234E3');
this.assertEquals(1.234E+3, value);
value = gadgets.i18n.parseNumber('0.###E0', '1.234E3');
this.assertEquals(1.234E+3, value);
value = gadgets.i18n.parseNumber('#E0', '1.2345E4');
this.assertEquals(12345.0, value);
value = gadgets.i18n.parseNumber('0E0', '1.2345E4');
this.assertEquals(12345.0, value);
value = gadgets.i18n.parseNumber('0E0', '1.2345E+4');
this.assertEquals(12345.0, value);
};
NumberFormatTest.prototype.testGroupingParse = function() {
var value;
value = gadgets.i18n.parseNumber('#,###', '1,234,567,890');
this.assertEquals(1234567890, value);
value = gadgets.i18n.parseNumber('#,####', '12,3456,7890');
this.assertEquals(1234567890, value);
value = gadgets.i18n.parseNumber('#', '1234567890');
this.assertEquals(1234567890, value);
};
/**
* Add as many tests as you like.
*/
NumberFormatTest.prototype.testBasicFormat = function() {
var str = gadgets.i18n.formatNumber('0.0000', 123.45789179565757);
this.assertEquals('123.4579', str);
};
NumberFormatTest.prototype.testGrouping = function() {
var str;
str = gadgets.i18n.formatNumber('#,###', 1234567890);
this.assertEquals('1,234,567,890', str);
str = gadgets.i18n.formatNumber('#,####', 1234567890);
this.assertEquals('12,3456,7890', str);
str = gadgets.i18n.formatNumber('#', 1234567890);
this.assertEquals('1234567890', str);
};
NumberFormatTest.prototype.testPerMill = function() {
var str;
str = gadgets.i18n.formatNumber('###.###\u2030', 0.4857);
this.assertEquals('485.7\u2030', str);
};
NumberFormatTest.prototype.testCurrency = function() {
var str;
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;-\u00a4#,##0.00', 1234.56);
this.assertEquals('$1,234.56', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;-\u00a4#,##0.00', -1234.56);
this.assertEquals('-$1,234.56', str);
str = gadgets.i18n.formatNumber(
'\u00a4\u00a4 #,##0.00;-\u00a4\u00a4 #,##0.00', 1234.56);
this.assertEquals('USD 1,234.56', str);
str = gadgets.i18n.formatNumber(
'\u00a4\u00a4 #,##0.00;\u00a4\u00a4 -#,##0.00', -1234.56);
this.assertEquals('USD -1,234.56', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;-\u00a4#,##0.00',
1234.56, 'BRL');
this.assertEquals('R$1,234.56', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;-\u00a4#,##0.00',
-1234.56, 'BRL');
this.assertEquals('-R$1,234.56', str);
str = gadgets.i18n.formatNumber(
'\u00a4\u00a4 #,##0.00;(\u00a4\u00a4 #,##0.00)', 1234.56, 'BRL');
this.assertEquals('BRL 1,234.56', str);
str = gadgets.i18n.formatNumber(
'\u00a4\u00a4 #,##0.00;(\u00a4\u00a4 #,##0.00)', -1234.56, 'BRL');
this.assertEquals('(BRL 1,234.56)', str);
};
NumberFormatTest.prototype.testQuotes = function() {
var str;
str = gadgets.i18n.formatNumber("a'fo''o'b#", 123);
this.assertEquals("afo'ob123", str);
str = gadgets.i18n.formatNumber("a''b#", 123);
this.assertEquals("a'b123", str);
};
NumberFormatTest.prototype.testZeros = function() {
var str;
str = gadgets.i18n.formatNumber('#.#', 0);
this.assertEquals('0', str);
str = gadgets.i18n.formatNumber('#.', 0);
this.assertEquals('0.', str);
str = gadgets.i18n.formatNumber('.#', 0);
this.assertEquals('.0', str);
str = gadgets.i18n.formatNumber('#', 0);
this.assertEquals('0', str);
str = gadgets.i18n.formatNumber('#0.#', 0);
this.assertEquals('0', str);
str = gadgets.i18n.formatNumber('#0.', 0);
this.assertEquals('0.', str);
str = gadgets.i18n.formatNumber('#.0', 0);
this.assertEquals('.0', str);
str = gadgets.i18n.formatNumber('#', 0);
this.assertEquals('0', str);
str = gadgets.i18n.formatNumber('000', 0);
this.assertEquals('000', str);
};
NumberFormatTest.prototype.testExponential = function() {
var str;
str = gadgets.i18n.formatNumber('0.####E0', 0.01234);
this.assertEquals('1.234E-2', str);
str = gadgets.i18n.formatNumber('00.000E00', 0.01234);
this.assertEquals('12.340E-03', str);
str = gadgets.i18n.formatNumber('##0.######E000', 0.01234);
this.assertEquals('12.34E-003', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', 0.01234);
this.assertEquals('1.234E-2', str);
str = gadgets.i18n.formatNumber('0.####E0', 123456789);
this.assertEquals('1.2346E8', str);
str = gadgets.i18n.formatNumber('00.000E00', 123456789);
this.assertEquals('12.346E07', str);
str = gadgets.i18n.formatNumber('##0.######E000', 123456789);
this.assertEquals('123.456789E006', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', 123456789);
this.assertEquals('1.235E8', str);
str = gadgets.i18n.formatNumber('0.####E0', 1.23e300);
this.assertEquals('1.23E300', str);
str = gadgets.i18n.formatNumber('00.000E00', 1.23e300);
this.assertEquals('12.300E299', str);
str = gadgets.i18n.formatNumber('##0.######E000', 1.23e300);
this.assertEquals('1.23E300', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', 1.23e300);
this.assertEquals('1.23E300', str);
str = gadgets.i18n.formatNumber('0.####E0', -3.141592653e-271);
this.assertEquals('-3.1416E-271', str);
str = gadgets.i18n.formatNumber('00.000E00', -3.141592653e-271);
this.assertEquals('-31.416E-272', str);
str = gadgets.i18n.formatNumber('##0.######E000', -3.141592653e-271);
this.assertEquals('-314.159265E-273', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', -3.141592653e-271);
this.assertEquals('[3.142E-271]', str);
str = gadgets.i18n.formatNumber('0.####E0', 0);
this.assertEquals('0E0', str);
str = gadgets.i18n.formatNumber('00.000E00', 0);
this.assertEquals('00.000E00', str);
str = gadgets.i18n.formatNumber('##0.######E000', 0);
this.assertEquals('0E000', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', 0);
this.assertEquals('0E0', str);
str = gadgets.i18n.formatNumber('0.####E0', -1);
this.assertEquals('-1E0', str);
str = gadgets.i18n.formatNumber('00.000E00', -1);
this.assertEquals('-10.000E-01', str);
str = gadgets.i18n.formatNumber('##0.######E000', -1);
this.assertEquals('-1E000', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', -1);
this.assertEquals('[1E0]', str);
str = gadgets.i18n.formatNumber('0.####E0', 1);
this.assertEquals('1E0', str);
str = gadgets.i18n.formatNumber('00.000E00', 1);
this.assertEquals('10.000E-01', str);
str = gadgets.i18n.formatNumber('##0.######E000', 1);
this.assertEquals('1E000', str);
str = gadgets.i18n.formatNumber('0.###E0;[0.###E0]', 1);
this.assertEquals('1E0', str);
str = gadgets.i18n.formatNumber('#E0', 12345.0);
//assertEquals(".1E5", str);
this.assertEquals('1E4', str);
str = gadgets.i18n.formatNumber('0E0', 12345.0);
this.assertEquals('1E4', str);
str = gadgets.i18n.formatNumber('##0.###E0', 12345.0);
this.assertEquals('12.345E3', str);
str = gadgets.i18n.formatNumber('##0.###E0', 12345.00001);
this.assertEquals('12.345E3', str);
str = gadgets.i18n.formatNumber('##0.###E0', 12345);
this.assertEquals('12.345E3', str);
str = gadgets.i18n.formatNumber('##0.####E0', 789.12345e-9);
this.assertEquals('789.1235E-9', str);
str = gadgets.i18n.formatNumber('##0.####E0', 780.e-9);
this.assertEquals('780E-9', str);
str = gadgets.i18n.formatNumber('.###E0', 45678.0);
this.assertEquals('.457E5', str);
str = gadgets.i18n.formatNumber('.###E0', 0);
this.assertEquals('.0E0', str);
str = gadgets.i18n.formatNumber('#E0', 45678000);
this.assertEquals('5E7', str);
str = gadgets.i18n.formatNumber('##E0', 45678000);
this.assertEquals('46E6', str);
str = gadgets.i18n.formatNumber('####E0', 45678000);
this.assertEquals('4568E4', str);
str = gadgets.i18n.formatNumber('0E0', 45678000);
this.assertEquals('5E7', str);
str = gadgets.i18n.formatNumber('00E0', 45678000);
this.assertEquals('46E6', str);
str = gadgets.i18n.formatNumber('000E0', 45678000);
this.assertEquals('457E5', str);
str = gadgets.i18n.formatNumber('###E0', 0.0000123);
this.assertEquals('12E-6', str);
str = gadgets.i18n.formatNumber('###E0', 0.000123);
this.assertEquals('123E-6', str);
str = gadgets.i18n.formatNumber('###E0', 0.00123);
this.assertEquals('1E-3', str);
str = gadgets.i18n.formatNumber('###E0', 0.0123);
this.assertEquals('12E-3', str);
str = gadgets.i18n.formatNumber('###E0', 0.123);
this.assertEquals('123E-3', str);
str = gadgets.i18n.formatNumber('###E0', 1.23);
this.assertEquals('1E0', str);
str = gadgets.i18n.formatNumber('###E0', 12.3);
this.assertEquals('12E0', str);
str = gadgets.i18n.formatNumber('###E0', 123.0);
this.assertEquals('123E0', str);
str = gadgets.i18n.formatNumber('###E0', 1230.0);
this.assertEquals('1E3', str);
};
NumberFormatTest.prototype.testGroupingParse2 = function() {
var value;
value = gadgets.i18n.parseNumber('#,###', '1,234,567,890');
this.assertEquals(1234567890, value);
value = gadgets.i18n.parseNumber('#,####', '12,3456,7890');
this.assertEquals(1234567890, value);
value = gadgets.i18n.parseNumber('#', '1234567890');
this.assertEquals(1234567890, value);
};
NumberFormatTest.prototype.testApis = function() {
var str;
str = gadgets.i18n.formatNumber('#,###', 1234567890);
this.assertEquals('1,234,567,890', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;-\u00a4#,##0.00', 1234.56);
this.assertEquals('$1,234.56', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;(\u00a4#,##0.00)',
-1234.56);
this.assertEquals('($1,234.56)', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;-\u00a4#,##0.00',
1234.56, 'SEK');
this.assertEquals('kr1,234.56', str);
str = gadgets.i18n.formatNumber('\u00a4#,##0.00;(\u00a4#,##0.00)',
-1234.56, 'SEK');
this.assertEquals('(kr1,234.56)', str);
};
© 2015 - 2025 Weber Informatics LLC | Privacy Policy