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,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const data_converter_1 = require("./data.converter");
|
|
4
|
+
describe('DigitalConverter', () => {
|
|
5
|
+
let converter;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
converter = new data_converter_1.DataConverter();
|
|
8
|
+
});
|
|
9
|
+
describe('Inicialização', () => {
|
|
10
|
+
it('deve inicializar com todas as unidades de informação digital', () => {
|
|
11
|
+
const units = converter.getUnits();
|
|
12
|
+
expect(units).toHaveLength(18);
|
|
13
|
+
});
|
|
14
|
+
it('deve ter bit como unidade base', () => {
|
|
15
|
+
const baseUnit = converter.getBaseUnit();
|
|
16
|
+
expect(baseUnit.id).toBe('bit');
|
|
17
|
+
expect(baseUnit.isBaseUnit).toBe(true);
|
|
18
|
+
expect(baseUnit.conversionFactor).toBe(1);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('Busca de unidades', () => {
|
|
22
|
+
it('deve encontrar unidade por ID', () => {
|
|
23
|
+
const unit = converter.getUnitById('megabyte');
|
|
24
|
+
expect(unit).toBeDefined();
|
|
25
|
+
expect(unit?.name).toBe('Megabyte');
|
|
26
|
+
expect(unit?.symbol).toBe('MB');
|
|
27
|
+
});
|
|
28
|
+
it('deve encontrar unidade por símbolo', () => {
|
|
29
|
+
const unit = converter.getUnitBySymbol('GB');
|
|
30
|
+
expect(unit).toBeDefined();
|
|
31
|
+
expect(unit?.id).toBe('gigabyte');
|
|
32
|
+
expect(unit?.name).toBe('Gigabyte');
|
|
33
|
+
});
|
|
34
|
+
it('deve encontrar unidade por nome', () => {
|
|
35
|
+
const unit = converter.getUnitByName('Kilobit');
|
|
36
|
+
expect(unit).toBeDefined();
|
|
37
|
+
expect(unit?.id).toBe('kilobit');
|
|
38
|
+
expect(unit?.symbol).toBe('kbit');
|
|
39
|
+
});
|
|
40
|
+
it('deve retornar undefined para unidade inexistente', () => {
|
|
41
|
+
expect(converter.getUnitById('inexistente')).toBeUndefined();
|
|
42
|
+
expect(converter.getUnitBySymbol('XX')).toBeUndefined();
|
|
43
|
+
expect(converter.getUnitByName('Unidade Inexistente')).toBeUndefined();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('Conversões básicas', () => {
|
|
47
|
+
it('deve converter bits para bytes', () => {
|
|
48
|
+
const result = converter.convert(8, 'bit', 'byte');
|
|
49
|
+
expect(result).toBe(1);
|
|
50
|
+
});
|
|
51
|
+
it('deve converter bytes para bits', () => {
|
|
52
|
+
const result = converter.convert(1, 'byte', 'bit');
|
|
53
|
+
expect(result).toBe(8);
|
|
54
|
+
});
|
|
55
|
+
it('deve converter da mesma unidade para ela mesma', () => {
|
|
56
|
+
const result = converter.convert(100, 'megabyte', 'megabyte');
|
|
57
|
+
expect(result).toBe(100);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('Conversões entre bits', () => {
|
|
61
|
+
it('deve converter bits para kilobits', () => {
|
|
62
|
+
const result = converter.convert(1000, 'bit', 'kilobit');
|
|
63
|
+
expect(result).toBe(1);
|
|
64
|
+
});
|
|
65
|
+
it('deve converter kilobits para megabits', () => {
|
|
66
|
+
const result = converter.convert(1000, 'kilobit', 'megabit');
|
|
67
|
+
expect(result).toBe(1);
|
|
68
|
+
});
|
|
69
|
+
it('deve converter megabits para gigabits', () => {
|
|
70
|
+
const result = converter.convert(1000, 'megabit', 'gigabit');
|
|
71
|
+
expect(result).toBe(1);
|
|
72
|
+
});
|
|
73
|
+
it('deve converter gigabits para terabits', () => {
|
|
74
|
+
const result = converter.convert(1000, 'gigabit', 'terabit');
|
|
75
|
+
expect(result).toBe(1);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('Conversões entre bytes', () => {
|
|
79
|
+
it('deve converter bytes para kilobytes', () => {
|
|
80
|
+
const result = converter.convert(1000, 'byte', 'kilobyte');
|
|
81
|
+
expect(result).toBe(1);
|
|
82
|
+
});
|
|
83
|
+
it('deve converter kilobytes para megabytes', () => {
|
|
84
|
+
const result = converter.convert(1000, 'kilobyte', 'megabyte');
|
|
85
|
+
expect(result).toBe(1);
|
|
86
|
+
});
|
|
87
|
+
it('deve converter megabytes para gigabytes', () => {
|
|
88
|
+
const result = converter.convert(1000, 'megabyte', 'gigabyte');
|
|
89
|
+
expect(result).toBe(1);
|
|
90
|
+
});
|
|
91
|
+
it('deve converter gigabytes para terabytes', () => {
|
|
92
|
+
const result = converter.convert(1000, 'gigabyte', 'terabyte');
|
|
93
|
+
expect(result).toBe(1);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('Conversões mistas (bits para bytes)', () => {
|
|
97
|
+
it('deve converter kilobits para kilobytes', () => {
|
|
98
|
+
const result = converter.convert(8, 'kilobit', 'kilobyte');
|
|
99
|
+
expect(result).toBe(1);
|
|
100
|
+
});
|
|
101
|
+
it('deve converter megabits para megabytes', () => {
|
|
102
|
+
const result = converter.convert(8, 'megabit', 'megabyte');
|
|
103
|
+
expect(result).toBe(1);
|
|
104
|
+
});
|
|
105
|
+
it('deve converter gigabits para gigabytes', () => {
|
|
106
|
+
const result = converter.convert(8, 'gigabit', 'gigabyte');
|
|
107
|
+
expect(result).toBe(1);
|
|
108
|
+
});
|
|
109
|
+
it('deve converter terabits para terabytes', () => {
|
|
110
|
+
const result = converter.convert(8, 'terabit', 'terabyte');
|
|
111
|
+
expect(result).toBe(1);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('Conversões mistas (bytes para bits)', () => {
|
|
115
|
+
it('deve converter kilobytes para kilobits', () => {
|
|
116
|
+
const result = converter.convert(1, 'kilobyte', 'kilobit');
|
|
117
|
+
expect(result).toBe(8);
|
|
118
|
+
});
|
|
119
|
+
it('deve converter megabytes para megabits', () => {
|
|
120
|
+
const result = converter.convert(1, 'megabyte', 'megabit');
|
|
121
|
+
expect(result).toBe(8);
|
|
122
|
+
});
|
|
123
|
+
it('deve converter gigabytes para gigabits', () => {
|
|
124
|
+
const result = converter.convert(1, 'gigabyte', 'gigabit');
|
|
125
|
+
expect(result).toBe(8);
|
|
126
|
+
});
|
|
127
|
+
it('deve converter terabytes para terabits', () => {
|
|
128
|
+
const result = converter.convert(1, 'terabyte', 'terabit');
|
|
129
|
+
expect(result).toBe(8);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe('Conversões de unidades grandes', () => {
|
|
133
|
+
it('deve converter petabytes para terabytes', () => {
|
|
134
|
+
const result = converter.convert(1, 'petabyte', 'terabyte');
|
|
135
|
+
expect(result).toBe(1000);
|
|
136
|
+
});
|
|
137
|
+
it('deve converter exabytes para petabytes', () => {
|
|
138
|
+
const result = converter.convert(1, 'exabyte', 'petabyte');
|
|
139
|
+
expect(result).toBe(1000);
|
|
140
|
+
});
|
|
141
|
+
it('deve converter zetabytes para exabytes', () => {
|
|
142
|
+
const result = converter.convert(1, 'zetabyte', 'exabyte');
|
|
143
|
+
expect(result).toBe(1000);
|
|
144
|
+
});
|
|
145
|
+
it('deve converter yottabytes para zetabytes', () => {
|
|
146
|
+
const result = converter.convert(1, 'yottabyte', 'zetabyte');
|
|
147
|
+
expect(result).toBe(1000);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
describe('Conversões extremas', () => {
|
|
151
|
+
it('deve converter bits para yottabytes', () => {
|
|
152
|
+
const result = converter.convert(8000000000000000000000000, 'bit', 'yottabyte');
|
|
153
|
+
expect(result).toBe(1);
|
|
154
|
+
});
|
|
155
|
+
it('deve converter yottabytes para bits', () => {
|
|
156
|
+
const result = converter.convert(1, 'yottabyte', 'bit');
|
|
157
|
+
expect(result).toBe(8000000000000000000000000);
|
|
158
|
+
});
|
|
159
|
+
it('deve converter yottabits para bits', () => {
|
|
160
|
+
const result = converter.convert(1, 'yottabit', 'bit');
|
|
161
|
+
expect(result).toBe(1000000000000000000000000);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('Tratamento de erros', () => {
|
|
165
|
+
it('deve lançar erro para unidade de origem não encontrada', () => {
|
|
166
|
+
expect(() => {
|
|
167
|
+
converter.convert(100, 'unidade_inexistente', 'byte');
|
|
168
|
+
}).toThrow('Unidades não encontradas');
|
|
169
|
+
});
|
|
170
|
+
it('deve lançar erro para unidade de destino não encontrada', () => {
|
|
171
|
+
expect(() => {
|
|
172
|
+
converter.convert(100, 'byte', 'unidade_inexistente');
|
|
173
|
+
}).toThrow('Unidades não encontradas');
|
|
174
|
+
});
|
|
175
|
+
it('deve lançar erro para ambas as unidades não encontradas', () => {
|
|
176
|
+
expect(() => {
|
|
177
|
+
converter.convert(100, 'unidade1', 'unidade2');
|
|
178
|
+
}).toThrow('Unidades não encontradas');
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('Valores decimais', () => {
|
|
182
|
+
it('deve converter valores decimais corretamente', () => {
|
|
183
|
+
const result = converter.convert(0.5, 'kilobyte', 'byte');
|
|
184
|
+
expect(result).toBe(500);
|
|
185
|
+
});
|
|
186
|
+
it('deve converter para valores decimais corretamente', () => {
|
|
187
|
+
const result = converter.convert(500, 'byte', 'kilobyte');
|
|
188
|
+
expect(result).toBe(0.5);
|
|
189
|
+
});
|
|
190
|
+
it('deve manter precisão em conversões decimais', () => {
|
|
191
|
+
const result = converter.convert(1.5, 'megabyte', 'kilobyte');
|
|
192
|
+
expect(result).toBe(1500);
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
describe('Verificação de fatores de conversão', () => {
|
|
196
|
+
it('deve ter fatores de conversão corretos para bits', () => {
|
|
197
|
+
expect(converter.getUnitById('bit')?.conversionFactor).toBe(1);
|
|
198
|
+
expect(converter.getUnitById('kilobit')?.conversionFactor).toBe(1000);
|
|
199
|
+
expect(converter.getUnitById('megabit')?.conversionFactor).toBe(1000000);
|
|
200
|
+
expect(converter.getUnitById('gigabit')?.conversionFactor).toBe(1000000000);
|
|
201
|
+
});
|
|
202
|
+
it('deve ter fatores de conversão corretos para bytes', () => {
|
|
203
|
+
expect(converter.getUnitById('byte')?.conversionFactor).toBe(8);
|
|
204
|
+
expect(converter.getUnitById('kilobyte')?.conversionFactor).toBe(8000);
|
|
205
|
+
expect(converter.getUnitById('megabyte')?.conversionFactor).toBe(8000000);
|
|
206
|
+
expect(converter.getUnitById('gigabyte')?.conversionFactor).toBe(8000000000);
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LengthConverter = void 0;
|
|
4
|
+
const converter_base_1 = require("../../converter-base");
|
|
5
|
+
class LengthConverter extends converter_base_1.ConverterBaseService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super([
|
|
8
|
+
// Base: Joule
|
|
9
|
+
{ id: 'joule', name: 'Joule', symbol: 'J', conversionFactor: 1, isBaseUnit: true },
|
|
10
|
+
{ id: 'quilojoule', name: 'Quilojoule', symbol: 'kJ', conversionFactor: 1000, isBaseUnit: false },
|
|
11
|
+
{ id: 'eletron-volt', name: 'Elétron-volt', symbol: 'eV', conversionFactor: 1.602176634e-19, isBaseUnit: false },
|
|
12
|
+
{ id: 'caloria-termica', name: 'Caloria térmica (cal)', symbol: 'cal', conversionFactor: 4.184, isBaseUnit: false },
|
|
13
|
+
{ id: 'caloria-alimentar', name: 'Caloria alimentar (kcal)', symbol: 'kcal', conversionFactor: 4184, isBaseUnit: false },
|
|
14
|
+
{ id: 'libra-pe', name: 'Libra-pé', symbol: 'lbf·ft', conversionFactor: 1.3558179483314, isBaseUnit: false },
|
|
15
|
+
{ id: 'btu', name: 'Unidade Térmica Britânica (BTU)', symbol: 'BTU', conversionFactor: 1055.05585262, isBaseUnit: false },
|
|
16
|
+
// { id: 'quilowatt-hora', name: 'Quilowatt-hora', symbol: 'kWh', conversionFactor: 3.6e6, isBaseUnit: false }
|
|
17
|
+
]);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.LengthConverter = LengthConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,154 @@
|
|
|
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('energy');
|
|
6
|
+
describe('Conversão completa entre unidades de energia', () => {
|
|
7
|
+
test('1 joule → joule ≈ 1.0', () => {
|
|
8
|
+
expect(converter.convert(1, 'joule', 'joule')).toBeCloseTo(1.0, 10);
|
|
9
|
+
});
|
|
10
|
+
test('1 joule → quilojoule ≈ 0.001', () => {
|
|
11
|
+
expect(converter.convert(1, 'joule', 'quilojoule')).toBeCloseTo(0.001, 10);
|
|
12
|
+
});
|
|
13
|
+
test('1 joule → eletron-volt ≈ 6.241509074460763e+18', () => {
|
|
14
|
+
expect(converter.convert(1, 'joule', 'eletron-volt')).toBeCloseTo(6.241509074460763e+18, 10);
|
|
15
|
+
});
|
|
16
|
+
test('1 joule → caloria-termica ≈ 0.239005736137667', () => {
|
|
17
|
+
expect(converter.convert(1, 'joule', 'caloria-termica')).toBeCloseTo(0.239005736137667, 10);
|
|
18
|
+
});
|
|
19
|
+
test('1 joule → caloria-alimentar ≈ 0.000239005736138', () => {
|
|
20
|
+
expect(converter.convert(1, 'joule', 'caloria-alimentar')).toBeCloseTo(0.000239005736138, 10);
|
|
21
|
+
});
|
|
22
|
+
test('1 joule → libra-pe ≈ 0.737562149277266', () => {
|
|
23
|
+
expect(converter.convert(1, 'joule', 'libra-pe')).toBeCloseTo(0.737562149277266, 10);
|
|
24
|
+
});
|
|
25
|
+
test('1 joule → btu ≈ 0.000947817120313', () => {
|
|
26
|
+
expect(converter.convert(1, 'joule', 'btu')).toBeCloseTo(0.000947817120313, 10);
|
|
27
|
+
});
|
|
28
|
+
test('1 quilojoule → joule ≈ 1000.0', () => {
|
|
29
|
+
expect(converter.convert(1, 'quilojoule', 'joule')).toBeCloseTo(1000.0, 10);
|
|
30
|
+
});
|
|
31
|
+
test('1 quilojoule → quilojoule ≈ 1.0', () => {
|
|
32
|
+
expect(converter.convert(1, 'quilojoule', 'quilojoule')).toBeCloseTo(1.0, 10);
|
|
33
|
+
});
|
|
34
|
+
test('1 quilojoule → eletron-volt ≈ 6.241509074460763e+21', () => {
|
|
35
|
+
expect(converter.convert(1, 'quilojoule', 'eletron-volt')).toBeCloseTo(6.241509074460763e+21, 10);
|
|
36
|
+
});
|
|
37
|
+
test('1 quilojoule → caloria-termica ≈ 239.0057361376673', () => {
|
|
38
|
+
expect(converter.convert(1, 'quilojoule', 'caloria-termica')).toBeCloseTo(239.0057361376673, 10);
|
|
39
|
+
});
|
|
40
|
+
test('1 quilojoule → caloria-alimentar ≈ 0.239005736137667', () => {
|
|
41
|
+
expect(converter.convert(1, 'quilojoule', 'caloria-alimentar')).toBeCloseTo(0.239005736137667, 10);
|
|
42
|
+
});
|
|
43
|
+
test('1 quilojoule → libra-pe ≈ 737.5621492772657', () => {
|
|
44
|
+
expect(converter.convert(1, 'quilojoule', 'libra-pe')).toBeCloseTo(737.5621492772657, 10);
|
|
45
|
+
});
|
|
46
|
+
test('1 quilojoule → btu ≈ 0.947817120313317', () => {
|
|
47
|
+
expect(converter.convert(1, 'quilojoule', 'btu')).toBeCloseTo(0.947817120313317, 10);
|
|
48
|
+
});
|
|
49
|
+
test('1 eletron-volt → joule ≈ 0.0', () => {
|
|
50
|
+
expect(converter.convert(1, 'eletron-volt', 'joule')).toBeCloseTo(0.0, 10);
|
|
51
|
+
});
|
|
52
|
+
test('1 eletron-volt → quilojoule ≈ 0.0', () => {
|
|
53
|
+
expect(converter.convert(1, 'eletron-volt', 'quilojoule')).toBeCloseTo(0.0, 10);
|
|
54
|
+
});
|
|
55
|
+
test('1 eletron-volt → eletron-volt ≈ 1.0', () => {
|
|
56
|
+
expect(converter.convert(1, 'eletron-volt', 'eletron-volt')).toBeCloseTo(1.0, 10);
|
|
57
|
+
});
|
|
58
|
+
test('1 eletron-volt → caloria-termica ≈ 0.0', () => {
|
|
59
|
+
expect(converter.convert(1, 'eletron-volt', 'caloria-termica')).toBeCloseTo(0.0, 10);
|
|
60
|
+
});
|
|
61
|
+
test('1 eletron-volt → caloria-alimentar ≈ 0.0', () => {
|
|
62
|
+
expect(converter.convert(1, 'eletron-volt', 'caloria-alimentar')).toBeCloseTo(0.0, 10);
|
|
63
|
+
});
|
|
64
|
+
test('1 eletron-volt → libra-pe ≈ 0.0', () => {
|
|
65
|
+
expect(converter.convert(1, 'eletron-volt', 'libra-pe')).toBeCloseTo(0.0, 10);
|
|
66
|
+
});
|
|
67
|
+
test('1 eletron-volt → btu ≈ 0.0', () => {
|
|
68
|
+
expect(converter.convert(1, 'eletron-volt', 'btu')).toBeCloseTo(0.0, 10);
|
|
69
|
+
});
|
|
70
|
+
test('1 caloria-termica → joule ≈ 4.184', () => {
|
|
71
|
+
expect(converter.convert(1, 'caloria-termica', 'joule')).toBeCloseTo(4.184, 10);
|
|
72
|
+
});
|
|
73
|
+
test('1 caloria-termica → quilojoule ≈ 0.004184', () => {
|
|
74
|
+
expect(converter.convert(1, 'caloria-termica', 'quilojoule')).toBeCloseTo(0.004184, 10);
|
|
75
|
+
});
|
|
76
|
+
test('1 caloria-termica → eletron-volt ≈ 2.6114473967543833e+19', () => {
|
|
77
|
+
expect(converter.convert(1, 'caloria-termica', 'eletron-volt')).toBeCloseTo(2.6114473967543833e+19, 10);
|
|
78
|
+
});
|
|
79
|
+
test('1 caloria-termica → caloria-termica ≈ 1.0', () => {
|
|
80
|
+
expect(converter.convert(1, 'caloria-termica', 'caloria-termica')).toBeCloseTo(1.0, 10);
|
|
81
|
+
});
|
|
82
|
+
test('1 caloria-termica → caloria-alimentar ≈ 0.001', () => {
|
|
83
|
+
expect(converter.convert(1, 'caloria-termica', 'caloria-alimentar')).toBeCloseTo(0.001, 10);
|
|
84
|
+
});
|
|
85
|
+
test('1 caloria-termica → libra-pe ≈ 3.08596003257608', () => {
|
|
86
|
+
expect(converter.convert(1, 'caloria-termica', 'libra-pe')).toBeCloseTo(3.08596003257608, 10);
|
|
87
|
+
});
|
|
88
|
+
test('1 caloria-termica → btu ≈ 0.003965666831391', () => {
|
|
89
|
+
expect(converter.convert(1, 'caloria-termica', 'btu')).toBeCloseTo(0.003965666831391, 10);
|
|
90
|
+
});
|
|
91
|
+
test('1 caloria-alimentar → joule ≈ 4184.0', () => {
|
|
92
|
+
expect(converter.convert(1, 'caloria-alimentar', 'joule')).toBeCloseTo(4184.0, 10);
|
|
93
|
+
});
|
|
94
|
+
test('1 caloria-alimentar → quilojoule ≈ 4.184', () => {
|
|
95
|
+
expect(converter.convert(1, 'caloria-alimentar', 'quilojoule')).toBeCloseTo(4.184, 10);
|
|
96
|
+
});
|
|
97
|
+
test('1 caloria-alimentar → eletron-volt ≈ 2.6114473967543833e+22', () => {
|
|
98
|
+
expect(converter.convert(1, 'caloria-alimentar', 'eletron-volt')).toBeCloseTo(2.6114473967543833e+22, 10);
|
|
99
|
+
});
|
|
100
|
+
test('1 caloria-alimentar → caloria-termica ≈ 1000.0', () => {
|
|
101
|
+
expect(converter.convert(1, 'caloria-alimentar', 'caloria-termica')).toBeCloseTo(1000.0, 10);
|
|
102
|
+
});
|
|
103
|
+
test('1 caloria-alimentar → caloria-alimentar ≈ 1.0', () => {
|
|
104
|
+
expect(converter.convert(1, 'caloria-alimentar', 'caloria-alimentar')).toBeCloseTo(1.0, 10);
|
|
105
|
+
});
|
|
106
|
+
test('1 caloria-alimentar → libra-pe ≈ 3085.9600325760794', () => {
|
|
107
|
+
expect(converter.convert(1, 'caloria-alimentar', 'libra-pe')).toBeCloseTo(3085.9600325760794, 10);
|
|
108
|
+
});
|
|
109
|
+
test('1 caloria-alimentar → btu ≈ 3.965666831390919', () => {
|
|
110
|
+
expect(converter.convert(1, 'caloria-alimentar', 'btu')).toBeCloseTo(3.965666831390919, 10);
|
|
111
|
+
});
|
|
112
|
+
test('1 libra-pe → joule ≈ 1.3558179483314', () => {
|
|
113
|
+
expect(converter.convert(1, 'libra-pe', 'joule')).toBeCloseTo(1.3558179483314, 10);
|
|
114
|
+
});
|
|
115
|
+
test('1 libra-pe → quilojoule ≈ 0.001355817948331', () => {
|
|
116
|
+
expect(converter.convert(1, 'libra-pe', 'quilojoule')).toBeCloseTo(0.001355817948331, 10);
|
|
117
|
+
});
|
|
118
|
+
test('1 libra-pe → eletron-volt ≈ 8.462350027827206e+18', () => {
|
|
119
|
+
expect(converter.convert(1, 'libra-pe', 'eletron-volt')).toBeCloseTo(8.462350027827206e+18, 10);
|
|
120
|
+
});
|
|
121
|
+
test('1 libra-pe → caloria-termica ≈ 0.324048266809608', () => {
|
|
122
|
+
expect(converter.convert(1, 'libra-pe', 'caloria-termica')).toBeCloseTo(0.324048266809608, 10);
|
|
123
|
+
});
|
|
124
|
+
test('1 libra-pe → caloria-alimentar ≈ 0.00032404826681', () => {
|
|
125
|
+
expect(converter.convert(1, 'libra-pe', 'caloria-alimentar')).toBeCloseTo(0.00032404826681, 10);
|
|
126
|
+
});
|
|
127
|
+
test('1 libra-pe → libra-pe ≈ 1.0', () => {
|
|
128
|
+
expect(converter.convert(1, 'libra-pe', 'libra-pe')).toBeCloseTo(1.0, 10);
|
|
129
|
+
});
|
|
130
|
+
test('1 libra-pe → btu ≈ 0.001285067463457', () => {
|
|
131
|
+
expect(converter.convert(1, 'libra-pe', 'btu')).toBeCloseTo(0.001285067463457, 10);
|
|
132
|
+
});
|
|
133
|
+
test('1 btu → joule ≈ 1055.05585262', () => {
|
|
134
|
+
expect(converter.convert(1, 'btu', 'joule')).toBeCloseTo(1055.05585262, 10);
|
|
135
|
+
});
|
|
136
|
+
test('1 btu → quilojoule ≈ 1.05505585262', () => {
|
|
137
|
+
expect(converter.convert(1, 'btu', 'quilojoule')).toBeCloseTo(1.05505585262, 10);
|
|
138
|
+
});
|
|
139
|
+
test('1 btu → eletron-volt ≈ 6.585140678190667e+21', () => {
|
|
140
|
+
expect(converter.convert(1, 'btu', 'eletron-volt')).toBeCloseTo(6.585140678190667e+21, 10);
|
|
141
|
+
});
|
|
142
|
+
test('1 btu → caloria-termica ≈ 252.1644007217973', () => {
|
|
143
|
+
expect(converter.convert(1, 'btu', 'caloria-termica')).toBeCloseTo(252.1644007217973, 10);
|
|
144
|
+
});
|
|
145
|
+
test('1 btu → caloria-alimentar ≈ 0.252164400721797', () => {
|
|
146
|
+
expect(converter.convert(1, 'btu', 'caloria-alimentar')).toBeCloseTo(0.252164400721797, 10);
|
|
147
|
+
});
|
|
148
|
+
test('1 btu → libra-pe ≈ 778.1692622659652', () => {
|
|
149
|
+
expect(converter.convert(1, 'btu', 'libra-pe')).toBeCloseTo(778.1692622659652, 10);
|
|
150
|
+
});
|
|
151
|
+
test('1 btu → btu ≈ 1.0', () => {
|
|
152
|
+
expect(converter.convert(1, 'btu', 'btu')).toBeCloseTo(1.0, 10);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LengthConverter = void 0;
|
|
4
|
+
const converter_base_1 = require("../../converter-base");
|
|
5
|
+
class LengthConverter extends converter_base_1.ConverterBaseService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super([
|
|
8
|
+
// Base: Metro
|
|
9
|
+
{ id: 'angstrom', name: 'Ångström', symbol: 'Å', conversionFactor: 1e-10, isBaseUnit: false },
|
|
10
|
+
{ id: 'micron', name: 'Mícron', symbol: 'µ', conversionFactor: 1e-6, isBaseUnit: false },
|
|
11
|
+
{ id: 'picometro', name: 'Picômetro', symbol: 'pm', conversionFactor: 1e-12, isBaseUnit: false },
|
|
12
|
+
{ id: 'nanometro', name: 'Nanômetro', symbol: 'nm', conversionFactor: 1e-9, isBaseUnit: false },
|
|
13
|
+
{ id: 'micrometro', name: 'Micrômetro', symbol: 'µm', conversionFactor: 1e-6, isBaseUnit: false },
|
|
14
|
+
{ id: 'milimetro', name: 'Milímetro', symbol: 'mm', conversionFactor: 1e-3, isBaseUnit: false },
|
|
15
|
+
{ id: 'centimetro', name: 'Centímetro', symbol: 'cm', conversionFactor: 1e-2, isBaseUnit: false },
|
|
16
|
+
{ id: 'decimetro', name: 'Decímetro', symbol: 'dm', conversionFactor: 1e-1, isBaseUnit: false },
|
|
17
|
+
{ id: 'metro', name: 'Metro', symbol: 'm', conversionFactor: 1, isBaseUnit: true },
|
|
18
|
+
{ id: 'quilometro', name: 'Quilômetro', symbol: 'km', conversionFactor: 1e3, isBaseUnit: false },
|
|
19
|
+
{ id: 'polegada', name: 'Polegada', symbol: 'in', conversionFactor: 0.0254, isBaseUnit: false },
|
|
20
|
+
{ id: 'pes', name: 'Pé', symbol: 'ft', conversionFactor: 0.3048, isBaseUnit: false },
|
|
21
|
+
{ id: 'jarda', name: 'Jarda', symbol: 'yd', conversionFactor: 0.9144, isBaseUnit: false },
|
|
22
|
+
{ id: 'milha', name: 'Milha terrestre', symbol: 'mi', conversionFactor: 1609.344, isBaseUnit: false },
|
|
23
|
+
{ id: 'milha-nautica', name: 'Milha náutica', symbol: 'nmi', conversionFactor: 1852, isBaseUnit: false },
|
|
24
|
+
{ id: 'parsec', name: 'Parsec', symbol: 'pc', conversionFactor: 3.085677581491367e16, isBaseUnit: false },
|
|
25
|
+
{ id: 'distancia-lunar', name: 'Distância lunar média', symbol: 'LD', conversionFactor: 384400000, isBaseUnit: false },
|
|
26
|
+
{ id: 'unidade-astronomica', name: 'Unidade astronômica', symbol: 'au', conversionFactor: 1.495978707e11, isBaseUnit: false },
|
|
27
|
+
{ id: 'ano-luz', name: 'Ano-luz', symbol: 'ly', conversionFactor: 9.4607304725808e15, isBaseUnit: false },
|
|
28
|
+
]);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.LengthConverter = LengthConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,186 @@
|
|
|
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('length');
|
|
6
|
+
describe('Conversão completa entre unidades de comprimento', () => {
|
|
7
|
+
// Testes de conversão para a mesma unidade
|
|
8
|
+
describe('Conversões para a mesma unidade', () => {
|
|
9
|
+
test('1 metro → metro ≈ 1.0', () => {
|
|
10
|
+
expect(converter.convert(1, 'metro', 'metro')).toBeCloseTo(1.0, 10);
|
|
11
|
+
});
|
|
12
|
+
test('5 quilômetro → quilômetro ≈ 5.0', () => {
|
|
13
|
+
expect(converter.convert(5, 'quilometro', 'quilometro')).toBeCloseTo(5.0, 10);
|
|
14
|
+
});
|
|
15
|
+
test('100 polegada → polegada ≈ 100.0', () => {
|
|
16
|
+
expect(converter.convert(100, 'polegada', 'polegada')).toBeCloseTo(100.0, 10);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
// Testes de conversão métrica básica
|
|
20
|
+
describe('Conversões métricas básicas', () => {
|
|
21
|
+
test('1000 milímetro → metro ≈ 1.0', () => {
|
|
22
|
+
expect(converter.convert(1000, 'milimetro', 'metro')).toBeCloseTo(1.0, 10);
|
|
23
|
+
});
|
|
24
|
+
test('100 centímetro → metro ≈ 1.0', () => {
|
|
25
|
+
expect(converter.convert(100, 'centimetro', 'metro')).toBeCloseTo(1.0, 10);
|
|
26
|
+
});
|
|
27
|
+
test('10 decímetro → metro ≈ 1.0', () => {
|
|
28
|
+
expect(converter.convert(10, 'decimetro', 'metro')).toBeCloseTo(1.0, 10);
|
|
29
|
+
});
|
|
30
|
+
test('1 quilômetro → metro ≈ 1000.0', () => {
|
|
31
|
+
expect(converter.convert(1, 'quilometro', 'metro')).toBeCloseTo(1000.0, 10);
|
|
32
|
+
});
|
|
33
|
+
test('1 metro → milímetro ≈ 1000.0', () => {
|
|
34
|
+
expect(converter.convert(1, 'metro', 'milimetro')).toBeCloseTo(1000.0, 10);
|
|
35
|
+
});
|
|
36
|
+
test('1 metro → centímetro ≈ 100.0', () => {
|
|
37
|
+
expect(converter.convert(1, 'metro', 'centimetro')).toBeCloseTo(100.0, 10);
|
|
38
|
+
});
|
|
39
|
+
test('1 metro → quilômetro ≈ 0.001', () => {
|
|
40
|
+
expect(converter.convert(1, 'metro', 'quilometro')).toBeCloseTo(0.001, 10);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
// Testes de unidades muito pequenas
|
|
44
|
+
describe('Conversões de unidades muito pequenas', () => {
|
|
45
|
+
test('1 metro → angstrom ≈ 1e10', () => {
|
|
46
|
+
expect(converter.convert(1, 'metro', 'angstrom')).toBeCloseTo(1e10, 5);
|
|
47
|
+
});
|
|
48
|
+
test('1 metro → picometro ≈ 1e12', () => {
|
|
49
|
+
expect(converter.convert(1, 'metro', 'picometro')).toBeCloseTo(1e12, 5);
|
|
50
|
+
});
|
|
51
|
+
test('1 metro → nanometro ≈ 1e9', () => {
|
|
52
|
+
expect(converter.convert(1, 'metro', 'nanometro')).toBeCloseTo(1e9, 5);
|
|
53
|
+
});
|
|
54
|
+
test('1 metro → micrometro ≈ 1e6', () => {
|
|
55
|
+
expect(converter.convert(1, 'metro', 'micrometro')).toBeCloseTo(1e6, 5);
|
|
56
|
+
});
|
|
57
|
+
test('1 metro → micron ≈ 1e6', () => {
|
|
58
|
+
expect(converter.convert(1, 'metro', 'micron')).toBeCloseTo(1e6, 5);
|
|
59
|
+
});
|
|
60
|
+
test('1000 nanometro → micrometro ≈ 1.0', () => {
|
|
61
|
+
expect(converter.convert(1000, 'nanometro', 'micrometro')).toBeCloseTo(1.0, 10);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
// Testes de unidades imperiais
|
|
65
|
+
describe('Conversões de unidades imperiais', () => {
|
|
66
|
+
test('1 polegada → centímetro ≈ 2.54', () => {
|
|
67
|
+
expect(converter.convert(1, 'polegada', 'centimetro')).toBeCloseTo(2.54, 10);
|
|
68
|
+
});
|
|
69
|
+
test('1 pé → metro ≈ 0.3048', () => {
|
|
70
|
+
expect(converter.convert(1, 'pes', 'metro')).toBeCloseTo(0.3048, 10);
|
|
71
|
+
});
|
|
72
|
+
test('1 jarda → metro ≈ 0.9144', () => {
|
|
73
|
+
expect(converter.convert(1, 'jarda', 'metro')).toBeCloseTo(0.9144, 10);
|
|
74
|
+
});
|
|
75
|
+
test('1 milha → quilômetro ≈ 1.609344', () => {
|
|
76
|
+
expect(converter.convert(1, 'milha', 'quilometro')).toBeCloseTo(1.609344, 6);
|
|
77
|
+
});
|
|
78
|
+
test('12 polegada → pé ≈ 1.0', () => {
|
|
79
|
+
expect(converter.convert(12, 'polegada', 'pes')).toBeCloseTo(1.0, 10);
|
|
80
|
+
});
|
|
81
|
+
test('3 pé → jarda ≈ 1.0', () => {
|
|
82
|
+
expect(converter.convert(3, 'pes', 'jarda')).toBeCloseTo(1.0, 10);
|
|
83
|
+
});
|
|
84
|
+
test('1760 jarda → milha ≈ 1.0', () => {
|
|
85
|
+
expect(converter.convert(1760, 'jarda', 'milha')).toBeCloseTo(1.0, 8);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
// Testes de unidades náuticas e astronômicas
|
|
89
|
+
describe('Conversões de unidades especiais', () => {
|
|
90
|
+
test('1 milha-nautica → metro ≈ 1852.0', () => {
|
|
91
|
+
expect(converter.convert(1, 'milha-nautica', 'metro')).toBeCloseTo(1852.0, 10);
|
|
92
|
+
});
|
|
93
|
+
test('1 unidade-astronomica → quilômetro ≈ 149597870.7', () => {
|
|
94
|
+
expect(converter.convert(1, 'unidade-astronomica', 'quilometro')).toBeCloseTo(149597870.7, 1);
|
|
95
|
+
});
|
|
96
|
+
test('1 ano-luz → unidade-astronomica ≈ 63241.08', () => {
|
|
97
|
+
expect(converter.convert(1, 'ano-luz', 'unidade-astronomica')).toBeCloseTo(63241.08, 0);
|
|
98
|
+
});
|
|
99
|
+
test('1 parsec → ano-luz ≈ 3.2616', () => {
|
|
100
|
+
expect(converter.convert(1, 'parsec', 'ano-luz')).toBeCloseTo(3.2616, 3);
|
|
101
|
+
});
|
|
102
|
+
test('1 distancia-lunar → quilômetro ≈ 384400.0', () => {
|
|
103
|
+
expect(converter.convert(1, 'distancia-lunar', 'quilometro')).toBeCloseTo(384400.0, 1);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
// Testes com valores decimais
|
|
107
|
+
describe('Conversões com valores decimais', () => {
|
|
108
|
+
test('0.5 metro → centímetro ≈ 50.0', () => {
|
|
109
|
+
expect(converter.convert(0.5, 'metro', 'centimetro')).toBeCloseTo(50.0, 10);
|
|
110
|
+
});
|
|
111
|
+
test('2.5 quilômetro → metro ≈ 2500.0', () => {
|
|
112
|
+
expect(converter.convert(2.5, 'quilometro', 'metro')).toBeCloseTo(2500.0, 10);
|
|
113
|
+
});
|
|
114
|
+
test('0.1 polegada → milímetro ≈ 2.54', () => {
|
|
115
|
+
expect(converter.convert(0.1, 'polegada', 'milimetro')).toBeCloseTo(2.54, 10);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
// Testes com valores grandes
|
|
119
|
+
describe('Conversões com valores grandes', () => {
|
|
120
|
+
test('1000000 metro → quilômetro ≈ 1000.0', () => {
|
|
121
|
+
expect(converter.convert(1000000, 'metro', 'quilometro')).toBeCloseTo(1000.0, 10);
|
|
122
|
+
});
|
|
123
|
+
test('100 quilômetro → milha ≈ 62.137', () => {
|
|
124
|
+
expect(converter.convert(100, 'quilometro', 'milha')).toBeCloseTo(62.137, 2);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
// Testes de casos extremos
|
|
128
|
+
describe('Casos extremos', () => {
|
|
129
|
+
test('0 metro → qualquer unidade ≈ 0.0', () => {
|
|
130
|
+
expect(converter.convert(0, 'metro', 'quilometro')).toBeCloseTo(0.0, 10);
|
|
131
|
+
expect(converter.convert(0, 'metro', 'centimetro')).toBeCloseTo(0.0, 10);
|
|
132
|
+
expect(converter.convert(0, 'metro', 'polegada')).toBeCloseTo(0.0, 10);
|
|
133
|
+
});
|
|
134
|
+
test('Conversões muito pequenas', () => {
|
|
135
|
+
expect(converter.convert(1, 'angstrom', 'metro')).toBeCloseTo(1e-10, 15);
|
|
136
|
+
expect(converter.convert(1, 'picometro', 'metro')).toBeCloseTo(1e-12, 15);
|
|
137
|
+
});
|
|
138
|
+
test('Conversões astronômicas grandes', () => {
|
|
139
|
+
expect(converter.convert(1, 'parsec', 'metro')).toBeCloseTo(3.085677581491367e16, 10);
|
|
140
|
+
expect(converter.convert(1, 'ano-luz', 'metro')).toBeCloseTo(9.4607304725808e15, 10);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
// Testes de conversões bidirecionais
|
|
144
|
+
describe('Conversões bidirecionais', () => {
|
|
145
|
+
test('Conversão bidirecional: metro ↔ polegada', () => {
|
|
146
|
+
const metros = 1;
|
|
147
|
+
const polegadas = converter.convert(metros, 'metro', 'polegada');
|
|
148
|
+
const metrosNovamente = converter.convert(polegadas, 'polegada', 'metro');
|
|
149
|
+
expect(metrosNovamente).toBeCloseTo(metros, 10);
|
|
150
|
+
});
|
|
151
|
+
test('Conversão bidirecional: quilômetro ↔ milha', () => {
|
|
152
|
+
const quilometros = 10;
|
|
153
|
+
const milhas = converter.convert(quilometros, 'quilometro', 'milha');
|
|
154
|
+
const quilometrosNovamente = converter.convert(milhas, 'milha', 'quilometro');
|
|
155
|
+
expect(quilometrosNovamente).toBeCloseTo(quilometros, 8);
|
|
156
|
+
});
|
|
157
|
+
test('Conversão bidirecional: nanometro ↔ micrometro', () => {
|
|
158
|
+
const nanometros = 5000;
|
|
159
|
+
const micrometros = converter.convert(nanometros, 'nanometro', 'micrometro');
|
|
160
|
+
const nanometrosNovamente = converter.convert(micrometros, 'micrometro', 'nanometro');
|
|
161
|
+
expect(nanometrosNovamente).toBeCloseTo(nanometros, 10);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
// Testes de precisão para conversões complexas
|
|
165
|
+
describe('Testes de precisão', () => {
|
|
166
|
+
test('Conversão de alta precisão: angstrom → parsec', () => {
|
|
167
|
+
const angstroms = 1e20;
|
|
168
|
+
const parsecs = converter.convert(angstroms, 'angstrom', 'parsec');
|
|
169
|
+
expect(parsecs).toBeCloseTo(3.2408e-7, 10);
|
|
170
|
+
});
|
|
171
|
+
test('Múltiplas conversões em cadeia mantêm precisão', () => {
|
|
172
|
+
const valorInicial = 100;
|
|
173
|
+
let resultado = valorInicial;
|
|
174
|
+
// metro → km → milha → jarda → pé → polegada → cm → mm → metro
|
|
175
|
+
resultado = converter.convert(resultado, 'metro', 'quilometro');
|
|
176
|
+
resultado = converter.convert(resultado, 'quilometro', 'milha');
|
|
177
|
+
resultado = converter.convert(resultado, 'milha', 'jarda');
|
|
178
|
+
resultado = converter.convert(resultado, 'jarda', 'pes');
|
|
179
|
+
resultado = converter.convert(resultado, 'pes', 'polegada');
|
|
180
|
+
resultado = converter.convert(resultado, 'polegada', 'centimetro');
|
|
181
|
+
resultado = converter.convert(resultado, 'centimetro', 'milimetro');
|
|
182
|
+
resultado = converter.convert(resultado, 'milimetro', 'metro');
|
|
183
|
+
expect(resultado).toBeCloseTo(valorInicial, 6);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PowerConverter = void 0;
|
|
4
|
+
const converter_base_1 = require("../../converter-base");
|
|
5
|
+
class PowerConverter extends converter_base_1.ConverterBaseService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super([
|
|
8
|
+
// Base: Watt
|
|
9
|
+
{ id: 'watt', name: 'Watt', symbol: 'W', conversionFactor: 1, isBaseUnit: true },
|
|
10
|
+
{ id: 'quilowatt', name: 'Quilowatt', symbol: 'kW', conversionFactor: 1000, isBaseUnit: false },
|
|
11
|
+
{ id: 'cavalo-vapor-eua', name: 'Cavalo-vapor (EUA)', symbol: 'hp (EUA)', conversionFactor: 745.69987158227022, isBaseUnit: false },
|
|
12
|
+
{ id: 'libra-pe-por-minuto', name: 'Libra-pé por minuto', symbol: 'lbf·ft/min', conversionFactor: 0.0225969658, isBaseUnit: false },
|
|
13
|
+
{ id: 'btu-por-minuto', name: 'BTU por minuto', symbol: 'BTU/min', conversionFactor: 17.5842666667, isBaseUnit: false },
|
|
14
|
+
]);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.PowerConverter = PowerConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|