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,518 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const textFormatConverter_converter_factory_1 = require("../../textFormatConverter.converter.factory");
|
|
4
|
+
describe('MorseFormatConverter', () => {
|
|
5
|
+
let factory;
|
|
6
|
+
let converter;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
factory = new textFormatConverter_converter_factory_1.TextFormatConverterFactory();
|
|
9
|
+
converter = factory.createService('morse');
|
|
10
|
+
});
|
|
11
|
+
describe('fromText', () => {
|
|
12
|
+
describe('Dado uma entrada válida', () => {
|
|
13
|
+
it('Deve converter letra A maiúscula para código Morse', () => {
|
|
14
|
+
// Arrange
|
|
15
|
+
const entrada = 'A';
|
|
16
|
+
const resultadoEsperado = '.-';
|
|
17
|
+
// Act
|
|
18
|
+
const resultado = converter.fromText(entrada);
|
|
19
|
+
// Assert
|
|
20
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
21
|
+
});
|
|
22
|
+
it('Deve converter letra B maiúscula para código Morse', () => {
|
|
23
|
+
// Arrange
|
|
24
|
+
const entrada = 'B';
|
|
25
|
+
const resultadoEsperado = '-...';
|
|
26
|
+
// Act
|
|
27
|
+
const resultado = converter.fromText(entrada);
|
|
28
|
+
// Assert
|
|
29
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
30
|
+
});
|
|
31
|
+
it('Deve converter letra S maiúscula para código Morse', () => {
|
|
32
|
+
// Arrange
|
|
33
|
+
const entrada = 'S';
|
|
34
|
+
const resultadoEsperado = '...';
|
|
35
|
+
// Act
|
|
36
|
+
const resultado = converter.fromText(entrada);
|
|
37
|
+
// Assert
|
|
38
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
39
|
+
});
|
|
40
|
+
it('Deve converter letra O maiúscula para código Morse', () => {
|
|
41
|
+
// Arrange
|
|
42
|
+
const entrada = 'O';
|
|
43
|
+
const resultadoEsperado = '---';
|
|
44
|
+
// Act
|
|
45
|
+
const resultado = converter.fromText(entrada);
|
|
46
|
+
// Assert
|
|
47
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
48
|
+
});
|
|
49
|
+
it('Deve converter SOS maiúsculo para código Morse', () => {
|
|
50
|
+
// Arrange
|
|
51
|
+
const entrada = 'SOS';
|
|
52
|
+
const resultadoEsperado = '...---...';
|
|
53
|
+
// Act
|
|
54
|
+
const resultado = converter.fromText(entrada);
|
|
55
|
+
// Assert
|
|
56
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
57
|
+
});
|
|
58
|
+
it('Deve converter HELLO maiúsculo para código Morse', () => {
|
|
59
|
+
// Arrange
|
|
60
|
+
const entrada = 'HELLO';
|
|
61
|
+
const resultadoEsperado = '......-...-..---';
|
|
62
|
+
// Act
|
|
63
|
+
const resultado = converter.fromText(entrada);
|
|
64
|
+
// Assert
|
|
65
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
66
|
+
});
|
|
67
|
+
it('Deve converter letra a minúscula para código Morse', () => {
|
|
68
|
+
// Arrange
|
|
69
|
+
const entrada = 'a';
|
|
70
|
+
const resultadoEsperado = '.-';
|
|
71
|
+
// Act
|
|
72
|
+
const resultado = converter.fromText(entrada);
|
|
73
|
+
// Assert
|
|
74
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
75
|
+
});
|
|
76
|
+
it('Deve converter hello minúsculo para código Morse', () => {
|
|
77
|
+
// Arrange
|
|
78
|
+
const entrada = 'hello';
|
|
79
|
+
const resultadoEsperado = '......-...-..---';
|
|
80
|
+
// Act
|
|
81
|
+
const resultado = converter.fromText(entrada);
|
|
82
|
+
// Assert
|
|
83
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
84
|
+
});
|
|
85
|
+
it('Deve converter número 0 para código Morse', () => {
|
|
86
|
+
// Arrange
|
|
87
|
+
const entrada = '0';
|
|
88
|
+
const resultadoEsperado = '-----';
|
|
89
|
+
// Act
|
|
90
|
+
const resultado = converter.fromText(entrada);
|
|
91
|
+
// Assert
|
|
92
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
93
|
+
});
|
|
94
|
+
it('Deve converter número 1 para código Morse', () => {
|
|
95
|
+
// Arrange
|
|
96
|
+
const entrada = '1';
|
|
97
|
+
const resultadoEsperado = '.----';
|
|
98
|
+
// Act
|
|
99
|
+
const resultado = converter.fromText(entrada);
|
|
100
|
+
// Assert
|
|
101
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
102
|
+
});
|
|
103
|
+
it('Deve converter número 9 para código Morse', () => {
|
|
104
|
+
// Arrange
|
|
105
|
+
const entrada = '9';
|
|
106
|
+
const resultadoEsperado = '----.';
|
|
107
|
+
// Act
|
|
108
|
+
const resultado = converter.fromText(entrada);
|
|
109
|
+
// Assert
|
|
110
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
111
|
+
});
|
|
112
|
+
it('Deve converter sequência 123 para código Morse', () => {
|
|
113
|
+
// Arrange
|
|
114
|
+
const entrada = '123';
|
|
115
|
+
const resultadoEsperado = '.----..---...--';
|
|
116
|
+
// Act
|
|
117
|
+
const resultado = converter.fromText(entrada);
|
|
118
|
+
// Assert
|
|
119
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
120
|
+
});
|
|
121
|
+
it('Deve converter A1 para código Morse', () => {
|
|
122
|
+
// Arrange
|
|
123
|
+
const entrada = 'A1';
|
|
124
|
+
const resultadoEsperado = '.-.----';
|
|
125
|
+
// Act
|
|
126
|
+
const resultado = converter.fromText(entrada);
|
|
127
|
+
// Assert
|
|
128
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
129
|
+
});
|
|
130
|
+
it('Deve converter ABC123 para código Morse', () => {
|
|
131
|
+
// Arrange
|
|
132
|
+
const entrada = 'ABC123';
|
|
133
|
+
const resultadoEsperado = '.--...-.-..----..---...--';
|
|
134
|
+
// Act
|
|
135
|
+
const resultado = converter.fromText(entrada);
|
|
136
|
+
// Assert
|
|
137
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
138
|
+
});
|
|
139
|
+
it('Deve preservar exclamação em A!', () => {
|
|
140
|
+
// Arrange
|
|
141
|
+
const entrada = 'A!';
|
|
142
|
+
const resultadoEsperado = '.-!';
|
|
143
|
+
// Act
|
|
144
|
+
const resultado = converter.fromText(entrada);
|
|
145
|
+
// Assert
|
|
146
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
147
|
+
});
|
|
148
|
+
it('Deve preservar espaço em A B', () => {
|
|
149
|
+
// Arrange
|
|
150
|
+
const entrada = 'A B';
|
|
151
|
+
const resultadoEsperado = '.- -...';
|
|
152
|
+
// Act
|
|
153
|
+
const resultado = converter.fromText(entrada);
|
|
154
|
+
// Assert
|
|
155
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
156
|
+
});
|
|
157
|
+
it('Deve preservar arroba em A@B', () => {
|
|
158
|
+
// Arrange
|
|
159
|
+
const entrada = 'A@B';
|
|
160
|
+
const resultadoEsperado = '.-@-...';
|
|
161
|
+
// Act
|
|
162
|
+
const resultado = converter.fromText(entrada);
|
|
163
|
+
// Assert
|
|
164
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('Dado uma entrada de casos extremos', () => {
|
|
168
|
+
it('Deve retornar string vazia quando entrada for vazia', () => {
|
|
169
|
+
// Arrange
|
|
170
|
+
const entrada = '';
|
|
171
|
+
const resultadoEsperado = '';
|
|
172
|
+
// Act
|
|
173
|
+
const resultado = converter.fromText(entrada);
|
|
174
|
+
// Assert
|
|
175
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
176
|
+
});
|
|
177
|
+
it('Deve preservar símbolos especiais', () => {
|
|
178
|
+
// Arrange
|
|
179
|
+
const entrada = '!@#$%';
|
|
180
|
+
const resultadoEsperado = '!@#$%';
|
|
181
|
+
// Act
|
|
182
|
+
const resultado = converter.fromText(entrada);
|
|
183
|
+
// Assert
|
|
184
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
describe('toText', () => {
|
|
189
|
+
describe('Dado um código Morse válido', () => {
|
|
190
|
+
it('Deve converter código Morse de A para letra', () => {
|
|
191
|
+
// Arrange
|
|
192
|
+
const entrada = '.-';
|
|
193
|
+
const resultadoEsperado = 'A';
|
|
194
|
+
// Act
|
|
195
|
+
const resultado = converter.toText(entrada);
|
|
196
|
+
// Assert
|
|
197
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
198
|
+
});
|
|
199
|
+
it('Deve converter código Morse de B para letra', () => {
|
|
200
|
+
// Arrange
|
|
201
|
+
const entrada = '-...';
|
|
202
|
+
const resultadoEsperado = 'B';
|
|
203
|
+
// Act
|
|
204
|
+
const resultado = converter.toText(entrada);
|
|
205
|
+
// Assert
|
|
206
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
207
|
+
});
|
|
208
|
+
it('Deve converter código Morse de S para letra', () => {
|
|
209
|
+
// Arrange
|
|
210
|
+
const entrada = '...';
|
|
211
|
+
const resultadoEsperado = 'S';
|
|
212
|
+
// Act
|
|
213
|
+
const resultado = converter.toText(entrada);
|
|
214
|
+
// Assert
|
|
215
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
216
|
+
});
|
|
217
|
+
it('Deve converter código Morse de O para letra', () => {
|
|
218
|
+
// Arrange
|
|
219
|
+
const entrada = '---';
|
|
220
|
+
const resultadoEsperado = 'O';
|
|
221
|
+
// Act
|
|
222
|
+
const resultado = converter.toText(entrada);
|
|
223
|
+
// Assert
|
|
224
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
225
|
+
});
|
|
226
|
+
it('Deve converter código Morse de 0 para dígito', () => {
|
|
227
|
+
// Arrange
|
|
228
|
+
const entrada = '-----';
|
|
229
|
+
const resultadoEsperado = '0';
|
|
230
|
+
// Act
|
|
231
|
+
const resultado = converter.toText(entrada);
|
|
232
|
+
// Assert
|
|
233
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
234
|
+
});
|
|
235
|
+
it('Deve converter código Morse de 1 para dígito', () => {
|
|
236
|
+
// Arrange
|
|
237
|
+
const entrada = '.----';
|
|
238
|
+
const resultadoEsperado = '1';
|
|
239
|
+
// Act
|
|
240
|
+
const resultado = converter.toText(entrada);
|
|
241
|
+
// Assert
|
|
242
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
243
|
+
});
|
|
244
|
+
it('Deve converter código Morse de 9 para dígito', () => {
|
|
245
|
+
// Arrange
|
|
246
|
+
const entrada = '----.';
|
|
247
|
+
const resultadoEsperado = '9';
|
|
248
|
+
// Act
|
|
249
|
+
const resultado = converter.toText(entrada);
|
|
250
|
+
// Assert
|
|
251
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
252
|
+
});
|
|
253
|
+
it('Deve converter códigos Morse AB separados por espaço', () => {
|
|
254
|
+
// Arrange
|
|
255
|
+
const entrada = '.- -...';
|
|
256
|
+
const resultadoEsperado = 'AB';
|
|
257
|
+
// Act
|
|
258
|
+
const resultado = converter.toText(entrada);
|
|
259
|
+
// Assert
|
|
260
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
261
|
+
});
|
|
262
|
+
it('Deve converter códigos Morse SOS separados por espaço', () => {
|
|
263
|
+
// Arrange
|
|
264
|
+
const entrada = '... --- ...';
|
|
265
|
+
const resultadoEsperado = 'SOS';
|
|
266
|
+
// Act
|
|
267
|
+
const resultado = converter.toText(entrada);
|
|
268
|
+
// Assert
|
|
269
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
270
|
+
});
|
|
271
|
+
it('Deve converter códigos Morse HELLO separados por espaço', () => {
|
|
272
|
+
// Arrange
|
|
273
|
+
const entrada = '.... . .-.. .-.. ---';
|
|
274
|
+
const resultadoEsperado = 'HELLO';
|
|
275
|
+
// Act
|
|
276
|
+
const resultado = converter.toText(entrada);
|
|
277
|
+
// Assert
|
|
278
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
279
|
+
});
|
|
280
|
+
it('Deve converter HELLO WORLD com separador de palavras', () => {
|
|
281
|
+
// Arrange
|
|
282
|
+
const entrada = '.... . .-.. .-.. --- .-- --- .-. .-.. -..';
|
|
283
|
+
const resultadoEsperado = 'HELLO WORLD';
|
|
284
|
+
// Act
|
|
285
|
+
const resultado = converter.toText(entrada);
|
|
286
|
+
// Assert
|
|
287
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
288
|
+
});
|
|
289
|
+
it('Deve converter AB C com separador de palavras', () => {
|
|
290
|
+
// Arrange
|
|
291
|
+
const entrada = '.- -... -.-.';
|
|
292
|
+
const resultadoEsperado = 'AB C';
|
|
293
|
+
// Act
|
|
294
|
+
const resultado = converter.toText(entrada);
|
|
295
|
+
// Assert
|
|
296
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
describe('Dado um código Morse inválido', () => {
|
|
300
|
+
it('Deve retornar ? para código Morse desconhecido', () => {
|
|
301
|
+
// Arrange
|
|
302
|
+
const entrada = '..---..';
|
|
303
|
+
const resultadoEsperado = '?';
|
|
304
|
+
// Act
|
|
305
|
+
const resultado = converter.toText(entrada);
|
|
306
|
+
// Assert
|
|
307
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
308
|
+
});
|
|
309
|
+
it('Deve retornar ? para código Morse longo desconhecido', () => {
|
|
310
|
+
// Arrange
|
|
311
|
+
const entrada = '.-.-.-.-';
|
|
312
|
+
const resultadoEsperado = '?';
|
|
313
|
+
// Act
|
|
314
|
+
const resultado = converter.toText(entrada);
|
|
315
|
+
// Assert
|
|
316
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
317
|
+
});
|
|
318
|
+
it('Deve processar A + código inválido + B', () => {
|
|
319
|
+
// Arrange
|
|
320
|
+
const entrada = '.- invalid -...';
|
|
321
|
+
const resultadoEsperado = 'A?B';
|
|
322
|
+
// Act
|
|
323
|
+
const resultado = converter.toText(entrada);
|
|
324
|
+
// Assert
|
|
325
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
326
|
+
});
|
|
327
|
+
it('Deve processar SO + código inválido', () => {
|
|
328
|
+
// Arrange
|
|
329
|
+
const entrada = '... --- invalid';
|
|
330
|
+
const resultadoEsperado = 'SO?';
|
|
331
|
+
// Act
|
|
332
|
+
const resultado = converter.toText(entrada);
|
|
333
|
+
// Assert
|
|
334
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
describe('Dado uma entrada de casos extremos', () => {
|
|
338
|
+
it('Deve retornar string vazia quando entrada for vazia', () => {
|
|
339
|
+
// Arrange
|
|
340
|
+
const entrada = '';
|
|
341
|
+
const resultadoEsperado = '';
|
|
342
|
+
// Act
|
|
343
|
+
const resultado = converter.toText(entrada);
|
|
344
|
+
// Assert
|
|
345
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
346
|
+
});
|
|
347
|
+
it('Deve retornar string vazia quando entrada for três espaços', () => {
|
|
348
|
+
// Arrange
|
|
349
|
+
const entrada = ' ';
|
|
350
|
+
const resultadoEsperado = '';
|
|
351
|
+
// Act
|
|
352
|
+
const resultado = converter.toText(entrada);
|
|
353
|
+
// Assert
|
|
354
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
355
|
+
});
|
|
356
|
+
it('Deve retornar string vazia quando entrada for um espaço', () => {
|
|
357
|
+
// Arrange
|
|
358
|
+
const entrada = ' ';
|
|
359
|
+
const resultadoEsperado = '';
|
|
360
|
+
// Act
|
|
361
|
+
const resultado = converter.toText(entrada);
|
|
362
|
+
// Assert
|
|
363
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
364
|
+
});
|
|
365
|
+
it('Deve retornar string vazia quando entrada for cinco espaços', () => {
|
|
366
|
+
// Arrange
|
|
367
|
+
const entrada = ' ';
|
|
368
|
+
const resultadoEsperado = '';
|
|
369
|
+
// Act
|
|
370
|
+
const resultado = converter.toText(entrada);
|
|
371
|
+
// Assert
|
|
372
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
373
|
+
});
|
|
374
|
+
it('Deve remover espaços extras no final do resultado AB', () => {
|
|
375
|
+
// Arrange
|
|
376
|
+
const entrada = '.- -...';
|
|
377
|
+
const resultadoEsperado = 'AB';
|
|
378
|
+
// Act
|
|
379
|
+
const resultado = converter.toText(entrada);
|
|
380
|
+
// Assert
|
|
381
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
382
|
+
expect(resultado.endsWith(' ')).toBe(false);
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
describe('Testes de Integração', () => {
|
|
387
|
+
describe('Conversões bidirecionais', () => {
|
|
388
|
+
it('Deve converter HELLO WORLD conhecido de Morse para texto', () => {
|
|
389
|
+
// Arrange
|
|
390
|
+
const entrada = '.... . .-.. .-.. --- .-- --- .-. .-.. -..';
|
|
391
|
+
const resultadoEsperado = 'HELLO WORLD';
|
|
392
|
+
// Act
|
|
393
|
+
const resultado = converter.toText(entrada);
|
|
394
|
+
// Assert
|
|
395
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
396
|
+
});
|
|
397
|
+
it('Deve converter SOS de texto para Morse', () => {
|
|
398
|
+
// Arrange
|
|
399
|
+
const entrada = 'SOS';
|
|
400
|
+
const resultadoEsperado = '...---...';
|
|
401
|
+
// Act
|
|
402
|
+
const resultado = converter.fromText(entrada);
|
|
403
|
+
// Assert
|
|
404
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
405
|
+
});
|
|
406
|
+
it('Deve converter SOS de Morse para texto', () => {
|
|
407
|
+
// Arrange
|
|
408
|
+
const entrada = '... --- ...';
|
|
409
|
+
const resultadoEsperado = 'SOS';
|
|
410
|
+
// Act
|
|
411
|
+
const resultado = converter.toText(entrada);
|
|
412
|
+
// Assert
|
|
413
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
414
|
+
});
|
|
415
|
+
it('Deve converter alfabeto ABCDEFGHIJKLMNOPQRSTUVWXYZ para Morse', () => {
|
|
416
|
+
// Arrange
|
|
417
|
+
const entrada = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
418
|
+
const resultadoEsperado = '.-' + '-...' + '-.-.' + '-..' + '.' + '..-.' +
|
|
419
|
+
'--.' + '....' + '..' + '.---' + '-.-' + '.-..' +
|
|
420
|
+
'--' + '-.' + '---' + '.--.' + '--.-' + '.-.' +
|
|
421
|
+
'...' + '-' + '..-' + '...-' + '.--' + '-..-' +
|
|
422
|
+
'-.--' + '--..';
|
|
423
|
+
// Act
|
|
424
|
+
const resultado = converter.fromText(entrada);
|
|
425
|
+
// Assert
|
|
426
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
427
|
+
});
|
|
428
|
+
it('Deve converter números 0123456789 para Morse', () => {
|
|
429
|
+
// Arrange
|
|
430
|
+
const entrada = '0123456789';
|
|
431
|
+
const resultadoEsperado = '-----.----..---...--....-.....-....--...---..----.';
|
|
432
|
+
// Act
|
|
433
|
+
const resultado = converter.fromText(entrada);
|
|
434
|
+
// Assert
|
|
435
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
436
|
+
});
|
|
437
|
+
it('Deve converter números em Morse para texto', () => {
|
|
438
|
+
// Arrange
|
|
439
|
+
const entrada = '----- .---- ..--- ...-- ....- ..... -.... --... ---.. ----.';
|
|
440
|
+
const resultadoEsperado = '0123456789';
|
|
441
|
+
// Act
|
|
442
|
+
const resultado = converter.toText(entrada);
|
|
443
|
+
// Assert
|
|
444
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
445
|
+
});
|
|
446
|
+
it('Deve converter A1B2 para Morse', () => {
|
|
447
|
+
// Arrange
|
|
448
|
+
const entrada = 'A1B2';
|
|
449
|
+
const resultadoEsperado = '.-.----' + '-...' + '..---';
|
|
450
|
+
// Act
|
|
451
|
+
const resultado = converter.fromText(entrada);
|
|
452
|
+
// Assert
|
|
453
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
454
|
+
});
|
|
455
|
+
it('Deve converter A1B2 em Morse para texto', () => {
|
|
456
|
+
// Arrange
|
|
457
|
+
const entrada = '.- .---- -... ..---';
|
|
458
|
+
const resultadoEsperado = 'A1B2';
|
|
459
|
+
// Act
|
|
460
|
+
const resultado = converter.toText(entrada);
|
|
461
|
+
// Assert
|
|
462
|
+
expect(resultado).toBe(resultadoEsperado);
|
|
463
|
+
});
|
|
464
|
+
});
|
|
465
|
+
describe('Cenários de validação', () => {
|
|
466
|
+
it('Deve converter HELLO para Morse retornando resultado não vazio', () => {
|
|
467
|
+
// Arrange
|
|
468
|
+
const entrada = 'HELLO';
|
|
469
|
+
// Act
|
|
470
|
+
const resultado = converter.fromText(entrada);
|
|
471
|
+
// Assert
|
|
472
|
+
expect(resultado).toBeTruthy();
|
|
473
|
+
expect(resultado.length).toBeGreaterThan(0);
|
|
474
|
+
});
|
|
475
|
+
it('Deve converter WORLD para Morse retornando resultado não vazio', () => {
|
|
476
|
+
// Arrange
|
|
477
|
+
const entrada = 'WORLD';
|
|
478
|
+
// Act
|
|
479
|
+
const resultado = converter.fromText(entrada);
|
|
480
|
+
// Assert
|
|
481
|
+
expect(resultado).toBeTruthy();
|
|
482
|
+
expect(resultado.length).toBeGreaterThan(0);
|
|
483
|
+
});
|
|
484
|
+
it('Deve tratar entrada vazia consistentemente em fromText', () => {
|
|
485
|
+
// Arrange
|
|
486
|
+
const entrada = '';
|
|
487
|
+
// Act
|
|
488
|
+
const resultado = converter.fromText(entrada);
|
|
489
|
+
// Assert
|
|
490
|
+
expect(resultado).toBe('');
|
|
491
|
+
});
|
|
492
|
+
it('Deve tratar entrada vazia consistentemente em toText', () => {
|
|
493
|
+
// Arrange
|
|
494
|
+
const entrada = '';
|
|
495
|
+
// Act
|
|
496
|
+
const resultado = converter.toText(entrada);
|
|
497
|
+
// Assert
|
|
498
|
+
expect(resultado).toBe('');
|
|
499
|
+
});
|
|
500
|
+
it('Deve tratar entrada com espaços consistentemente em fromText', () => {
|
|
501
|
+
// Arrange
|
|
502
|
+
const entrada = ' ';
|
|
503
|
+
// Act
|
|
504
|
+
const resultado = converter.fromText(entrada);
|
|
505
|
+
// Assert
|
|
506
|
+
expect(resultado).toBe('');
|
|
507
|
+
});
|
|
508
|
+
it('Deve tratar entrada com espaços consistentemente em toText', () => {
|
|
509
|
+
// Arrange
|
|
510
|
+
const entrada = ' ';
|
|
511
|
+
// Act
|
|
512
|
+
const resultado = converter.toText(entrada);
|
|
513
|
+
// Assert
|
|
514
|
+
expect(resultado).toBe('');
|
|
515
|
+
});
|
|
516
|
+
});
|
|
517
|
+
});
|
|
518
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextFormatConverter = void 0;
|
|
4
|
+
class TextFormatConverter {
|
|
5
|
+
fromText(value) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
toText(value) {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.TextFormatConverter = TextFormatConverter;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseFactory } from "../../baseFactory";
|
|
2
|
+
import { ITextFormatConverter } from "./inteface/ITextFormatConverter.converter";
|
|
3
|
+
import { ITextFormatConverterFactory } from "./inteface/ITextFormatConverter.converter.factory";
|
|
4
|
+
import { IServiceCategory } from "../../interfaces/IServiceCategory";
|
|
5
|
+
export declare class TextFormatConverterFactory extends BaseFactory<ITextFormatConverter> implements ITextFormatConverterFactory {
|
|
6
|
+
constructor();
|
|
7
|
+
protected registerService(service: IServiceCategory): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextFormatConverterFactory = void 0;
|
|
4
|
+
const baseFactory_1 = require("../../baseFactory");
|
|
5
|
+
const provider_1 = require("./provider");
|
|
6
|
+
class TextFormatConverterFactory extends baseFactory_1.BaseFactory {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(provider_1.textFormats);
|
|
9
|
+
}
|
|
10
|
+
registerService(service) {
|
|
11
|
+
const module = require("./services/" + service.id + "/" + service.id + "-format" + ".converter");
|
|
12
|
+
// Atribui o construtor: preferencialmente `default`, ou a primeira propriedade exportada
|
|
13
|
+
const implementation = module.default || Object.values(module)[0];
|
|
14
|
+
this.map.set(service.id, new implementation());
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.TextFormatConverterFactory = TextFormatConverterFactory;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextConverter = void 0;
|
|
4
|
+
const textFormatConverter_converter_factory_1 = require("./textFormatConverter.converter.factory");
|
|
5
|
+
class TextConverter {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.factory = new textFormatConverter_converter_factory_1.TextFormatConverterFactory();
|
|
8
|
+
}
|
|
9
|
+
convert(value, from, to) {
|
|
10
|
+
const source = this.factory.createService(from);
|
|
11
|
+
const target = this.factory.createService(to);
|
|
12
|
+
const text = source.toText(value);
|
|
13
|
+
const result = target.fromText(text);
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.TextConverter = TextConverter;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IUnitConverter } from "./interfaces/IUnitConverter";
|
|
2
|
+
import { Unit } from "./models/unit";
|
|
3
|
+
export declare abstract class ConverterBaseService implements IUnitConverter {
|
|
4
|
+
private readonly _mapById;
|
|
5
|
+
private readonly _mapBySymbol;
|
|
6
|
+
private readonly _mapByName;
|
|
7
|
+
private readonly _units;
|
|
8
|
+
constructor(units: Unit[]);
|
|
9
|
+
private _mapUnitById;
|
|
10
|
+
private _mapUnitBySymbol;
|
|
11
|
+
private _mapUnitByName;
|
|
12
|
+
private _mapUnits;
|
|
13
|
+
convert(value: number, fromUnitId: string, toUnitId: string): number;
|
|
14
|
+
getUnits(): Unit[];
|
|
15
|
+
getBaseUnit(): Unit;
|
|
16
|
+
getUnitById(id: string): Unit | undefined;
|
|
17
|
+
getUnitBySymbol(symbol: string): Unit | undefined;
|
|
18
|
+
getUnitByName(name: string): Unit | undefined;
|
|
19
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConverterBaseService = void 0;
|
|
4
|
+
class ConverterBaseService {
|
|
5
|
+
constructor(units) {
|
|
6
|
+
this._mapById = new Map();
|
|
7
|
+
this._mapBySymbol = new Map();
|
|
8
|
+
this._mapByName = new Map();
|
|
9
|
+
this._units = [];
|
|
10
|
+
this._units = units;
|
|
11
|
+
this._mapUnits();
|
|
12
|
+
}
|
|
13
|
+
_mapUnitById(unit) {
|
|
14
|
+
this._mapById.set(unit.id, unit);
|
|
15
|
+
}
|
|
16
|
+
_mapUnitBySymbol(unit) {
|
|
17
|
+
this._mapBySymbol.set(unit.symbol, unit);
|
|
18
|
+
}
|
|
19
|
+
_mapUnitByName(unit) {
|
|
20
|
+
this._mapByName.set(unit.name, unit);
|
|
21
|
+
}
|
|
22
|
+
_mapUnits() {
|
|
23
|
+
this._units.forEach(unit => {
|
|
24
|
+
this._mapUnitById(unit);
|
|
25
|
+
this._mapUnitBySymbol(unit);
|
|
26
|
+
this._mapUnitByName(unit);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
convert(value, fromUnitId, toUnitId) {
|
|
30
|
+
const sourceUnit = this.getUnitById(fromUnitId);
|
|
31
|
+
const targetUnit = this.getUnitById(toUnitId);
|
|
32
|
+
if (!sourceUnit || !targetUnit) {
|
|
33
|
+
throw new Error('Unidades não encontradas');
|
|
34
|
+
}
|
|
35
|
+
// Converte para a unidade base (mililitros) e depois para a unidade alvo
|
|
36
|
+
const baseValue = value * sourceUnit.conversionFactor;
|
|
37
|
+
const result = baseValue / targetUnit.conversionFactor;
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
getUnits() {
|
|
41
|
+
return this._units;
|
|
42
|
+
}
|
|
43
|
+
getBaseUnit() {
|
|
44
|
+
return this._units.find(unit => unit.isBaseUnit);
|
|
45
|
+
}
|
|
46
|
+
getUnitById(id) {
|
|
47
|
+
return this._mapById.get(id);
|
|
48
|
+
}
|
|
49
|
+
getUnitBySymbol(symbol) {
|
|
50
|
+
return this._mapBySymbol.get(symbol);
|
|
51
|
+
}
|
|
52
|
+
getUnitByName(name) {
|
|
53
|
+
return this._mapByName.get(name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.ConverterBaseService = ConverterBaseService;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Unit } from "../models/unit";
|
|
2
|
+
export interface IUnitConverter {
|
|
3
|
+
convert(value: number, fromUnit: string, toUnit: string): number;
|
|
4
|
+
getUnits(): Unit[];
|
|
5
|
+
getBaseUnit(): Unit;
|
|
6
|
+
getUnitById(id: string): Unit | undefined;
|
|
7
|
+
getUnitBySymbol(symbol: string): Unit | undefined;
|
|
8
|
+
getUnitByName(name: string): Unit | undefined;
|
|
9
|
+
}
|