@buynomics-lib/bn-shared 1.18.19 → 1.18.20-feature-ace-887.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/helpers/measurement-converter.d.ts +7 -1
- package/build/helpers/measurement-converter.js +7 -3
- package/build/helpers/measurement-converter.js.map +1 -1
- package/build/helpers/measurement-converter.test.js +157 -32
- package/build/helpers/measurement-converter.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@ interface ParsedMeasurement {
|
|
|
14
14
|
family: string;
|
|
15
15
|
unit: string;
|
|
16
16
|
unitDef: UnitDefinition;
|
|
17
|
+
baseUnit: string;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* MeasurementConverter for Measuring Units 3.0.
|
|
@@ -42,7 +43,12 @@ export declare class MeasurementConverter {
|
|
|
42
43
|
*
|
|
43
44
|
* @throws Error if families differ or if family/unit is unknown
|
|
44
45
|
*/
|
|
45
|
-
convert(value
|
|
46
|
+
convert({ value, source, target, precision, }: {
|
|
47
|
+
value: number;
|
|
48
|
+
source: string;
|
|
49
|
+
target: string;
|
|
50
|
+
precision?: number;
|
|
51
|
+
}): number;
|
|
46
52
|
/**
|
|
47
53
|
* Return the unit label for a measurement string.
|
|
48
54
|
*
|
|
@@ -65,14 +65,15 @@ var MeasurementConverter = /** @class */ (function () {
|
|
|
65
65
|
*
|
|
66
66
|
* @throws Error if families differ or if family/unit is unknown
|
|
67
67
|
*/
|
|
68
|
-
MeasurementConverter.prototype.convert = function (
|
|
68
|
+
MeasurementConverter.prototype.convert = function (_a) {
|
|
69
|
+
var value = _a.value, source = _a.source, target = _a.target, precision = _a.precision;
|
|
69
70
|
var src = this.parseMeasurement(source);
|
|
70
71
|
var tgt = this.parseMeasurement(target);
|
|
71
72
|
if (src.family !== tgt.family) {
|
|
72
73
|
throw new Error("Cannot convert across measurement families: '".concat(src.family, "' \u2192 '").concat(tgt.family, "'."));
|
|
73
74
|
}
|
|
74
75
|
var result = (value * src.unitDef.factor_to_base) / tgt.unitDef.factor_to_base;
|
|
75
|
-
return Number(result.toFixed(this.decimalDigitsPrecision));
|
|
76
|
+
return Number(result.toFixed(precision !== null && precision !== void 0 ? precision : this.decimalDigitsPrecision));
|
|
76
77
|
};
|
|
77
78
|
/**
|
|
78
79
|
* Return the unit label for a measurement string.
|
|
@@ -115,10 +116,12 @@ var MeasurementConverter = /** @class */ (function () {
|
|
|
115
116
|
MeasurementConverter.prototype.parseMeasurement = function (measurement) {
|
|
116
117
|
var parts = measurement.split('.');
|
|
117
118
|
if (parts.length !== 2) {
|
|
119
|
+
// TODO: Revert error of BB-150 in https://buynomics.atlassian.net/browse/ACE-945
|
|
118
120
|
return {
|
|
119
121
|
family: measurement,
|
|
120
122
|
unit: measurement,
|
|
121
123
|
unitDef: { label: measurement, factor_to_base: 1 },
|
|
124
|
+
baseUnit: '',
|
|
122
125
|
};
|
|
123
126
|
}
|
|
124
127
|
var family = parts[0], unit = parts[1];
|
|
@@ -127,10 +130,11 @@ var MeasurementConverter = /** @class */ (function () {
|
|
|
127
130
|
throw new Error("Unknown measurement family '".concat(family, "'. Known: ").concat(Object.keys(this.config.measurement_families).join(', ')));
|
|
128
131
|
}
|
|
129
132
|
var unitDef = familyDef.units[unit];
|
|
133
|
+
var baseUnit = familyDef.base_unit;
|
|
130
134
|
if (!unitDef) {
|
|
131
135
|
throw new Error("Unknown unit '".concat(unit, "' for family '").concat(family, "'. Valid units: ").concat(Object.keys(familyDef.units).join(', ')));
|
|
132
136
|
}
|
|
133
|
-
return { family: family, unit: unit, unitDef: unitDef };
|
|
137
|
+
return { family: family, unit: unit, unitDef: unitDef, baseUnit: baseUnit };
|
|
134
138
|
};
|
|
135
139
|
return MeasurementConverter;
|
|
136
140
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measurement-converter.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0FAA6E;
|
|
1
|
+
{"version":3,"file":"measurement-converter.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0FAA6E;AAwB7E,IAAM,gCAAgC,GAAG,CAAC,CAAA;AAE1C;;;;;;;;GAQG;AACH;IAKE,8BACE,sBAAiE;QAAjE,uCAAA,EAAA,yDAAiE;QAEjE,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACjC,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAEtE,yCAAU,GAAlB;QACE,OAAO,sBAA2C,CAAA;IACpD,CAAC;IAED,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAE9E;;OAEG;IACH,yCAAU,GAAV;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,sCAAO,GAAP,UAAQ,EAUP;YATC,KAAK,WAAA,EACL,MAAM,YAAA,EACN,MAAM,YAAA,EACN,SAAS,eAAA;QAOT,IAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACzC,IAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAEzC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,uDAAgD,GAAG,CAAC,MAAM,uBAAQ,GAAG,CAAC,MAAM,OAAI,CACjF,CAAA;SACF;QAED,IAAM,MAAM,GACV,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAA;QACnE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACzE,CAAC;IAED;;;;;;;OAOG;IACH,uCAAQ,GAAR,UAAS,WAAmB;QAC1B,IAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;QACjD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAA;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH,kDAAmB,GAAnB;QACE,IAAM,YAAY,GAAa,EAAE,CAAA;QACjC,KAAsC,UAErC,EAFqC,KAAA,MAAM,CAAC,OAAO,CAClD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CACjC,EAFqC,cAErC,EAFqC,IAErC,EAAE;YAFQ,IAAA,WAAuB,EAAtB,UAAU,QAAA,EAAE,SAAS,QAAA;YAG/B,KAAuB,UAA4B,EAA5B,KAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;gBAAhD,IAAM,QAAQ,SAAA;gBACjB,YAAY,CAAC,IAAI,CAAC,UAAG,UAAU,cAAI,QAAQ,CAAE,CAAC,CAAA;aAC/C;SACF;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACH,+CAAgB,GAAhB,UAAiB,WAAmB;QAClC,IAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,iFAAiF;YACjF,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EAAE;gBAClD,QAAQ,EAAE,EAAE;aACb,CAAA;SACF;QAEM,IAAA,MAAM,GAAU,KAAK,GAAf,EAAE,IAAI,GAAI,KAAK,GAAT,CAAS;QAE5B,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC1D,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CACb,sCAA+B,MAAM,uBAAa,MAAM,CAAC,IAAI,CAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,CACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CACf,CAAA;SACF;QAED,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrC,IAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAA;QACpC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CACb,wBAAiB,IAAI,2BAAiB,MAAM,6BAAmB,MAAM,CAAC,IAAI,CACxE,SAAS,CAAC,KAAK,CAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CACf,CAAA;SACF;QAED,OAAO,EAAE,MAAM,QAAA,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,QAAQ,UAAA,EAAE,CAAA;IAC5C,CAAC;IACH,2BAAC;AAAD,CAAC,AA7ID,IA6IC;AA7IY,oDAAoB"}
|
|
@@ -13,95 +13,200 @@ describe('MeasurementConverter', function () {
|
|
|
13
13
|
});
|
|
14
14
|
describe('convert', function () {
|
|
15
15
|
it('should convert ml to l', function () {
|
|
16
|
-
expect(converter.convert(
|
|
16
|
+
expect(converter.convert({
|
|
17
|
+
value: 1000,
|
|
18
|
+
source: 'volume.ml',
|
|
19
|
+
target: 'volume.l',
|
|
20
|
+
})).toBeCloseTo(1, 6);
|
|
17
21
|
});
|
|
18
22
|
it('should convert zero values', function () {
|
|
19
|
-
expect(converter.convert(0, 'volume.ml', 'volume.l')).toBe(0);
|
|
23
|
+
expect(converter.convert({ value: 0, source: 'volume.ml', target: 'volume.l' })).toBe(0);
|
|
20
24
|
});
|
|
21
25
|
it('should convert ml to cl', function () {
|
|
22
|
-
expect(converter.convert(
|
|
26
|
+
expect(converter.convert({
|
|
27
|
+
value: 100,
|
|
28
|
+
source: 'volume.ml',
|
|
29
|
+
target: 'volume.cl',
|
|
30
|
+
})).toBeCloseTo(10, 6);
|
|
23
31
|
});
|
|
24
32
|
it('should convert g to kg', function () {
|
|
25
|
-
expect(converter.convert(
|
|
33
|
+
expect(converter.convert({
|
|
34
|
+
value: 2000,
|
|
35
|
+
source: 'weight.g',
|
|
36
|
+
target: 'weight.kg',
|
|
37
|
+
})).toBeCloseTo(2, 6);
|
|
26
38
|
});
|
|
27
39
|
it('should convert percent to fraction', function () {
|
|
28
|
-
expect(converter.convert(
|
|
40
|
+
expect(converter.convert({
|
|
41
|
+
value: 50,
|
|
42
|
+
source: 'percent.percent',
|
|
43
|
+
target: 'percent.fraction',
|
|
44
|
+
})).toBeCloseTo(0.5, 6);
|
|
29
45
|
});
|
|
30
46
|
it('should convert rational to fraction', function () {
|
|
31
|
-
expect(converter.convert(
|
|
47
|
+
expect(converter.convert({
|
|
48
|
+
value: 1 / 3,
|
|
49
|
+
source: 'percent.percent',
|
|
50
|
+
target: 'percent.fraction',
|
|
51
|
+
})).toBeCloseTo(0.003333, 6);
|
|
32
52
|
});
|
|
33
53
|
it('should convert units to units', function () {
|
|
34
|
-
expect(converter.convert(
|
|
54
|
+
expect(converter.convert({
|
|
55
|
+
value: 100,
|
|
56
|
+
source: 'units.unit',
|
|
57
|
+
target: 'units.unit',
|
|
58
|
+
})).toBeCloseTo(100, 6);
|
|
35
59
|
});
|
|
36
60
|
it('should convert mg to g', function () {
|
|
37
|
-
expect(converter.convert(
|
|
61
|
+
expect(converter.convert({
|
|
62
|
+
value: 1000,
|
|
63
|
+
source: 'weight.mg',
|
|
64
|
+
target: 'weight.g',
|
|
65
|
+
})).toBeCloseTo(1, 6);
|
|
38
66
|
});
|
|
39
67
|
it('should convert oz to g', function () {
|
|
40
|
-
expect(converter.convert(1, 'weight.oz', 'weight.g')).toBeCloseTo(28.349523, 6);
|
|
68
|
+
expect(converter.convert({ value: 1, source: 'weight.oz', target: 'weight.g' })).toBeCloseTo(28.349523, 6);
|
|
41
69
|
});
|
|
42
70
|
it('should convert ml to fl_oz_us', function () {
|
|
43
|
-
expect(converter.convert(
|
|
71
|
+
expect(converter.convert({
|
|
72
|
+
value: 29.57353,
|
|
73
|
+
source: 'volume.ml',
|
|
74
|
+
target: 'volume.fl_oz_us',
|
|
75
|
+
})).toBeCloseTo(1, 6);
|
|
44
76
|
});
|
|
45
77
|
it('should convert gallon_us to l', function () {
|
|
46
|
-
expect(converter.convert(
|
|
78
|
+
expect(converter.convert({
|
|
79
|
+
value: 1,
|
|
80
|
+
source: 'volume.gallon_us',
|
|
81
|
+
target: 'volume.l',
|
|
82
|
+
})).toBeCloseTo(3.785412, 6);
|
|
47
83
|
});
|
|
48
84
|
it('should convert ml to quart_us', function () {
|
|
49
|
-
expect(converter.convert(
|
|
85
|
+
expect(converter.convert({
|
|
86
|
+
value: 1,
|
|
87
|
+
source: 'volume.ml',
|
|
88
|
+
target: 'volume.quart_us',
|
|
89
|
+
})).toBeCloseTo(0.001057, 6);
|
|
50
90
|
});
|
|
51
91
|
it('should convert inch to cm', function () {
|
|
52
|
-
expect(converter.convert(
|
|
92
|
+
expect(converter.convert({
|
|
93
|
+
value: 1,
|
|
94
|
+
source: 'length.inch',
|
|
95
|
+
target: 'length.cm',
|
|
96
|
+
})).toBeCloseTo(2.54, 6);
|
|
53
97
|
});
|
|
54
98
|
it('should convert mile to km', function () {
|
|
55
|
-
expect(converter.convert(
|
|
99
|
+
expect(converter.convert({
|
|
100
|
+
value: 1,
|
|
101
|
+
source: 'length.mile',
|
|
102
|
+
target: 'length.km',
|
|
103
|
+
})).toBeCloseTo(1.609344, 6);
|
|
56
104
|
});
|
|
57
105
|
it('should convert mb to gb', function () {
|
|
58
|
-
expect(converter.convert(1000, 'data.mb', 'data.gb')).toBeCloseTo(0.977, 6);
|
|
106
|
+
expect(converter.convert({ value: 1000, source: 'data.mb', target: 'data.gb' })).toBeCloseTo(0.977, 6);
|
|
59
107
|
});
|
|
60
108
|
it('should convert tb to gb', function () {
|
|
61
|
-
expect(converter.convert(1, 'data.tb', 'data.gb')).toBeCloseTo(1024, 6);
|
|
109
|
+
expect(converter.convert({ value: 1, source: 'data.tb', target: 'data.gb' })).toBeCloseTo(1024, 6);
|
|
62
110
|
});
|
|
63
111
|
it('should convert kbps to mbps', function () {
|
|
64
|
-
expect(converter.convert(
|
|
112
|
+
expect(converter.convert({
|
|
113
|
+
value: 1000,
|
|
114
|
+
source: 'internet_speed.kbps',
|
|
115
|
+
target: 'internet_speed.mbps',
|
|
116
|
+
})).toBeCloseTo(1, 6);
|
|
65
117
|
});
|
|
66
118
|
it('should convert large numbers', function () {
|
|
67
|
-
expect(converter.convert(
|
|
68
|
-
|
|
119
|
+
expect(converter.convert({
|
|
120
|
+
value: 666666666666.666666666,
|
|
121
|
+
source: 'volume.l',
|
|
122
|
+
target: 'volume.ml',
|
|
123
|
+
})).toBeCloseTo(666666666666666.666666, 6);
|
|
124
|
+
expect(converter.convert({
|
|
125
|
+
value: 66666666666666.666666,
|
|
126
|
+
source: 'volume.ml',
|
|
127
|
+
target: 'volume.l',
|
|
128
|
+
})).toBeCloseTo(66666666666.666666, 6);
|
|
69
129
|
});
|
|
70
130
|
it('should handle JavaScript floating point precision issues', function () {
|
|
71
131
|
// 0.1 + 0.2 = 0.30000000000000004 in JS
|
|
72
|
-
var result = converter.convert(
|
|
132
|
+
var result = converter.convert({
|
|
133
|
+
value: 0.3,
|
|
134
|
+
source: 'volume.l',
|
|
135
|
+
target: 'volume.ml',
|
|
136
|
+
});
|
|
73
137
|
expect(result).toBe(300);
|
|
74
138
|
});
|
|
75
139
|
it('should round to 6 decimal places', function () {
|
|
76
140
|
// Test that results are rounded to 6 decimal places
|
|
77
|
-
var result = converter.convert(
|
|
141
|
+
var result = converter.convert({
|
|
142
|
+
value: 1.3,
|
|
143
|
+
source: 'volume.l',
|
|
144
|
+
target: 'volume.ml',
|
|
145
|
+
});
|
|
78
146
|
expect(result).toBe(1300);
|
|
79
147
|
expect(result.toString()).not.toContain('1300.0000000000002');
|
|
80
148
|
});
|
|
81
149
|
it('should handle repeating decimals', function () {
|
|
82
150
|
// 1/3 = 0.333333...
|
|
83
|
-
var result = converter.convert(
|
|
151
|
+
var result = converter.convert({
|
|
152
|
+
value: 1 / 3,
|
|
153
|
+
source: 'volume.l',
|
|
154
|
+
target: 'volume.ml',
|
|
155
|
+
});
|
|
84
156
|
expect(result).toBeCloseTo(333.333333, 6);
|
|
85
157
|
});
|
|
86
158
|
it('should handle very small numbers', function () {
|
|
87
|
-
var result = converter.convert(
|
|
159
|
+
var result = converter.convert({
|
|
160
|
+
value: 0.000001,
|
|
161
|
+
source: 'volume.l',
|
|
162
|
+
target: 'volume.ml',
|
|
163
|
+
});
|
|
88
164
|
expect(result).toBeCloseTo(0.001, 6);
|
|
89
165
|
});
|
|
90
166
|
it('should handle negative floating point precision', function () {
|
|
91
|
-
var result = converter.convert(
|
|
167
|
+
var result = converter.convert({
|
|
168
|
+
value: -0.1,
|
|
169
|
+
source: 'volume.l',
|
|
170
|
+
target: 'volume.ml',
|
|
171
|
+
});
|
|
92
172
|
expect(result).toBe(-100);
|
|
93
173
|
});
|
|
94
174
|
it('should throw error for different families', function () {
|
|
95
|
-
expect(function () {
|
|
175
|
+
expect(function () {
|
|
176
|
+
return converter.convert({
|
|
177
|
+
value: 100,
|
|
178
|
+
source: 'volume.ml',
|
|
179
|
+
target: 'weight.g',
|
|
180
|
+
});
|
|
181
|
+
}).toThrow('Cannot convert across measurement families');
|
|
96
182
|
});
|
|
97
183
|
it('should throw error for unknown family', function () {
|
|
98
|
-
expect(function () {
|
|
184
|
+
expect(function () {
|
|
185
|
+
return converter.convert({
|
|
186
|
+
value: 100,
|
|
187
|
+
source: 'unknown.unit',
|
|
188
|
+
target: 'volume.ml',
|
|
189
|
+
});
|
|
190
|
+
}).toThrow('Unknown measurement family');
|
|
99
191
|
});
|
|
100
192
|
it('should throw error for unknown unit', function () {
|
|
101
193
|
expect(function () {
|
|
102
|
-
return converter.convert(
|
|
194
|
+
return converter.convert({
|
|
195
|
+
value: 100,
|
|
196
|
+
source: 'volume.unknown',
|
|
197
|
+
target: 'volume.ml',
|
|
198
|
+
});
|
|
103
199
|
}).toThrow('Unknown unit');
|
|
104
200
|
});
|
|
201
|
+
it('should use custom precision when provided', function () {
|
|
202
|
+
var result = converter.convert({
|
|
203
|
+
value: 1 / 3,
|
|
204
|
+
source: 'volume.l',
|
|
205
|
+
target: 'volume.ml',
|
|
206
|
+
precision: 2,
|
|
207
|
+
});
|
|
208
|
+
expect(result).toBe(333.33);
|
|
209
|
+
});
|
|
105
210
|
});
|
|
106
211
|
describe('getLabel', function () {
|
|
107
212
|
it('should return label for ml', function () {
|
|
@@ -123,18 +228,38 @@ describe('MeasurementConverter', function () {
|
|
|
123
228
|
describe('precision', function () {
|
|
124
229
|
it('should maintain precision for common conversions', function () {
|
|
125
230
|
// Test common conversions that might have precision issues
|
|
126
|
-
expect(converter.convert(
|
|
127
|
-
|
|
128
|
-
|
|
231
|
+
expect(converter.convert({
|
|
232
|
+
value: 1.5,
|
|
233
|
+
source: 'volume.l',
|
|
234
|
+
target: 'volume.ml',
|
|
235
|
+
})).toBe(1500);
|
|
236
|
+
expect(converter.convert({
|
|
237
|
+
value: 2.5,
|
|
238
|
+
source: 'weight.kg',
|
|
239
|
+
target: 'weight.g',
|
|
240
|
+
})).toBe(2500);
|
|
241
|
+
expect(converter.convert({
|
|
242
|
+
value: 0.5,
|
|
243
|
+
source: 'percent.fraction',
|
|
244
|
+
target: 'percent.percent',
|
|
245
|
+
})).toBe(50);
|
|
129
246
|
});
|
|
130
247
|
it('should handle division precision', function () {
|
|
131
248
|
// 1/3 percent to fraction
|
|
132
|
-
var result = converter.convert(
|
|
249
|
+
var result = converter.convert({
|
|
250
|
+
value: 1 / 3,
|
|
251
|
+
source: 'percent.percent',
|
|
252
|
+
target: 'percent.fraction',
|
|
253
|
+
});
|
|
133
254
|
expect(result).toBeCloseTo(0.003333, 6);
|
|
134
255
|
});
|
|
135
256
|
it('should handle multiplication precision', function () {
|
|
136
257
|
// Test multiplication doesn't accumulate errors
|
|
137
|
-
var result = converter.convert(
|
|
258
|
+
var result = converter.convert({
|
|
259
|
+
value: 999.999,
|
|
260
|
+
source: 'volume.ml',
|
|
261
|
+
target: 'volume.l',
|
|
262
|
+
});
|
|
138
263
|
expect(result).toBeCloseTo(0.999999, 6);
|
|
139
264
|
});
|
|
140
265
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measurement-converter.test.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.test.ts"],"names":[],"mappings":";;AAAA,iEAA8D;AAE9D,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,IAAI,SAA+B,CAAA;IAEnC,UAAU,CAAC;QACT,SAAS,GAAG,IAAI,4CAAoB,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,EAAE;QACrB,EAAE,CAAC,yBAAyB,EAAE;YAC5B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE;QAClB,EAAE,CAAC,wBAAwB,EAAE;YAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"measurement-converter.test.js","sourceRoot":"","sources":["../../src/helpers/measurement-converter.test.ts"],"names":[],"mappings":"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"}
|