devtoolz-library 1.0.0
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/dist/baseFactory.d.ts +12 -0
- package/dist/baseFactory.js +33 -0
- package/dist/constants/regexPatterns.d.ts +2 -0
- package/dist/constants/regexPatterns.js +9 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.d.ts +4 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.d.ts +4 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.js +2 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.js +2 -0
- package/dist/converters/numeric-systems/numericSystem.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/numericSystem.converter.factory.d.ts +8 -0
- package/dist/converters/numeric-systems/numericSystem.converter.factory.js +17 -0
- package/dist/converters/numeric-systems/numericSystem.converter.js +17 -0
- package/dist/converters/numeric-systems/provider.d.ts +2 -0
- package/dist/converters/numeric-systems/provider.js +11 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.js +16 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.test.js +252 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.js +16 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.js +199 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.js +18 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.js +130 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.js +15 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.js +151 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.d.ts +7 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.js +77 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.test.js +105 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.d.ts +5 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.factory.d.ts +4 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.factory.js +2 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.js +2 -0
- package/dist/converters/serialization/interfaces/ISerializationOptions.d.ts +4 -0
- package/dist/converters/serialization/interfaces/ISerializationOptions.js +2 -0
- package/dist/converters/serialization/provider.d.ts +2 -0
- package/dist/converters/serialization/provider.js +7 -0
- package/dist/converters/serialization/serialization.converter.d.ts +6 -0
- package/dist/converters/serialization/serialization.converter.factory.d.ts +9 -0
- package/dist/converters/serialization/serialization.converter.factory.js +20 -0
- package/dist/converters/serialization/serialization.converter.js +17 -0
- package/dist/converters/serialization/services/csv/csv.converter.d.ts +6 -0
- package/dist/converters/serialization/services/csv/csv.converter.js +68 -0
- package/dist/converters/serialization/services/csv/csv.converter.test.d.ts +1 -0
- package/dist/converters/serialization/services/csv/csv.converter.test.js +295 -0
- package/dist/converters/serialization/services/json/json.converter.d.ts +5 -0
- package/dist/converters/serialization/services/json/json.converter.js +12 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.d.ts +4 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.d.ts +4 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.js +2 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.js +2 -0
- package/dist/converters/text-format/provider.d.ts +2 -0
- package/dist/converters/text-format/provider.js +8 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.d.ts +5 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.js +40 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.test.d.ts +1 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.test.js +174 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.d.ts +6 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.js +85 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.test.d.ts +1 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.test.js +518 -0
- package/dist/converters/text-format/services/text/text-format.converter.d.ts +5 -0
- package/dist/converters/text-format/services/text/text-format.converter.js +12 -0
- package/dist/converters/text-format/textFormatConverter.converter.d.ts +5 -0
- package/dist/converters/text-format/textFormatConverter.converter.factory.d.ts +8 -0
- package/dist/converters/text-format/textFormatConverter.converter.factory.js +17 -0
- package/dist/converters/text-format/textFormatConverter.converter.js +17 -0
- package/dist/converters/unit-converter/converter-base.d.ts +19 -0
- package/dist/converters/unit-converter/converter-base.js +56 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverter.d.ts +9 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverter.js +2 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.d.ts +4 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.js +2 -0
- package/dist/converters/unit-converter/models/unit.d.ts +7 -0
- package/dist/converters/unit-converter/models/unit.js +2 -0
- package/dist/converters/unit-converter/provider.d.ts +2 -0
- package/dist/converters/unit-converter/provider.js +16 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.js +15 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.test.js +112 -0
- package/dist/converters/unit-converter/services/area/area.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/area/area.converter.js +24 -0
- package/dist/converters/unit-converter/services/area/area.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/area/area.converter.test.js +439 -0
- package/dist/converters/unit-converter/services/data/data.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/data/data.converter.js +30 -0
- package/dist/converters/unit-converter/services/data/data.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/data/data.converter.test.js +209 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.js +20 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.test.js +154 -0
- package/dist/converters/unit-converter/services/length/length.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/length/length.converter.js +31 -0
- package/dist/converters/unit-converter/services/length/length.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/length/length.converter.test.js +186 -0
- package/dist/converters/unit-converter/services/power/power.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/power/power.converter.js +17 -0
- package/dist/converters/unit-converter/services/power/power.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/power/power.converter.test.js +223 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.js +18 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.test.js +107 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.js +22 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.test.js +257 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.d.ts +7 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.js +46 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.test.js +279 -0
- package/dist/converters/unit-converter/services/time/time.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/time/time.converter.js +26 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.js +39 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.test.js +295 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.js +29 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.js +218 -0
- package/dist/converters/unit-converter/unit.converter.factory.d.ts +9 -0
- package/dist/converters/unit-converter/unit.converter.factory.js +20 -0
- package/dist/crypt.d.ts +0 -0
- package/dist/crypt.js +77 -0
- package/dist/documents/cnpj/cnpj.d.ts +14 -0
- package/dist/documents/cnpj/cnpj.formatter.d.ts +5 -0
- package/dist/documents/cnpj/cnpj.formatter.js +12 -0
- package/dist/documents/cnpj/cnpj.generator.d.ts +9 -0
- package/dist/documents/cnpj/cnpj.generator.js +43 -0
- package/dist/documents/cnpj/cnpj.js +47 -0
- package/dist/documents/cnpj/cnpj.validator.d.ts +11 -0
- package/dist/documents/cnpj/cnpj.validator.js +49 -0
- package/dist/documents/cnpj/tests/cnpj.formatter.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.formatter.test.js +62 -0
- package/dist/documents/cnpj/tests/cnpj.generator.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.generator.test.js +51 -0
- package/dist/documents/cnpj/tests/cnpj.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.test.js +162 -0
- package/dist/documents/cnpj/tests/cnpj.validator.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.validator.test.js +104 -0
- package/dist/documents/cpf/cpf.d.ts +14 -0
- package/dist/documents/cpf/cpf.formatter.d.ts +5 -0
- package/dist/documents/cpf/cpf.formatter.js +12 -0
- package/dist/documents/cpf/cpf.generator.d.ts +9 -0
- package/dist/documents/cpf/cpf.generator.js +40 -0
- package/dist/documents/cpf/cpf.js +50 -0
- package/dist/documents/cpf/cpf.validator.d.ts +11 -0
- package/dist/documents/cpf/cpf.validator.js +46 -0
- package/dist/documents/cpf/tests/cpf.formatter.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.formatter.test.js +71 -0
- package/dist/documents/cpf/tests/cpf.generator.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.generator.test.js +71 -0
- package/dist/documents/cpf/tests/cpf.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.test.js +151 -0
- package/dist/documents/cpf/tests/cpf.validator.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.validator.test.js +113 -0
- package/dist/documents/interfaces/formatter.interface.d.ts +4 -0
- package/dist/documents/interfaces/formatter.interface.js +2 -0
- package/dist/documents/interfaces/generator.interface.d.ts +3 -0
- package/dist/documents/interfaces/generator.interface.js +2 -0
- package/dist/documents/interfaces/validator.interface.d.ts +4 -0
- package/dist/documents/interfaces/validator.interface.js +2 -0
- package/dist/documents/models/validation-result.model.d.ts +4 -0
- package/dist/documents/models/validation-result.model.js +2 -0
- package/dist/enums/cryptProvider.d.ts +6 -0
- package/dist/enums/cryptProvider.js +10 -0
- package/dist/extensions/array.extensions.d.ts +6 -0
- package/dist/extensions/array.extensions.js +7 -0
- package/dist/extensions/boolean.extensions.d.ts +6 -0
- package/dist/extensions/boolean.extensions.js +5 -0
- package/dist/extensions/number.extensions.d.ts +11 -0
- package/dist/extensions/number.extensions.js +24 -0
- package/dist/extensions/string.extensions.d.ts +13 -0
- package/dist/extensions/string.extensions.js +28 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +39 -0
- package/dist/interfaces/IFactory.d.ts +3 -0
- package/dist/interfaces/IFactory.js +2 -0
- package/dist/interfaces/IServiceCategory.d.ts +3 -0
- package/dist/interfaces/IServiceCategory.js +2 -0
- package/dist/interfaces/validator.d.ts +5 -0
- package/dist/interfaces/validator.js +2 -0
- package/dist/interfaces/value.d.ts +3 -0
- package/dist/interfaces/value.js +2 -0
- package/dist/interfaces/valueGenerator.d.ts +4 -0
- package/dist/interfaces/valueGenerator.js +2 -0
- package/dist/random.d.ts +12 -0
- package/dist/random.js +29 -0
- package/package.json +25 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const unit_converter_factory_1 = require("../../unit.converter.factory");
|
|
4
|
+
const factory = new unit_converter_factory_1.UnitConverterFactory();
|
|
5
|
+
const converter = factory.createService('volume');
|
|
6
|
+
describe('Conversão completa entre unidades de volume', () => {
|
|
7
|
+
// Testes de conversão para a mesma unidade
|
|
8
|
+
describe('Conversões para a mesma unidade', () => {
|
|
9
|
+
test('1000 mililitro → mililitro ≈ 1000.0', () => {
|
|
10
|
+
expect(converter.convert(1000, 'mililitro', 'mililitro')).toBeCloseTo(1000.0, 10);
|
|
11
|
+
});
|
|
12
|
+
test('5 litro → litro ≈ 5.0', () => {
|
|
13
|
+
expect(converter.convert(5, 'litro', 'litro')).toBeCloseTo(5.0, 10);
|
|
14
|
+
});
|
|
15
|
+
test('2.5 metro-cubico → metro-cubico ≈ 2.5', () => {
|
|
16
|
+
expect(converter.convert(2.5, 'metro-cubico', 'metro-cubico')).toBeCloseTo(2.5, 10);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
// Testes de conversão métrica básica
|
|
20
|
+
describe('Conversões métricas básicas', () => {
|
|
21
|
+
test('1000 mililitro → litro ≈ 1.0', () => {
|
|
22
|
+
expect(converter.convert(1000, 'mililitro', 'litro')).toBeCloseTo(1.0, 10);
|
|
23
|
+
});
|
|
24
|
+
test('1 litro → mililitro ≈ 1000.0', () => {
|
|
25
|
+
expect(converter.convert(1, 'litro', 'mililitro')).toBeCloseTo(1000.0, 10);
|
|
26
|
+
});
|
|
27
|
+
test('10 centilitro → mililitro ≈ 100.0', () => {
|
|
28
|
+
expect(converter.convert(10, 'centilitro', 'mililitro')).toBeCloseTo(100.0, 10);
|
|
29
|
+
});
|
|
30
|
+
test('100 mililitro → decilitro ≈ 1.0', () => {
|
|
31
|
+
expect(converter.convert(100, 'mililitro', 'decilitro')).toBeCloseTo(1.0, 10);
|
|
32
|
+
});
|
|
33
|
+
test('1000 litro → hectolitro ≈ 10.0', () => {
|
|
34
|
+
expect(converter.convert(1000, 'litro', 'hectolitro')).toBeCloseTo(10.0, 10);
|
|
35
|
+
});
|
|
36
|
+
test('1 hectolitro → litro ≈ 100.0', () => {
|
|
37
|
+
expect(converter.convert(1, 'hectolitro', 'litro')).toBeCloseTo(100.0, 10);
|
|
38
|
+
});
|
|
39
|
+
test('100 centilitro → litro ≈ 1.0', () => {
|
|
40
|
+
expect(converter.convert(100, 'centilitro', 'litro')).toBeCloseTo(1.0, 10);
|
|
41
|
+
});
|
|
42
|
+
test('10 decilitro → litro ≈ 1.0', () => {
|
|
43
|
+
expect(converter.convert(10, 'decilitro', 'litro')).toBeCloseTo(1.0, 10);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
// Testes de conversão cúbicas métricas
|
|
47
|
+
describe('Conversões de unidades cúbicas métricas', () => {
|
|
48
|
+
test('1 mililitro → milimetro-cubico ≈ 1000.0', () => {
|
|
49
|
+
expect(converter.convert(1, 'mililitro', 'milimetro-cubico')).toBeCloseTo(1000.0, 10);
|
|
50
|
+
});
|
|
51
|
+
test('1 mililitro → centimetro-cubico ≈ 1.0', () => {
|
|
52
|
+
expect(converter.convert(1, 'mililitro', 'centimetro-cubico')).toBeCloseTo(1.0, 10);
|
|
53
|
+
});
|
|
54
|
+
test('1 litro → decimetro-cubico ≈ 1.0', () => {
|
|
55
|
+
expect(converter.convert(1, 'litro', 'decimetro-cubico')).toBeCloseTo(1.0, 10);
|
|
56
|
+
});
|
|
57
|
+
test('1 metro-cubico → litro ≈ 1000.0', () => {
|
|
58
|
+
expect(converter.convert(1, 'metro-cubico', 'litro')).toBeCloseTo(1000.0, 10);
|
|
59
|
+
});
|
|
60
|
+
test('1000 centimetro-cubico → litro ≈ 1.0', () => {
|
|
61
|
+
expect(converter.convert(1000, 'centimetro-cubico', 'litro')).toBeCloseTo(1.0, 10);
|
|
62
|
+
});
|
|
63
|
+
test('1 decimetro-cubico → mililitro ≈ 1000.0', () => {
|
|
64
|
+
expect(converter.convert(1, 'decimetro-cubico', 'mililitro')).toBeCloseTo(1000.0, 10);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
// Testes de conversão de medidas culinárias americanas
|
|
68
|
+
describe('Conversões de medidas culinárias americanas', () => {
|
|
69
|
+
test('3 colher-cha-eua → colher-sopa-eua ≈ 1.0', () => {
|
|
70
|
+
expect(converter.convert(3, 'colher-cha-eua', 'colher-sopa-eua')).toBeCloseTo(1.0, 8);
|
|
71
|
+
});
|
|
72
|
+
test('2 colher-sopa-eua → onca-fluida-eua ≈ 1.0', () => {
|
|
73
|
+
expect(converter.convert(2, 'colher-sopa-eua', 'onca-fluida-eua')).toBeCloseTo(1.0, 8);
|
|
74
|
+
});
|
|
75
|
+
test('8 onca-fluida-eua → xicara-eua ≈ 1.0', () => {
|
|
76
|
+
expect(converter.convert(8, 'onca-fluida-eua', 'xicara-eua')).toBeCloseTo(1.0, 8);
|
|
77
|
+
});
|
|
78
|
+
test('2 xicara-eua → pinta-eua ≈ 1.0', () => {
|
|
79
|
+
expect(converter.convert(2, 'xicara-eua', 'pinta-eua')).toBeCloseTo(1.0, 8);
|
|
80
|
+
});
|
|
81
|
+
test('2 pinta-eua → quarto-eua ≈ 1.0', () => {
|
|
82
|
+
expect(converter.convert(2, 'pinta-eua', 'quarto-eua')).toBeCloseTo(1.0, 8);
|
|
83
|
+
});
|
|
84
|
+
test('4 quarto-eua → galao-liquido-eua ≈ 1.0', () => {
|
|
85
|
+
expect(converter.convert(4, 'quarto-eua', 'galao-liquido-eua')).toBeCloseTo(1.0, 8);
|
|
86
|
+
});
|
|
87
|
+
test('1 colher-cha-eua → mililitro ≈ 4.929', () => {
|
|
88
|
+
expect(converter.convert(1, 'colher-cha-eua', 'mililitro')).toBeCloseTo(4.92892159375, 8);
|
|
89
|
+
});
|
|
90
|
+
test('1 colher-sopa-eua → mililitro ≈ 14.787', () => {
|
|
91
|
+
expect(converter.convert(1, 'colher-sopa-eua', 'mililitro')).toBeCloseTo(14.78676478125, 8);
|
|
92
|
+
});
|
|
93
|
+
test('1 xicara-eua → mililitro ≈ 236.588', () => {
|
|
94
|
+
expect(converter.convert(1, 'xicara-eua', 'mililitro')).toBeCloseTo(236.5882365, 6);
|
|
95
|
+
});
|
|
96
|
+
test('1 galao-liquido-eua → litro ≈ 3.785', () => {
|
|
97
|
+
expect(converter.convert(1, 'galao-liquido-eua', 'litro')).toBeCloseTo(3.785411784, 8);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
// Testes de conversão de medidas culinárias imperiais
|
|
101
|
+
describe('Conversões de medidas culinárias imperiais', () => {
|
|
102
|
+
test('3 colher-cha-imperial → colher-sopa-imperial ≈ 1.0', () => {
|
|
103
|
+
expect(converter.convert(3, 'colher-cha-imperial', 'colher-sopa-imperial')).toBeCloseTo(0.9999983106395919, 8);
|
|
104
|
+
});
|
|
105
|
+
test('20 onca-fluida-imperial → pinta-imperial ≈ 1.0', () => {
|
|
106
|
+
expect(converter.convert(20, 'onca-fluida-imperial', 'pinta-imperial')).toBeCloseTo(1.0, 8);
|
|
107
|
+
});
|
|
108
|
+
test('2 pinta-imperial → quarto-imperial ≈ 1.0', () => {
|
|
109
|
+
expect(converter.convert(2, 'pinta-imperial', 'quarto-imperial')).toBeCloseTo(1.0, 8);
|
|
110
|
+
});
|
|
111
|
+
test('4 quarto-imperial → galao-imperial ≈ 1.0', () => {
|
|
112
|
+
expect(converter.convert(4, 'quarto-imperial', 'galao-imperial')).toBeCloseTo(1.0, 8);
|
|
113
|
+
});
|
|
114
|
+
test('1 colher-cha-imperial → mililitro ≈ 5.919', () => {
|
|
115
|
+
expect(converter.convert(1, 'colher-cha-imperial', 'mililitro')).toBeCloseTo(5.91939, 5);
|
|
116
|
+
});
|
|
117
|
+
test('1 onca-fluida-imperial → mililitro ≈ 28.413', () => {
|
|
118
|
+
expect(converter.convert(1, 'onca-fluida-imperial', 'mililitro')).toBeCloseTo(28.4130625, 7);
|
|
119
|
+
});
|
|
120
|
+
test('1 galao-imperial → litro ≈ 4.546', () => {
|
|
121
|
+
expect(converter.convert(1, 'galao-imperial', 'litro')).toBeCloseTo(4.54609, 5);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
// Testes de conversão de unidades cúbicas imperiais
|
|
125
|
+
describe('Conversões de unidades cúbicas imperiais', () => {
|
|
126
|
+
test('1 polegada-cubica → mililitro ≈ 16.387', () => {
|
|
127
|
+
expect(converter.convert(1, 'polegada-cubica', 'mililitro')).toBeCloseTo(16.387064, 6);
|
|
128
|
+
});
|
|
129
|
+
test('1728 polegada-cubica → pe-cubico ≈ 1.0', () => {
|
|
130
|
+
expect(converter.convert(1728, 'polegada-cubica', 'pe-cubico')).toBeCloseTo(1.0, 6);
|
|
131
|
+
});
|
|
132
|
+
test('27 pe-cubico → jarda-cubica ≈ 1.0', () => {
|
|
133
|
+
expect(converter.convert(27, 'pe-cubico', 'jarda-cubica')).toBeCloseTo(1.0, 6);
|
|
134
|
+
});
|
|
135
|
+
test('1 pe-cubico → litro ≈ 28.317', () => {
|
|
136
|
+
expect(converter.convert(1, 'pe-cubico', 'litro')).toBeCloseTo(28.316846592, 6);
|
|
137
|
+
});
|
|
138
|
+
test('1 jarda-cubica → metro-cubico ≈ 0.765', () => {
|
|
139
|
+
expect(converter.convert(1, 'jarda-cubica', 'metro-cubico')).toBeCloseTo(0.764554857984, 6);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
// Testes de comparação entre sistemas americano e imperial
|
|
143
|
+
describe('Comparações entre sistemas americano e imperial', () => {
|
|
144
|
+
test('1 galao-liquido-eua vs 1 galao-imperial', () => {
|
|
145
|
+
const galEUA = converter.convert(1, 'galao-liquido-eua', 'litro');
|
|
146
|
+
const galImperial = converter.convert(1, 'galao-imperial', 'litro');
|
|
147
|
+
expect(galImperial).toBeGreaterThan(galEUA);
|
|
148
|
+
expect(galImperial / galEUA).toBeCloseTo(1.201, 2); // Imperial é ~20% maior
|
|
149
|
+
});
|
|
150
|
+
test('1 pinta-eua vs 1 pinta-imperial', () => {
|
|
151
|
+
const pintaEUA = converter.convert(1, 'pinta-eua', 'mililitro');
|
|
152
|
+
const pintaImperial = converter.convert(1, 'pinta-imperial', 'mililitro');
|
|
153
|
+
expect(pintaImperial).toBeGreaterThan(pintaEUA);
|
|
154
|
+
expect(pintaImperial / pintaEUA).toBeCloseTo(1.201, 2);
|
|
155
|
+
});
|
|
156
|
+
test('1 onca-fluida-eua vs 1 onca-fluida-imperial', () => {
|
|
157
|
+
const oncaEUA = converter.convert(1, 'onca-fluida-eua', 'mililitro');
|
|
158
|
+
const oncaImperial = converter.convert(1, 'onca-fluida-imperial', 'mililitro');
|
|
159
|
+
expect(oncaEUA).toBeGreaterThan(oncaImperial);
|
|
160
|
+
expect(oncaEUA / oncaImperial).toBeCloseTo(1.04, 2);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
// Testes de conversões para culinária
|
|
164
|
+
describe('Conversões práticas para culinária', () => {
|
|
165
|
+
test('1 xicara-eua → centilitro ≈ 23.659', () => {
|
|
166
|
+
expect(converter.convert(1, 'xicara-eua', 'centilitro')).toBeCloseTo(23.659, 2);
|
|
167
|
+
});
|
|
168
|
+
test('250 mililitro → xicara-eua ≈ 1.057', () => {
|
|
169
|
+
expect(converter.convert(250, 'mililitro', 'xicara-eua')).toBeCloseTo(1.057, 2);
|
|
170
|
+
});
|
|
171
|
+
test('1 colher-sopa-eua → colher-cha-eua ≈ 3.0', () => {
|
|
172
|
+
expect(converter.convert(1, 'colher-sopa-eua', 'colher-cha-eua')).toBeCloseTo(3.0, 8);
|
|
173
|
+
});
|
|
174
|
+
test('15 mililitro → colher-sopa-eua ≈ 1.014', () => {
|
|
175
|
+
expect(converter.convert(15, 'mililitro', 'colher-sopa-eua')).toBeCloseTo(1.014, 2);
|
|
176
|
+
});
|
|
177
|
+
test('5 mililitro → colher-cha-eua ≈ 1.014', () => {
|
|
178
|
+
expect(converter.convert(5, 'mililitro', 'colher-cha-eua')).toBeCloseTo(1.014, 2);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
// Testes de volumes grandes
|
|
182
|
+
describe('Conversões de volumes grandes', () => {
|
|
183
|
+
test('1 metro-cubico → galao-liquido-eua ≈ 264.172', () => {
|
|
184
|
+
expect(converter.convert(1, 'metro-cubico', 'galao-liquido-eua')).toBeCloseTo(264.172, 2);
|
|
185
|
+
});
|
|
186
|
+
test('1 metro-cubico → galao-imperial ≈ 219.969', () => {
|
|
187
|
+
expect(converter.convert(1, 'metro-cubico', 'galao-imperial')).toBeCloseTo(219.969, 2);
|
|
188
|
+
});
|
|
189
|
+
test('1 acre-pe-cubico → metro-cubico ≈ 1233481.837', () => {
|
|
190
|
+
expect(converter.convert(1, 'acre-pe-cubico', 'metro-cubico')).toBeCloseTo(1233.4818365478402, 0);
|
|
191
|
+
});
|
|
192
|
+
test('1 hectolitro → metro-cubico ≈ 0.1', () => {
|
|
193
|
+
expect(converter.convert(1, 'hectolitro', 'metro-cubico')).toBeCloseTo(0.1, 10);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
// Testes de conversões bidirecionais
|
|
197
|
+
describe('Conversões bidirecionais', () => {
|
|
198
|
+
test('Conversão bidirecional: litro ↔ galao-liquido-eua', () => {
|
|
199
|
+
const litros = 10;
|
|
200
|
+
const galoesEUA = converter.convert(litros, 'litro', 'galao-liquido-eua');
|
|
201
|
+
const litrosNovamente = converter.convert(galoesEUA, 'galao-liquido-eua', 'litro');
|
|
202
|
+
expect(litrosNovamente).toBeCloseTo(litros, 8);
|
|
203
|
+
});
|
|
204
|
+
test('Conversão bidirecional: mililitro ↔ onca-fluida-eua', () => {
|
|
205
|
+
const mililitros = 100;
|
|
206
|
+
const oncasEUA = converter.convert(mililitros, 'mililitro', 'onca-fluida-eua');
|
|
207
|
+
const mililitrosNovamente = converter.convert(oncasEUA, 'onca-fluida-eua', 'mililitro');
|
|
208
|
+
expect(mililitrosNovamente).toBeCloseTo(mililitros, 8);
|
|
209
|
+
});
|
|
210
|
+
test('Conversão bidirecional: metro-cubico ↔ pe-cubico', () => {
|
|
211
|
+
const metrosCubicos = 2;
|
|
212
|
+
const pesCubicos = converter.convert(metrosCubicos, 'metro-cubico', 'pe-cubico');
|
|
213
|
+
const metrosCubicosNovamente = converter.convert(pesCubicos, 'pe-cubico', 'metro-cubico');
|
|
214
|
+
expect(metrosCubicosNovamente).toBeCloseTo(metrosCubicos, 6);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
// Testes com valores decimais
|
|
218
|
+
describe('Conversões com valores decimais', () => {
|
|
219
|
+
test('0.5 litro → mililitro ≈ 500.0', () => {
|
|
220
|
+
expect(converter.convert(0.5, 'litro', 'mililitro')).toBeCloseTo(500.0, 10);
|
|
221
|
+
});
|
|
222
|
+
test('2.5 xicara-eua → mililitro ≈ 591.471', () => {
|
|
223
|
+
expect(converter.convert(2.5, 'xicara-eua', 'mililitro')).toBeCloseTo(591.471, 2);
|
|
224
|
+
});
|
|
225
|
+
test('0.25 galao-liquido-eua → litro ≈ 0.946', () => {
|
|
226
|
+
expect(converter.convert(0.25, 'galao-liquido-eua', 'litro')).toBeCloseTo(0.946, 2);
|
|
227
|
+
});
|
|
228
|
+
test('1.5 colher-sopa-eua → mililitro ≈ 22.180', () => {
|
|
229
|
+
expect(converter.convert(1.5, 'colher-sopa-eua', 'mililitro')).toBeCloseTo(22.180, 2);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
// Testes de casos extremos
|
|
233
|
+
describe('Casos extremos', () => {
|
|
234
|
+
test('0 volume → qualquer unidade ≈ 0.0', () => {
|
|
235
|
+
expect(converter.convert(0, 'litro', 'mililitro')).toBeCloseTo(0.0, 10);
|
|
236
|
+
expect(converter.convert(0, 'galao-liquido-eua', 'litro')).toBeCloseTo(0.0, 10);
|
|
237
|
+
expect(converter.convert(0, 'metro-cubico', 'pe-cubico')).toBeCloseTo(0.0, 10);
|
|
238
|
+
});
|
|
239
|
+
test('Conversões muito pequenas', () => {
|
|
240
|
+
expect(converter.convert(0.001, 'mililitro', 'milimetro-cubico')).toBeCloseTo(1, 10);
|
|
241
|
+
expect(converter.convert(1, 'mililitro', 'centimetro-cubico')).toBeCloseTo(1, 10);
|
|
242
|
+
});
|
|
243
|
+
test('Conversões muito grandes', () => {
|
|
244
|
+
expect(converter.convert(1000000, 'litro', 'metro-cubico')).toBeCloseTo(1000.0, 5);
|
|
245
|
+
expect(converter.convert(1000000, 'mililitro', 'hectolitro')).toBeCloseTo(10.0, 5);
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
// Testes de conversões em cadeia
|
|
249
|
+
describe('Conversões em cadeia', () => {
|
|
250
|
+
test('Múltiplas conversões mantêm precisão', () => {
|
|
251
|
+
const valorInicial = 100;
|
|
252
|
+
let resultado = valorInicial;
|
|
253
|
+
// mililitro → litro → galao-eua → xicara-eua → onca-eua → colher-sopa-eua → mililitro
|
|
254
|
+
resultado = converter.convert(resultado, 'mililitro', 'litro');
|
|
255
|
+
resultado = converter.convert(resultado, 'litro', 'galao-liquido-eua');
|
|
256
|
+
resultado = converter.convert(resultado, 'galao-liquido-eua', 'xicara-eua');
|
|
257
|
+
resultado = converter.convert(resultado, 'xicara-eua', 'onca-fluida-eua');
|
|
258
|
+
resultado = converter.convert(resultado, 'onca-fluida-eua', 'colher-sopa-eua');
|
|
259
|
+
resultado = converter.convert(resultado, 'colher-sopa-eua', 'mililitro');
|
|
260
|
+
expect(resultado).toBeCloseTo(valorInicial, 6);
|
|
261
|
+
});
|
|
262
|
+
test('Conversão métrica em cadeia', () => {
|
|
263
|
+
const valorInicial = 1;
|
|
264
|
+
let resultado = valorInicial;
|
|
265
|
+
// metro-cubico → litro → mililitro → centimetro-cubico → decimetro-cubico → metro-cubico
|
|
266
|
+
resultado = converter.convert(resultado, 'metro-cubico', 'litro');
|
|
267
|
+
resultado = converter.convert(resultado, 'litro', 'mililitro');
|
|
268
|
+
resultado = converter.convert(resultado, 'mililitro', 'centimetro-cubico');
|
|
269
|
+
resultado = converter.convert(resultado, 'centimetro-cubico', 'decimetro-cubico');
|
|
270
|
+
resultado = converter.convert(resultado, 'decimetro-cubico', 'metro-cubico');
|
|
271
|
+
expect(resultado).toBeCloseTo(valorInicial, 8);
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
// Testes de precisão específica
|
|
275
|
+
describe('Testes de precisão específica', () => {
|
|
276
|
+
test('Galão seco vs líquido (EUA)', () => {
|
|
277
|
+
const galaoLiquido = converter.convert(1, 'galao-liquido-eua', 'litro');
|
|
278
|
+
const galaoSeco = converter.convert(1, 'galao-seco-eua', 'litro');
|
|
279
|
+
expect(galaoSeco).toBeGreaterThan(galaoLiquido);
|
|
280
|
+
expect(galaoSeco / galaoLiquido).toBeCloseTo(1.164, 2);
|
|
281
|
+
});
|
|
282
|
+
test('Relação exata entre unidades cúbicas', () => {
|
|
283
|
+
// 1 m³ = 1000 L = 1000000 mL = 1000000 cm³
|
|
284
|
+
expect(converter.convert(1, 'metro-cubico', 'litro')).toBeCloseTo(1000.0, 10);
|
|
285
|
+
expect(converter.convert(1, 'metro-cubico', 'mililitro')).toBeCloseTo(1000000.0, 5);
|
|
286
|
+
expect(converter.convert(1, 'metro-cubico', 'centimetro-cubico')).toBeCloseTo(1000000.0, 5);
|
|
287
|
+
});
|
|
288
|
+
test('Relação entre colheres (EUA)', () => {
|
|
289
|
+
// 1 Tbsp = 3 tsp exatamente
|
|
290
|
+
const colherSopa = converter.convert(1, 'colher-sopa-eua', 'mililitro');
|
|
291
|
+
const colherCha = converter.convert(3, 'colher-cha-eua', 'mililitro');
|
|
292
|
+
expect(colherSopa).toBeCloseTo(colherCha, 10);
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WeightMassConverter = void 0;
|
|
4
|
+
const converter_base_1 = require("../../converter-base");
|
|
5
|
+
class WeightMassConverter extends converter_base_1.ConverterBaseService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super([
|
|
8
|
+
// Base: grama
|
|
9
|
+
{ id: 'micrograma', name: 'Micrograma', symbol: 'µg', conversionFactor: 0.000001, isBaseUnit: false },
|
|
10
|
+
{ id: 'miligrama', name: 'Miligrama', symbol: 'mg', conversionFactor: 0.001, isBaseUnit: false },
|
|
11
|
+
{ id: 'centigrama', name: 'Centigrama', symbol: 'cg', conversionFactor: 0.01, isBaseUnit: false },
|
|
12
|
+
{ id: 'decigrama', name: 'Decigrama', symbol: 'dg', conversionFactor: 0.1, isBaseUnit: false },
|
|
13
|
+
{ id: 'grama', name: 'Grama', symbol: 'g', conversionFactor: 1, isBaseUnit: true },
|
|
14
|
+
{ id: 'decagrama', name: 'Decagrama', symbol: 'dag', conversionFactor: 10, isBaseUnit: false },
|
|
15
|
+
{ id: 'hectograma', name: 'Hectograma', symbol: 'hg', conversionFactor: 100, isBaseUnit: false },
|
|
16
|
+
{ id: 'quilograma', name: 'Quilograma', symbol: 'kg', conversionFactor: 1000, isBaseUnit: false },
|
|
17
|
+
{ id: 'tonelada-metrica', name: 'Tonelada Métrica', symbol: 't', conversionFactor: 1000000, isBaseUnit: false },
|
|
18
|
+
{ id: 'grao', name: 'Grão', symbol: 'gr', conversionFactor: 0.06479891, isBaseUnit: false },
|
|
19
|
+
{ id: 'quilate', name: 'Quilate (métrico)', symbol: 'ct', conversionFactor: 0.2, isBaseUnit: false },
|
|
20
|
+
{ id: 'onca', name: 'Onça (avoirdupois)', symbol: 'oz', conversionFactor: 28.349523125, isBaseUnit: false },
|
|
21
|
+
{ id: 'libra', name: 'Libra (avoirdupois)', symbol: 'lb', conversionFactor: 453.59237, isBaseUnit: false },
|
|
22
|
+
{ id: 'pedra', name: 'Pedra', symbol: 'st', conversionFactor: 6350.29318, isBaseUnit: false },
|
|
23
|
+
{ id: 'tonelada-curta', name: 'Tonelada Curta (EUA)', symbol: 'sh.t', conversionFactor: 907184.74, isBaseUnit: false },
|
|
24
|
+
{ id: 'tonelada-longa', name: 'Tonelada Longa (Reino Unido)', symbol: 'l.t', conversionFactor: 1016046.9088, isBaseUnit: false },
|
|
25
|
+
{ id: 'quintal', name: 'Quintal (métrico)', symbol: 'q', conversionFactor: 100000, isBaseUnit: false },
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.WeightMassConverter = WeightMassConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const unit_converter_factory_1 = require("../../unit.converter.factory");
|
|
4
|
+
const factory = new unit_converter_factory_1.UnitConverterFactory();
|
|
5
|
+
const converter = factory.createService('weight-mass');
|
|
6
|
+
describe('Conversão completa entre unidades de massa', () => {
|
|
7
|
+
// Testes de conversão para a mesma unidade
|
|
8
|
+
describe('Conversões para a mesma unidade', () => {
|
|
9
|
+
test('1 grama → grama ≈ 1.0', () => {
|
|
10
|
+
expect(converter.convert(1, 'grama', 'grama')).toBeCloseTo(1.0, 10);
|
|
11
|
+
});
|
|
12
|
+
test('1 quilograma → quilograma ≈ 1.0', () => {
|
|
13
|
+
expect(converter.convert(1, 'quilograma', 'quilograma')).toBeCloseTo(1.0, 10);
|
|
14
|
+
});
|
|
15
|
+
test('1 miligrama → miligrama ≈ 1.0', () => {
|
|
16
|
+
expect(converter.convert(1, 'miligrama', 'miligrama')).toBeCloseTo(1.0, 10);
|
|
17
|
+
});
|
|
18
|
+
test('1 tonelada-metrica → tonelada-metrica ≈ 1.0', () => {
|
|
19
|
+
expect(converter.convert(1, 'tonelada-metrica', 'tonelada-metrica')).toBeCloseTo(1.0, 10);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
// Conversões básicas do sistema métrico
|
|
23
|
+
describe('Conversões do sistema métrico - unidade base: grama', () => {
|
|
24
|
+
test('1 micrograma → grama = 0.000001', () => {
|
|
25
|
+
expect(converter.convert(1, 'micrograma', 'grama')).toBeCloseTo(0.000001, 10);
|
|
26
|
+
});
|
|
27
|
+
test('1 miligrama → grama = 0.001', () => {
|
|
28
|
+
expect(converter.convert(1, 'miligrama', 'grama')).toBeCloseTo(0.001, 10);
|
|
29
|
+
});
|
|
30
|
+
test('1 centigrama → grama = 0.01', () => {
|
|
31
|
+
expect(converter.convert(1, 'centigrama', 'grama')).toBeCloseTo(0.01, 10);
|
|
32
|
+
});
|
|
33
|
+
test('1 decigrama → grama = 0.1', () => {
|
|
34
|
+
expect(converter.convert(1, 'decigrama', 'grama')).toBeCloseTo(0.1, 10);
|
|
35
|
+
});
|
|
36
|
+
test('1 decagrama → grama = 10', () => {
|
|
37
|
+
expect(converter.convert(1, 'decagrama', 'grama')).toBeCloseTo(10, 10);
|
|
38
|
+
});
|
|
39
|
+
test('1 hectograma → grama = 100', () => {
|
|
40
|
+
expect(converter.convert(1, 'hectograma', 'grama')).toBeCloseTo(100, 10);
|
|
41
|
+
});
|
|
42
|
+
test('1 quilograma → grama = 1000', () => {
|
|
43
|
+
expect(converter.convert(1, 'quilograma', 'grama')).toBeCloseTo(1000, 10);
|
|
44
|
+
});
|
|
45
|
+
test('1 tonelada-metrica → grama = 1000000', () => {
|
|
46
|
+
expect(converter.convert(1, 'tonelada-metrica', 'grama')).toBeCloseTo(1000000, 10);
|
|
47
|
+
});
|
|
48
|
+
test('1 quintal → grama = 100000', () => {
|
|
49
|
+
expect(converter.convert(1, 'quintal', 'grama')).toBeCloseTo(100000, 10);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
// Conversões inversas do sistema métrico
|
|
53
|
+
describe('Conversões inversas do sistema métrico', () => {
|
|
54
|
+
test('1 grama → micrograma = 1000000', () => {
|
|
55
|
+
expect(converter.convert(1, 'grama', 'micrograma')).toBeCloseTo(1000000, 10);
|
|
56
|
+
});
|
|
57
|
+
test('1 grama → miligrama = 1000', () => {
|
|
58
|
+
expect(converter.convert(1, 'grama', 'miligrama')).toBeCloseTo(1000, 10);
|
|
59
|
+
});
|
|
60
|
+
test('1 grama → quilograma = 0.001', () => {
|
|
61
|
+
expect(converter.convert(1, 'grama', 'quilograma')).toBeCloseTo(0.001, 10);
|
|
62
|
+
});
|
|
63
|
+
test('1 quilograma → tonelada-metrica = 0.001', () => {
|
|
64
|
+
expect(converter.convert(1, 'quilograma', 'tonelada-metrica')).toBeCloseTo(0.001, 10);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
// Conversões do sistema imperial/americano
|
|
68
|
+
describe('Conversões do sistema imperial/americano', () => {
|
|
69
|
+
test('1 grao → grama ≈ 0.06479891', () => {
|
|
70
|
+
expect(converter.convert(1, 'grao', 'grama')).toBeCloseTo(0.06479891, 8);
|
|
71
|
+
});
|
|
72
|
+
test('1 quilate → grama = 0.2', () => {
|
|
73
|
+
expect(converter.convert(1, 'quilate', 'grama')).toBeCloseTo(0.2, 10);
|
|
74
|
+
});
|
|
75
|
+
test('1 onca → grama ≈ 28.349523125', () => {
|
|
76
|
+
expect(converter.convert(1, 'onca', 'grama')).toBeCloseTo(28.349523125, 8);
|
|
77
|
+
});
|
|
78
|
+
test('1 libra → grama ≈ 453.59237', () => {
|
|
79
|
+
expect(converter.convert(1, 'libra', 'grama')).toBeCloseTo(453.59237, 8);
|
|
80
|
+
});
|
|
81
|
+
test('1 pedra → grama ≈ 6350.29318', () => {
|
|
82
|
+
expect(converter.convert(1, 'pedra', 'grama')).toBeCloseTo(6350.29318, 8);
|
|
83
|
+
});
|
|
84
|
+
test('1 tonelada-curta → grama ≈ 907184.74', () => {
|
|
85
|
+
expect(converter.convert(1, 'tonelada-curta', 'grama')).toBeCloseTo(907184.74, 6);
|
|
86
|
+
});
|
|
87
|
+
test('1 tonelada-longa → grama ≈ 1016046.9088', () => {
|
|
88
|
+
expect(converter.convert(1, 'tonelada-longa', 'grama')).toBeCloseTo(1016046.9088, 6);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
// Conversões entre unidades imperiais
|
|
92
|
+
describe('Conversões entre sistemas imperial/americano', () => {
|
|
93
|
+
test('1 libra → onca = 16', () => {
|
|
94
|
+
expect(converter.convert(1, 'libra', 'onca')).toBeCloseTo(16, 8);
|
|
95
|
+
});
|
|
96
|
+
test('1 pedra → libra = 14', () => {
|
|
97
|
+
expect(converter.convert(1, 'pedra', 'libra')).toBeCloseTo(14, 8);
|
|
98
|
+
});
|
|
99
|
+
test('1 tonelada-curta → libra = 2000', () => {
|
|
100
|
+
expect(converter.convert(1, 'tonelada-curta', 'libra')).toBeCloseTo(2000, 6);
|
|
101
|
+
});
|
|
102
|
+
test('1 tonelada-longa → libra ≈ 2240', () => {
|
|
103
|
+
expect(converter.convert(1, 'tonelada-longa', 'libra')).toBeCloseTo(2240, 6);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
// Conversões comuns do dia a dia
|
|
107
|
+
describe('Conversões comuns do cotidiano', () => {
|
|
108
|
+
test('500 gramas → quilograma = 0.5', () => {
|
|
109
|
+
expect(converter.convert(500, 'grama', 'quilograma')).toBeCloseTo(0.5, 10);
|
|
110
|
+
});
|
|
111
|
+
test('2.5 quilogramas → gramas = 2500', () => {
|
|
112
|
+
expect(converter.convert(2.5, 'quilograma', 'grama')).toBeCloseTo(2500, 10);
|
|
113
|
+
});
|
|
114
|
+
test('100 miligramas → gramas = 0.1', () => {
|
|
115
|
+
expect(converter.convert(100, 'miligrama', 'grama')).toBeCloseTo(0.1, 10);
|
|
116
|
+
});
|
|
117
|
+
test('5 quilates → gramas = 1', () => {
|
|
118
|
+
expect(converter.convert(5, 'quilate', 'grama')).toBeCloseTo(1, 10);
|
|
119
|
+
});
|
|
120
|
+
test('1 libra → quilograma ≈ 0.45359237', () => {
|
|
121
|
+
expect(converter.convert(1, 'libra', 'quilograma')).toBeCloseTo(0.45359237, 8);
|
|
122
|
+
});
|
|
123
|
+
test('10 toneladas métricas → quilogramas = 10000', () => {
|
|
124
|
+
expect(converter.convert(10, 'tonelada-metrica', 'quilograma')).toBeCloseTo(10000, 10);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
// Testes com valores decimais
|
|
128
|
+
describe('Conversões com valores decimais', () => {
|
|
129
|
+
test('0.5 quilograma → grama = 500', () => {
|
|
130
|
+
expect(converter.convert(0.5, 'quilograma', 'grama')).toBeCloseTo(500, 10);
|
|
131
|
+
});
|
|
132
|
+
test('1.25 libras → onças = 20', () => {
|
|
133
|
+
expect(converter.convert(1.25, 'libra', 'onca')).toBeCloseTo(20, 8);
|
|
134
|
+
});
|
|
135
|
+
test('0.001 tonelada-metrica → grama = 1000', () => {
|
|
136
|
+
expect(converter.convert(0.001, 'tonelada-metrica', 'grama')).toBeCloseTo(1000, 10);
|
|
137
|
+
});
|
|
138
|
+
test('2.5 hectogramas → quilograma = 0.25', () => {
|
|
139
|
+
expect(converter.convert(2.5, 'hectograma', 'quilograma')).toBeCloseTo(0.25, 10);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
// Testes com valores grandes
|
|
143
|
+
describe('Conversões com valores grandes', () => {
|
|
144
|
+
test('1000000 miligramas → quilograma = 1', () => {
|
|
145
|
+
expect(converter.convert(1000000, 'miligrama', 'quilograma')).toBeCloseTo(1, 10);
|
|
146
|
+
});
|
|
147
|
+
test('1000 toneladas métricas → quilogramas = 1000000', () => {
|
|
148
|
+
expect(converter.convert(1000, 'tonelada-metrica', 'quilograma')).toBeCloseTo(1000000, 10);
|
|
149
|
+
});
|
|
150
|
+
test('50000 grãos → quilograma ≈ 3.239945', () => {
|
|
151
|
+
expect(converter.convert(50000, 'grao', 'quilograma')).toBeCloseTo(3.2399455, 6);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
// Testes com valores pequenos
|
|
155
|
+
describe('Conversões com valores pequenos', () => {
|
|
156
|
+
test('0.001 grama → miligrama = 1', () => {
|
|
157
|
+
expect(converter.convert(0.001, 'grama', 'miligrama')).toBeCloseTo(1, 10);
|
|
158
|
+
});
|
|
159
|
+
test('0.0001 onça → miligrama ≈ 2.8349523', () => {
|
|
160
|
+
expect(converter.convert(0.0001, 'onca', 'miligrama')).toBeCloseTo(2.8349523, 7);
|
|
161
|
+
});
|
|
162
|
+
test('0.5 micrograma → nanograma = 500', () => {
|
|
163
|
+
// Assumindo que nanograma seria 0.000000001 se existisse
|
|
164
|
+
expect(converter.convert(0.5, 'micrograma', 'grama')).toBeCloseTo(0.0000005, 10);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
// Testes de casos extremos
|
|
168
|
+
describe('Casos extremos', () => {
|
|
169
|
+
test('0 grama → quilograma = 0', () => {
|
|
170
|
+
expect(converter.convert(0, 'grama', 'quilograma')).toBe(0);
|
|
171
|
+
});
|
|
172
|
+
test('Número muito grande: 999999 quilogramas → tonelada-metrica ≈ 999.999', () => {
|
|
173
|
+
expect(converter.convert(999999, 'quilograma', 'tonelada-metrica')).toBeCloseTo(999.999, 3);
|
|
174
|
+
});
|
|
175
|
+
test('Número muito pequeno: 0.000001 quilograma → micrograma = 1000', () => {
|
|
176
|
+
expect(converter.convert(0.000001, 'quilograma', 'micrograma')).toBeCloseTo(1000, 10);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
// Testes de precisão
|
|
180
|
+
describe('Testes de precisão', () => {
|
|
181
|
+
test('Conversão ida e volta: grama → quilograma → grama', () => {
|
|
182
|
+
const original = 1500;
|
|
183
|
+
const converted = converter.convert(original, 'grama', 'quilograma');
|
|
184
|
+
const backConverted = converter.convert(converted, 'quilograma', 'grama');
|
|
185
|
+
expect(backConverted).toBeCloseTo(original, 8);
|
|
186
|
+
});
|
|
187
|
+
test('Conversão ida e volta: libra → grama → libra', () => {
|
|
188
|
+
const original = 2.5;
|
|
189
|
+
const converted = converter.convert(original, 'libra', 'grama');
|
|
190
|
+
const backConverted = converter.convert(converted, 'grama', 'libra');
|
|
191
|
+
expect(backConverted).toBeCloseTo(original, 8);
|
|
192
|
+
});
|
|
193
|
+
test('Conversão ida e volta: micrograma → tonelada-metrica → micrograma', () => {
|
|
194
|
+
const original = 5000000000; // 5 bilhões de microgramas
|
|
195
|
+
const converted = converter.convert(original, 'micrograma', 'tonelada-metrica');
|
|
196
|
+
const backConverted = converter.convert(converted, 'tonelada-metrica', 'micrograma');
|
|
197
|
+
expect(backConverted).toBeCloseTo(original, 6);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
// Testes de equivalências conhecidas
|
|
201
|
+
describe('Equivalências conhecidas', () => {
|
|
202
|
+
test('1 quilograma = 2.20462 libras (aproximadamente)', () => {
|
|
203
|
+
expect(converter.convert(1, 'quilograma', 'libra')).toBeCloseTo(2.20462, 5);
|
|
204
|
+
});
|
|
205
|
+
test('1 onça = 28.35 gramas (aproximadamente)', () => {
|
|
206
|
+
expect(converter.convert(1, 'onca', 'grama')).toBeCloseTo(28.35, 2);
|
|
207
|
+
});
|
|
208
|
+
test('1 tonelada métrica = 1.10231 tonelada curta (aproximadamente)', () => {
|
|
209
|
+
expect(converter.convert(1, 'tonelada-metrica', 'tonelada-curta')).toBeCloseTo(1.10231, 5);
|
|
210
|
+
});
|
|
211
|
+
test('1 pedra = 6.35 quilogramas (aproximadamente)', () => {
|
|
212
|
+
expect(converter.convert(1, 'pedra', 'quilograma')).toBeCloseTo(6.35, 2);
|
|
213
|
+
});
|
|
214
|
+
test('5 quilates = 1 grama', () => {
|
|
215
|
+
expect(converter.convert(5, 'quilate', 'grama')).toBeCloseTo(1, 10);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseFactory } from "../../baseFactory";
|
|
2
|
+
import { IServiceCategory } from "../../interfaces/IServiceCategory";
|
|
3
|
+
import { IUnitConverter } from "./interfaces/IUnitConverter";
|
|
4
|
+
import { IUnitConverterFactory } from "./interfaces/IUnitConverterFactory";
|
|
5
|
+
export declare class UnitConverterFactory extends BaseFactory<IUnitConverter> implements IUnitConverterFactory {
|
|
6
|
+
constructor();
|
|
7
|
+
protected throwServiceNotFoundError(serviceId: string): never;
|
|
8
|
+
protected registerService(service: IServiceCategory): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnitConverterFactory = void 0;
|
|
4
|
+
const baseFactory_1 = require("../../baseFactory");
|
|
5
|
+
const provider_1 = require("./provider");
|
|
6
|
+
class UnitConverterFactory extends baseFactory_1.BaseFactory {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(provider_1.categories);
|
|
9
|
+
}
|
|
10
|
+
throwServiceNotFoundError(serviceId) {
|
|
11
|
+
throw new Error(`O conversor solicitado não está implementado: ${serviceId}`);
|
|
12
|
+
}
|
|
13
|
+
registerService(service) {
|
|
14
|
+
const module = require("./services/" + service.id + "/" + service.id + ".converter");
|
|
15
|
+
// Atribui o construtor: preferencialmente `default`, ou a primeira propriedade exportada
|
|
16
|
+
const implementation = module.default || Object.values(module)[0];
|
|
17
|
+
this.map.set(service.id, new implementation());
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.UnitConverterFactory = UnitConverterFactory;
|
package/dist/crypt.d.ts
ADDED
|
File without changes
|