Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / js / t / kivi / parse_amount.js
1 QUnit.test("kivi.parse_amount function German number style with thousand separator", function( assert ) {
2   kivi.setup_formats({ numbers: '1.000,00' });
3
4   assert.equal(kivi.parse_amount('10,00'), 10, '10,00');
5   assert.equal(kivi.parse_amount('10,'), 10, '10,');
6   assert.equal(kivi.parse_amount('1010,00'), 1010, '1010,00');
7   assert.equal(kivi.parse_amount('1010,'), 1010, '1010,');
8   assert.equal(kivi.parse_amount('1.010,00'), 1010, '1.010,00');
9   assert.equal(kivi.parse_amount('1.010,'), 1010, '1.010,');
10   assert.equal(kivi.parse_amount('9.080.070.060.050.040.030.020.010,00'), 9080070060050040030020010, '9.080.070.060.050.040.030.020.010,00');
11   assert.equal(kivi.parse_amount('9.080.070.060.050.040.030.020.010,'), 9080070060050040030020010, '9.080.070.060.050.040.030.020.010,');
12
13   assert.equal(kivi.parse_amount('10,98'), 10.98, '10,98');
14   assert.equal(kivi.parse_amount('1010,98'), 1010.98, '1010,98');
15   assert.equal(kivi.parse_amount('1.010,98'), 1010.98, '1.010,98');
16
17   assert.equal(kivi.parse_amount('10,987654321'), 10.987654321, '10,987654321');
18   assert.equal(kivi.parse_amount('1010,987654321'), 1010.987654321, '1010,987654321');
19   assert.equal(kivi.parse_amount('1.010,987654321'), 1010.987654321, '1.010,987654321');
20 });
21
22 QUnit.test("kivi.parse_amount function German number style without thousand separator", function( assert ) {
23   kivi.setup_formats({ numbers: '1000,00' });
24
25   assert.equal(kivi.parse_amount('10,00'), 10, '10,00');
26   assert.equal(kivi.parse_amount('10,'), 10, '10,');
27   assert.equal(kivi.parse_amount('1010,00'), 1010, '1010,00');
28   assert.equal(kivi.parse_amount('1010,'), 1010, '1010,');
29   assert.equal(kivi.parse_amount('1.010,00'), 1010, '1.010,00');
30   assert.equal(kivi.parse_amount('1.010,'), 1010, '1.010,');
31   assert.equal(kivi.parse_amount('9.080.070.060.050.040.030.020.010,00'), 9080070060050040030020010, '9.080.070.060.050.040.030.020.010,00');
32   assert.equal(kivi.parse_amount('9.080.070.060.050.040.030.020.010,'), 9080070060050040030020010, '9.080.070.060.050.040.030.020.010,');
33
34   assert.equal(kivi.parse_amount('10,98'), 10.98, '10,98');
35   assert.equal(kivi.parse_amount('1010,98'), 1010.98, '1010,98');
36   assert.equal(kivi.parse_amount('1.010,98'), 1010.98, '1.010,98');
37
38   assert.equal(kivi.parse_amount('10,987654321'), 10.987654321, '10,987654321');
39   assert.equal(kivi.parse_amount('1010,987654321'), 1010.987654321, '1010,987654321');
40   assert.equal(kivi.parse_amount('1.010,987654321'), 1010.987654321, '1.010,987654321');
41 });
42
43 QUnit.test("kivi.parse_amount function English number style with thousand separator", function( assert ) {
44   kivi.setup_formats({ numbers: '1,000.00' });
45
46   assert.equal(kivi.parse_amount('10.00'), 10, '10.00');
47   assert.equal(kivi.parse_amount('10.'), 10, '10.');
48   assert.equal(kivi.parse_amount('1010.00'), 1010, '1010.00');
49   assert.equal(kivi.parse_amount('1010.'), 1010, '1010.');
50   assert.equal(kivi.parse_amount('1,010.00'), 1010, '1,010.00');
51   assert.equal(kivi.parse_amount('1,010.'), 1010, '1,010.');
52   assert.equal(kivi.parse_amount('9,080,070,060,050,040,030,020,010.00'), 9080070060050040030020010, '9,080,070,060,050,040,030,020,010.00');
53   assert.equal(kivi.parse_amount('9,080,070,060,050,040,030,020,010.'), 9080070060050040030020010, '9,080,070,060,050,040,030,020,010.');
54
55   assert.equal(kivi.parse_amount('10.98'), 10.98, '10.98');
56   assert.equal(kivi.parse_amount('1010.98'), 1010.98, '1010.98');
57   assert.equal(kivi.parse_amount('1,010.98'), 1010.98, '1,010.98');
58
59   assert.equal(kivi.parse_amount('10.987654321'), 10.987654321, '10.987654321');
60   assert.equal(kivi.parse_amount('1010.987654321'), 1010.987654321, '1010.987654321');
61   assert.equal(kivi.parse_amount('1,010.987654321'), 1010.987654321, '1,010.987654321');
62 });
63
64 QUnit.test("kivi.parse_amount function English number style without thousand separator", function( assert ) {
65   kivi.setup_formats({ numbers: '1000.00' });
66
67   assert.equal(kivi.parse_amount('10.00'), 10, '10.00');
68   assert.equal(kivi.parse_amount('10.'), 10, '10.');
69   assert.equal(kivi.parse_amount('1010.00'), 1010, '1010.00');
70   assert.equal(kivi.parse_amount('1010.'), 1010, '1010.');
71   assert.equal(kivi.parse_amount('1,010.00'), 1010, '1,010.00');
72   assert.equal(kivi.parse_amount('1,010.'), 1010, '1,010.');
73   assert.equal(kivi.parse_amount('9,080,070,060,050,040,030,020,010.00'), 9080070060050040030020010, '9,080,070,060,050,040,030,020,010.00');
74   assert.equal(kivi.parse_amount('9,080,070,060,050,040,030,020,010.'), 9080070060050040030020010, '9,080,070,060,050,040,030,020,010.');
75
76   assert.equal(kivi.parse_amount('10.98'), 10.98, '10.98');
77   assert.equal(kivi.parse_amount('1010.98'), 1010.98, '1010.98');
78   assert.equal(kivi.parse_amount('1,010.98'), 1010.98, '1,010.98');
79
80   assert.equal(kivi.parse_amount('10.987654321'), 10.987654321, '10.987654321');
81   assert.equal(kivi.parse_amount('1010.987654321'), 1010.987654321, '1010.987654321');
82   assert.equal(kivi.parse_amount('1,010.987654321'), 1010.987654321, '1,010.987654321');
83 });
84
85 QUnit.test("kivi.parse_amount function Swiss number style with thousand separator", function( assert ) {
86   kivi.setup_formats({ numbers: '1\'000.00' });
87
88   assert.equal(kivi.parse_amount('10.00'), 10, '10.00');
89   assert.equal(kivi.parse_amount('10.'), 10, '10.');
90   assert.equal(kivi.parse_amount('1010.00'), 1010, '1010.00');
91   assert.equal(kivi.parse_amount('1010.'), 1010, '1010.');
92   assert.equal(kivi.parse_amount('1\'010.00'), 1010, '1\'010.00');
93   assert.equal(kivi.parse_amount('1\'010.'), 1010, '1\'010.');
94   assert.equal(kivi.parse_amount('9\'080\'070\'060\'050\'040\'030\'020\'010.00'), 9080070060050040030020010, '9\'080\'070\'060\'050\'040\'030\'020\'010.00');
95   assert.equal(kivi.parse_amount('9\'080\'070\'060\'050\'040\'030\'020\'010.'), 9080070060050040030020010, '9\'080\'070\'060\'050\'040\'030\'020\'010.');
96
97   assert.equal(kivi.parse_amount('10.98'), 10.98, '10.98');
98   assert.equal(kivi.parse_amount('1010.98'), 1010.98, '1010.98');
99   assert.equal(kivi.parse_amount('1\'010.98'), 1010.98, '1\'010.98');
100
101   assert.equal(kivi.parse_amount('10.987654321'), 10.987654321, '10.987654321');
102   assert.equal(kivi.parse_amount('1010.987654321'), 1010.987654321, '1010.987654321');
103   assert.equal(kivi.parse_amount('1\'010.987654321'), 1010.987654321, '1\'010.987654321');
104 });
105
106 QUnit.test("kivi.parse_amount function numbers with leading 0 should still be parsed as decimal and not octal", function( assert ) {
107   kivi.setup_formats({ numbers: '1000,00' });
108
109   assert.equal(kivi.parse_amount('0123456789'),   123456789, '0123456789');
110   assert.equal(kivi.parse_amount('000123456789'), 123456789, '000123456789');
111 });
112
113 QUnit.test("kivi.parse_amount function German number style with thousand separator & contains invalid characters", function( assert ) {
114   kivi.setup_formats({ numbers: '1.000,00' });
115
116   assert.equal(kivi.parse_amount('iuh !@#$% 10,00'), undefined, 'iuh !@#$% 10,00');
117 });
118
119 QUnit.test("kivi.parse_amount function German number style with thousand separator & invalid math expression", function( assert ) {
120   kivi.setup_formats({ numbers: '1.000,00' });
121
122   assert.equal(kivi.parse_amount('54--42'), undefined, '54--42');
123 });