[FIX] Add tests for parsing integers and floats, fix parsing of floats in case user locale defines thousand separator as the dot

lp bug: https://launchpad.net/bugs/893575 fixed

bzr revid: xmo@openerp.com-20111129095958-966ikmsgf6zwamdh
This commit is contained in:
Xavier Morel 2011-11-29 10:59:58 +01:00
parent b30865bdef
commit 90dfdbaf6a
2 changed files with 16 additions and 2 deletions

View File

@ -158,12 +158,13 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
var tmp = Number(value);
if (!isNaN(tmp))
return tmp;
tmp = value.replace(openerp.web._t.database.parameters.decimal_point, ".");
var tmp2 = tmp;
var tmp2 = tmp = value;
do {
tmp = tmp2;
tmp2 = tmp.replace(openerp.web._t.database.parameters.thousands_sep, "");
} while(tmp !== tmp2);
tmp = tmp.replace(openerp.web._t.database.parameters.decimal_point, ".");
tmp = Number(tmp);
if (isNaN(tmp))
throw new Error(value + " is not a correct float");

View File

@ -63,6 +63,13 @@ $(document).ready(function () {
// var res = openerp.web.parse_value(val.toString("HH:mm:ss"), {type:"time"});
// equal(val.toString("HH:mm:ss"), res.toString("HH:mm:ss"));
// });
test('parse_integer', function () {
var val = openerp.web.parse_value('123,456', {type: 'integer'});
equal(val, 123456);
openerp.web._t.database.parameters.thousands_sep = '|';
var val2 = openerp.web.parse_value('123|456', {type: 'integer'});
equal(val2, 123456);
});
test("parse_float", function () {
var str = "134,112.1234";
var val = openerp.web.parse_value(str, {type:"float"});
@ -70,6 +77,12 @@ $(document).ready(function () {
var str = "-134,112.1234";
var val = openerp.web.parse_value(str, {type:"float"});
equal(val, -134112.1234);
_.extend(openerp.web._t.database.parameters, {
decimal_point: ',',
thousands_sep: '.'
});
var val3 = openerp.web.parse_value('123.456,789', {type: 'float'});
equal(val3, 123456.789);
});
test('intersperse', function () {
var g = openerp.web.intersperse;