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.
Files changed (197) hide show
  1. package/dist/baseFactory.d.ts +12 -0
  2. package/dist/baseFactory.js +33 -0
  3. package/dist/constants/regexPatterns.d.ts +2 -0
  4. package/dist/constants/regexPatterns.js +9 -0
  5. package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.d.ts +4 -0
  6. package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.d.ts +4 -0
  7. package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.js +2 -0
  8. package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.js +2 -0
  9. package/dist/converters/numeric-systems/numericSystem.converter.d.ts +5 -0
  10. package/dist/converters/numeric-systems/numericSystem.converter.factory.d.ts +8 -0
  11. package/dist/converters/numeric-systems/numericSystem.converter.factory.js +17 -0
  12. package/dist/converters/numeric-systems/numericSystem.converter.js +17 -0
  13. package/dist/converters/numeric-systems/provider.d.ts +2 -0
  14. package/dist/converters/numeric-systems/provider.js +11 -0
  15. package/dist/converters/numeric-systems/services/binary/binary.converter.d.ts +5 -0
  16. package/dist/converters/numeric-systems/services/binary/binary.converter.js +16 -0
  17. package/dist/converters/numeric-systems/services/binary/binary.converter.test.d.ts +1 -0
  18. package/dist/converters/numeric-systems/services/binary/binary.converter.test.js +252 -0
  19. package/dist/converters/numeric-systems/services/decimal/decimal.converter.d.ts +5 -0
  20. package/dist/converters/numeric-systems/services/decimal/decimal.converter.js +16 -0
  21. package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.d.ts +1 -0
  22. package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.js +199 -0
  23. package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.d.ts +5 -0
  24. package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.js +18 -0
  25. package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.d.ts +1 -0
  26. package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.js +130 -0
  27. package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.d.ts +5 -0
  28. package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.js +15 -0
  29. package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.d.ts +1 -0
  30. package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.js +151 -0
  31. package/dist/converters/numeric-systems/services/roman/roman.converter.d.ts +7 -0
  32. package/dist/converters/numeric-systems/services/roman/roman.converter.js +77 -0
  33. package/dist/converters/numeric-systems/services/roman/roman.converter.test.d.ts +1 -0
  34. package/dist/converters/numeric-systems/services/roman/roman.converter.test.js +105 -0
  35. package/dist/converters/serialization/interfaces/ISerialization.converter.d.ts +5 -0
  36. package/dist/converters/serialization/interfaces/ISerialization.converter.factory.d.ts +4 -0
  37. package/dist/converters/serialization/interfaces/ISerialization.converter.factory.js +2 -0
  38. package/dist/converters/serialization/interfaces/ISerialization.converter.js +2 -0
  39. package/dist/converters/serialization/interfaces/ISerializationOptions.d.ts +4 -0
  40. package/dist/converters/serialization/interfaces/ISerializationOptions.js +2 -0
  41. package/dist/converters/serialization/provider.d.ts +2 -0
  42. package/dist/converters/serialization/provider.js +7 -0
  43. package/dist/converters/serialization/serialization.converter.d.ts +6 -0
  44. package/dist/converters/serialization/serialization.converter.factory.d.ts +9 -0
  45. package/dist/converters/serialization/serialization.converter.factory.js +20 -0
  46. package/dist/converters/serialization/serialization.converter.js +17 -0
  47. package/dist/converters/serialization/services/csv/csv.converter.d.ts +6 -0
  48. package/dist/converters/serialization/services/csv/csv.converter.js +68 -0
  49. package/dist/converters/serialization/services/csv/csv.converter.test.d.ts +1 -0
  50. package/dist/converters/serialization/services/csv/csv.converter.test.js +295 -0
  51. package/dist/converters/serialization/services/json/json.converter.d.ts +5 -0
  52. package/dist/converters/serialization/services/json/json.converter.js +12 -0
  53. package/dist/converters/text-format/inteface/ITextFormatConverter.converter.d.ts +4 -0
  54. package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.d.ts +4 -0
  55. package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.js +2 -0
  56. package/dist/converters/text-format/inteface/ITextFormatConverter.converter.js +2 -0
  57. package/dist/converters/text-format/provider.d.ts +2 -0
  58. package/dist/converters/text-format/provider.js +8 -0
  59. package/dist/converters/text-format/services/binary/binary-format.converter.d.ts +5 -0
  60. package/dist/converters/text-format/services/binary/binary-format.converter.js +40 -0
  61. package/dist/converters/text-format/services/binary/binary-format.converter.test.d.ts +1 -0
  62. package/dist/converters/text-format/services/binary/binary-format.converter.test.js +174 -0
  63. package/dist/converters/text-format/services/morse/morse-format.converter.d.ts +6 -0
  64. package/dist/converters/text-format/services/morse/morse-format.converter.js +85 -0
  65. package/dist/converters/text-format/services/morse/morse-format.converter.test.d.ts +1 -0
  66. package/dist/converters/text-format/services/morse/morse-format.converter.test.js +518 -0
  67. package/dist/converters/text-format/services/text/text-format.converter.d.ts +5 -0
  68. package/dist/converters/text-format/services/text/text-format.converter.js +12 -0
  69. package/dist/converters/text-format/textFormatConverter.converter.d.ts +5 -0
  70. package/dist/converters/text-format/textFormatConverter.converter.factory.d.ts +8 -0
  71. package/dist/converters/text-format/textFormatConverter.converter.factory.js +17 -0
  72. package/dist/converters/text-format/textFormatConverter.converter.js +17 -0
  73. package/dist/converters/unit-converter/converter-base.d.ts +19 -0
  74. package/dist/converters/unit-converter/converter-base.js +56 -0
  75. package/dist/converters/unit-converter/interfaces/IUnitConverter.d.ts +9 -0
  76. package/dist/converters/unit-converter/interfaces/IUnitConverter.js +2 -0
  77. package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.d.ts +4 -0
  78. package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.js +2 -0
  79. package/dist/converters/unit-converter/models/unit.d.ts +7 -0
  80. package/dist/converters/unit-converter/models/unit.js +2 -0
  81. package/dist/converters/unit-converter/provider.d.ts +2 -0
  82. package/dist/converters/unit-converter/provider.js +16 -0
  83. package/dist/converters/unit-converter/services/angle/angle.converter.d.ts +4 -0
  84. package/dist/converters/unit-converter/services/angle/angle.converter.js +15 -0
  85. package/dist/converters/unit-converter/services/angle/angle.converter.test.d.ts +1 -0
  86. package/dist/converters/unit-converter/services/angle/angle.converter.test.js +112 -0
  87. package/dist/converters/unit-converter/services/area/area.converter.d.ts +4 -0
  88. package/dist/converters/unit-converter/services/area/area.converter.js +24 -0
  89. package/dist/converters/unit-converter/services/area/area.converter.test.d.ts +1 -0
  90. package/dist/converters/unit-converter/services/area/area.converter.test.js +439 -0
  91. package/dist/converters/unit-converter/services/data/data.converter.d.ts +4 -0
  92. package/dist/converters/unit-converter/services/data/data.converter.js +30 -0
  93. package/dist/converters/unit-converter/services/data/data.converter.test.d.ts +1 -0
  94. package/dist/converters/unit-converter/services/data/data.converter.test.js +209 -0
  95. package/dist/converters/unit-converter/services/energy/energy.converter.d.ts +4 -0
  96. package/dist/converters/unit-converter/services/energy/energy.converter.js +20 -0
  97. package/dist/converters/unit-converter/services/energy/energy.converter.test.d.ts +1 -0
  98. package/dist/converters/unit-converter/services/energy/energy.converter.test.js +154 -0
  99. package/dist/converters/unit-converter/services/length/length.converter.d.ts +4 -0
  100. package/dist/converters/unit-converter/services/length/length.converter.js +31 -0
  101. package/dist/converters/unit-converter/services/length/length.converter.test.d.ts +1 -0
  102. package/dist/converters/unit-converter/services/length/length.converter.test.js +186 -0
  103. package/dist/converters/unit-converter/services/power/power.converter.d.ts +4 -0
  104. package/dist/converters/unit-converter/services/power/power.converter.js +17 -0
  105. package/dist/converters/unit-converter/services/power/power.converter.test.d.ts +1 -0
  106. package/dist/converters/unit-converter/services/power/power.converter.test.js +223 -0
  107. package/dist/converters/unit-converter/services/pressure/pressure.converter.d.ts +4 -0
  108. package/dist/converters/unit-converter/services/pressure/pressure.converter.js +18 -0
  109. package/dist/converters/unit-converter/services/pressure/pressure.converter.test.d.ts +1 -0
  110. package/dist/converters/unit-converter/services/pressure/pressure.converter.test.js +107 -0
  111. package/dist/converters/unit-converter/services/speed/speed.converter.d.ts +4 -0
  112. package/dist/converters/unit-converter/services/speed/speed.converter.js +22 -0
  113. package/dist/converters/unit-converter/services/speed/speed.converter.test.d.ts +1 -0
  114. package/dist/converters/unit-converter/services/speed/speed.converter.test.js +257 -0
  115. package/dist/converters/unit-converter/services/temperature/temperature.converter.d.ts +7 -0
  116. package/dist/converters/unit-converter/services/temperature/temperature.converter.js +46 -0
  117. package/dist/converters/unit-converter/services/temperature/temperature.converter.test.d.ts +1 -0
  118. package/dist/converters/unit-converter/services/temperature/temperature.converter.test.js +279 -0
  119. package/dist/converters/unit-converter/services/time/time.converter.d.ts +4 -0
  120. package/dist/converters/unit-converter/services/time/time.converter.js +26 -0
  121. package/dist/converters/unit-converter/services/volume/volume.converter.d.ts +4 -0
  122. package/dist/converters/unit-converter/services/volume/volume.converter.js +39 -0
  123. package/dist/converters/unit-converter/services/volume/volume.converter.test.d.ts +1 -0
  124. package/dist/converters/unit-converter/services/volume/volume.converter.test.js +295 -0
  125. package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.d.ts +4 -0
  126. package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.js +29 -0
  127. package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.d.ts +1 -0
  128. package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.js +218 -0
  129. package/dist/converters/unit-converter/unit.converter.factory.d.ts +9 -0
  130. package/dist/converters/unit-converter/unit.converter.factory.js +20 -0
  131. package/dist/crypt.d.ts +0 -0
  132. package/dist/crypt.js +77 -0
  133. package/dist/documents/cnpj/cnpj.d.ts +14 -0
  134. package/dist/documents/cnpj/cnpj.formatter.d.ts +5 -0
  135. package/dist/documents/cnpj/cnpj.formatter.js +12 -0
  136. package/dist/documents/cnpj/cnpj.generator.d.ts +9 -0
  137. package/dist/documents/cnpj/cnpj.generator.js +43 -0
  138. package/dist/documents/cnpj/cnpj.js +47 -0
  139. package/dist/documents/cnpj/cnpj.validator.d.ts +11 -0
  140. package/dist/documents/cnpj/cnpj.validator.js +49 -0
  141. package/dist/documents/cnpj/tests/cnpj.formatter.test.d.ts +1 -0
  142. package/dist/documents/cnpj/tests/cnpj.formatter.test.js +62 -0
  143. package/dist/documents/cnpj/tests/cnpj.generator.test.d.ts +1 -0
  144. package/dist/documents/cnpj/tests/cnpj.generator.test.js +51 -0
  145. package/dist/documents/cnpj/tests/cnpj.test.d.ts +1 -0
  146. package/dist/documents/cnpj/tests/cnpj.test.js +162 -0
  147. package/dist/documents/cnpj/tests/cnpj.validator.test.d.ts +1 -0
  148. package/dist/documents/cnpj/tests/cnpj.validator.test.js +104 -0
  149. package/dist/documents/cpf/cpf.d.ts +14 -0
  150. package/dist/documents/cpf/cpf.formatter.d.ts +5 -0
  151. package/dist/documents/cpf/cpf.formatter.js +12 -0
  152. package/dist/documents/cpf/cpf.generator.d.ts +9 -0
  153. package/dist/documents/cpf/cpf.generator.js +40 -0
  154. package/dist/documents/cpf/cpf.js +50 -0
  155. package/dist/documents/cpf/cpf.validator.d.ts +11 -0
  156. package/dist/documents/cpf/cpf.validator.js +46 -0
  157. package/dist/documents/cpf/tests/cpf.formatter.test.d.ts +1 -0
  158. package/dist/documents/cpf/tests/cpf.formatter.test.js +71 -0
  159. package/dist/documents/cpf/tests/cpf.generator.test.d.ts +1 -0
  160. package/dist/documents/cpf/tests/cpf.generator.test.js +71 -0
  161. package/dist/documents/cpf/tests/cpf.test.d.ts +1 -0
  162. package/dist/documents/cpf/tests/cpf.test.js +151 -0
  163. package/dist/documents/cpf/tests/cpf.validator.test.d.ts +1 -0
  164. package/dist/documents/cpf/tests/cpf.validator.test.js +113 -0
  165. package/dist/documents/interfaces/formatter.interface.d.ts +4 -0
  166. package/dist/documents/interfaces/formatter.interface.js +2 -0
  167. package/dist/documents/interfaces/generator.interface.d.ts +3 -0
  168. package/dist/documents/interfaces/generator.interface.js +2 -0
  169. package/dist/documents/interfaces/validator.interface.d.ts +4 -0
  170. package/dist/documents/interfaces/validator.interface.js +2 -0
  171. package/dist/documents/models/validation-result.model.d.ts +4 -0
  172. package/dist/documents/models/validation-result.model.js +2 -0
  173. package/dist/enums/cryptProvider.d.ts +6 -0
  174. package/dist/enums/cryptProvider.js +10 -0
  175. package/dist/extensions/array.extensions.d.ts +6 -0
  176. package/dist/extensions/array.extensions.js +7 -0
  177. package/dist/extensions/boolean.extensions.d.ts +6 -0
  178. package/dist/extensions/boolean.extensions.js +5 -0
  179. package/dist/extensions/number.extensions.d.ts +11 -0
  180. package/dist/extensions/number.extensions.js +24 -0
  181. package/dist/extensions/string.extensions.d.ts +13 -0
  182. package/dist/extensions/string.extensions.js +28 -0
  183. package/dist/index.d.ts +22 -0
  184. package/dist/index.js +39 -0
  185. package/dist/interfaces/IFactory.d.ts +3 -0
  186. package/dist/interfaces/IFactory.js +2 -0
  187. package/dist/interfaces/IServiceCategory.d.ts +3 -0
  188. package/dist/interfaces/IServiceCategory.js +2 -0
  189. package/dist/interfaces/validator.d.ts +5 -0
  190. package/dist/interfaces/validator.js +2 -0
  191. package/dist/interfaces/value.d.ts +3 -0
  192. package/dist/interfaces/value.js +2 -0
  193. package/dist/interfaces/valueGenerator.d.ts +4 -0
  194. package/dist/interfaces/valueGenerator.js +2 -0
  195. package/dist/random.d.ts +12 -0
  196. package/dist/random.js +29 -0
  197. 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,5 @@
1
+ import { ITextFormatConverter } from "../../inteface/ITextFormatConverter.converter";
2
+ export declare class TextFormatConverter implements ITextFormatConverter {
3
+ fromText(value: string): string;
4
+ toText(value: string): string;
5
+ }
@@ -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,5 @@
1
+ export declare class TextConverter {
2
+ private readonly factory;
3
+ constructor();
4
+ convert(value: string, from: string, to: string): string;
5
+ }
@@ -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
+ }