2e292af41c817076f278f5fdfaa56eb42dede61c
[odoo/odoo.git] / addons / web / static / test / formats.js
1 $(document).ready(function () {
2     var openerp;
3
4     module('server-formats', {
5         setup: function () {
6             openerp = window.openerp.init();
7             window.openerp.web.core(openerp);
8             window.openerp.web.dates(openerp);
9         }
10     });
11     test('Parse server datetime', function () {
12         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
13         deepEqual(
14             [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),
15              date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()],
16             [2009, 5 - 1, 4, 12, 34, 23]);
17         deepEqual(
18             [date.getFullYear(), date.getMonth(), date.getDate(),
19              date.getHours(), date.getMinutes(), date.getSeconds()],
20             [2009, 5 - 1, 4, 12 - (date.getTimezoneOffset() / 60), 34, 23]);
21
22         var date2 = openerp.web.str_to_datetime('2011-12-10 00:00:00');
23         deepEqual(
24             [date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate(),
25              date2.getUTCHours(), date2.getUTCMinutes(), date2.getUTCSeconds()],
26             [2011, 12 - 1, 10, 0, 0, 0]);
27     });
28     test('Parse server date', function () {
29         var date = openerp.web.str_to_date("2009-05-04");
30         deepEqual(
31             [date.getFullYear(), date.getMonth(), date.getDate()],
32             [2009, 5 - 1, 4]);
33     });
34     test('Parse server time', function () {
35         var date = openerp.web.str_to_time("12:34:23");
36         deepEqual(
37             [date.getHours(), date.getMinutes(), date.getSeconds()],
38             [12, 34, 23]);
39     });
40
41     module('web-formats', {
42         setup: function () {
43             openerp = window.openerp.init();
44             window.openerp.web.core(openerp);
45             window.openerp.web.dates(openerp);
46             window.openerp.web.formats(openerp);
47         }
48     });
49     test("format_datetime", function () {
50         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
51         var str = openerp.web.format_value(date, {type:"datetime"});
52         equal(str, date.toString("MM/dd/yyyy HH:mm:ss"));
53     });
54     test("format_date", function () {
55         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
56         var str = openerp.web.format_value(date, {type:"date"});
57         equal(str, date.toString("MM/dd/yyyy"));
58     });
59     test("format_time", function () {
60         var date = openerp.web.str_to_datetime("2009-05-04 12:34:23");
61         var str = openerp.web.format_value(date, {type:"time"});
62         equal(str, date.toString("HH:mm:ss"));
63     });
64     test("format_float_time", function () {
65         strictEqual(
66             openerp.web.format_value(1.0, {type:'float', widget:'float_time'}),
67             '01:00');
68         strictEqual(
69             openerp.web.format_value(0.9853, {type:'float', widget:'float_time'}),
70             '00:59');
71         strictEqual(
72             openerp.web.format_value(0.0085, {type:'float', widget:'float_time'}),
73             '00:01');
74         strictEqual(
75             openerp.web.format_value(-1.0, {type:'float', widget:'float_time'}),
76             '-01:00');
77         strictEqual(
78             openerp.web.format_value(-0.9853, {type:'float', widget:'float_time'}),
79             '-00:59');
80         strictEqual(
81             openerp.web.format_value(-0.0085, {type:'float', widget:'float_time'}),
82             '-00:01');
83     });
84     test("format_float", function () {
85         var fl = 12.1234;
86         var str = openerp.web.format_value(fl, {type:"float"});
87         equal(str, "12.12");
88         equal(openerp.web.format_value(12.02, {type: 'float'}),
89               '12.02');
90         equal(openerp.web.format_value(0.0002, {type: 'float', digits: [1, 3]}),
91               '0.000');
92         equal(openerp.web.format_value(0.0002, {type: 'float', digits: [1, 4]}),
93               '0.0002');
94         equal(openerp.web.format_value(0.0002, {type: 'float', digits: [1, 6]}),
95               '0.000200');
96         equal(openerp.web.format_value(1, {type: 'float', digits: [1, 6]}),
97               '1.000000');
98         equal(openerp.web.format_value(1, {type: 'float'}),
99               '1.00');
100         equal(openerp.web.format_value(-11.25, {type: 'float'}),
101               "-11.25");
102         openerp.web._t.database.parameters.grouping = [1, 2, -1];
103         equal(openerp.web.format_value(1111111.25, {type: 'float'}),
104               "1111,11,1.25");
105         openerp.web._t.database.parameters.grouping = [1, 0];
106         equal(openerp.web.format_value(-11.25, {type: 'float'}),
107               "-1,1.25");
108     });
109 //    test("parse_datetime", function () {
110 //        var val = openerp.web.str_to_datetime("2009-05-04 12:34:23");
111 //        var res = openerp.web.parse_value(val.toString("MM/dd/yyyy HH:mm:ss"), {type:"datetime"});
112 //        equal(val.toString("MM/dd/yyyy HH:mm:ss"), res.toString("MM/dd/yyyy HH:mm:ss"));
113 //    });
114 //    test("parse_date", function () {
115 //        var val = openerp.web.str_to_date("2009-05-04");
116 //        var res = openerp.web.parse_value(val.toString("MM/dd/yyyy"), {type:"date"});
117 //        equal(val.toString("MM/dd/yyyy"), res.toString("MM/dd/yyyy"));
118 //    });
119 //    test("parse_time", function () {
120 //        var val = openerp.web.str_to_time("12:34:23");
121 //        var res = openerp.web.parse_value(val.toString("HH:mm:ss"), {type:"time"});
122 //        equal(val.toString("HH:mm:ss"), res.toString("HH:mm:ss"));
123 //    });
124     test('parse_integer', function () {
125         var val = openerp.web.parse_value('123,456', {type: 'integer'});
126         equal(val, 123456);
127         openerp.web._t.database.parameters.thousands_sep = '|';
128         var val2 = openerp.web.parse_value('123|456', {type: 'integer'});
129         equal(val2, 123456);
130     });
131     test("parse_float", function () {
132         var str = "134,112.1234";
133         var val = openerp.web.parse_value(str, {type:"float"});
134         equal(val, 134112.1234);
135         var str = "-134,112.1234";
136         var val = openerp.web.parse_value(str, {type:"float"});
137         equal(val, -134112.1234);
138         _.extend(openerp.web._t.database.parameters, {
139             decimal_point: ',',
140             thousands_sep: '.'
141         });
142         var val3 = openerp.web.parse_value('123.456,789', {type: 'float'});
143         equal(val3, 123456.789);
144     });
145     test('intersperse', function () {
146         var g = openerp.web.intersperse;
147         equal(g("", []), "");
148         equal(g("0", []), "0");
149         equal(g("012", []), "012");
150         equal(g("1", []), "1");
151         equal(g("12", []), "12");
152         equal(g("123", []), "123");
153         equal(g("1234", []), "1234");
154         equal(g("123456789", []), "123456789");
155         equal(g("&ab%#@1", []), "&ab%#@1");
156
157         equal(g("0", []), "0");
158         equal(g("0", [1]), "0");
159         equal(g("0", [2]), "0");
160         equal(g("0", [200]), "0");
161
162         equal(g("12345678", [0], '.'), '12345678');
163         equal(g("", [1], '.'), '');
164         equal(g("12345678", [1], '.'), '1234567.8');
165         equal(g("12345678", [1], '.'), '1234567.8');
166         equal(g("12345678", [2], '.'), '123456.78');
167         equal(g("12345678", [2, 1], '.'), '12345.6.78');
168         equal(g("12345678", [2, 0], '.'), '12.34.56.78');
169         equal(g("12345678", [-1, 2], '.'), '12345678');
170         equal(g("12345678", [2, -1], '.'), '123456.78');
171         equal(g("12345678", [2, 0, 1], '.'), '12.34.56.78');
172         equal(g("12345678", [2, 0, 0], '.'), '12.34.56.78');
173         equal(g("12345678", [2, 0, -1], '.'), '12.34.56.78');
174         equal(g("12345678", [3,3,3,3], '.'), '12.345.678');
175         equal(g("12345678", [3,0], '.'), '12.345.678');
176     });
177     test('format_integer', function () {
178         openerp.web._t.database.parameters.grouping = [3, 3, 3, 3];
179         equal(openerp.web.format_value(1000000, {type: 'integer'}),
180               '1,000,000');
181         openerp.web._t.database.parameters.grouping = [3, 2, -1];
182         equal(openerp.web.format_value(106500, {type: 'integer'}),
183               '1,06,500');
184         openerp.web._t.database.parameters.grouping = [1, 2, -1];
185         equal(openerp.web.format_value(106500, {type: 'integer'}),
186               '106,50,0');
187     });
188     test('format_float', function () {
189         openerp.web._t.database.parameters.grouping = [3, 3, 3, 3];
190         equal(openerp.web.format_value(1000000, {type: 'float'}),
191               '1,000,000.00');
192         openerp.web._t.database.parameters.grouping = [3, 2, -1];
193         equal(openerp.web.format_value(106500, {type: 'float'}),
194               '1,06,500.00');
195         openerp.web._t.database.parameters.grouping = [1, 2, -1];
196         equal(openerp.web.format_value(106500, {type: 'float'}),
197               '106,50,0.00');
198
199         _.extend(openerp.web._t.database.parameters, {
200             grouping: [3, 0],
201             decimal_point: ',',
202             thousands_sep: '.'
203         });
204         equal(openerp.web.format_value(6000, {type: 'float'}),
205               '6.000,00');
206     });
207 });