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,7 @@
1
+ import { ConverterBaseService } from '../../converter-base';
2
+ export declare class TemperatureConverter extends ConverterBaseService {
3
+ constructor();
4
+ convert(value: number, fromUnitId: string, toUnitId: string): number;
5
+ private toKelvin;
6
+ private fromKelvin;
7
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemperatureConverter = void 0;
4
+ const converter_base_1 = require("../../converter-base");
5
+ class TemperatureConverter extends converter_base_1.ConverterBaseService {
6
+ constructor() {
7
+ super([
8
+ // Base: kelvin
9
+ { id: 'kelvin', name: 'Kelvin', symbol: 'K', conversionFactor: 1, isBaseUnit: true },
10
+ { id: 'celsius', name: 'Celsius', symbol: '°C', conversionFactor: 273.15, isBaseUnit: false },
11
+ { id: 'fahrenheit', name: 'Fahrenheit', symbol: '°F', conversionFactor: 459.67, isBaseUnit: false },
12
+ { id: 'rankine', name: 'Rankine', symbol: '°R', conversionFactor: 1.8, isBaseUnit: false },
13
+ { id: 'reaumur', name: 'Réaumur', symbol: '°Ré', conversionFactor: 1.25, isBaseUnit: false },
14
+ ]);
15
+ }
16
+ convert(value, fromUnitId, toUnitId) {
17
+ const from = this.getUnitById(fromUnitId);
18
+ const to = this.getUnitById(toUnitId);
19
+ if (!from || !to) {
20
+ throw new Error("Unidade de temperatura não encontrada");
21
+ }
22
+ const kelvin = this.toKelvin(from, value);
23
+ return this.fromKelvin(to, kelvin);
24
+ }
25
+ toKelvin(unit, value) {
26
+ switch (unit.id) {
27
+ case "kelvin": return value;
28
+ case "celsius": return value + unit.conversionFactor;
29
+ case "fahrenheit": return (value + unit.conversionFactor) / 1.8;
30
+ case "rankine": return value / unit.conversionFactor;
31
+ case "reaumur": return value * unit.conversionFactor + 273.15;
32
+ default: throw new Error(`Conversão para Kelvin não suportada: ${unit.id}`);
33
+ }
34
+ }
35
+ fromKelvin(unit, value) {
36
+ switch (unit.id) {
37
+ case "kelvin": return value;
38
+ case "celsius": return value - unit.conversionFactor;
39
+ case "fahrenheit": return (value * 1.8) - unit.conversionFactor;
40
+ case "rankine": return value * unit.conversionFactor;
41
+ case "reaumur": return (value - 273.15) * 0.8;
42
+ default: throw new Error(`Conversão a partir de Kelvin não suportada: ${unit.id}`);
43
+ }
44
+ }
45
+ }
46
+ exports.TemperatureConverter = TemperatureConverter;
@@ -0,0 +1,279 @@
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('temperature');
6
+ describe('Conversão completa entre unidades de temperatura', () => {
7
+ // Testes de conversão para a mesma unidade
8
+ describe('Conversões para a mesma unidade', () => {
9
+ test('273.15 kelvin → kelvin ≈ 273.15', () => {
10
+ expect(converter.convert(273.15, 'kelvin', 'kelvin')).toBeCloseTo(273.15, 10);
11
+ });
12
+ test('20 celsius → celsius ≈ 20.0', () => {
13
+ expect(converter.convert(20, 'celsius', 'celsius')).toBeCloseTo(20.0, 10);
14
+ });
15
+ test('68 fahrenheit → fahrenheit ≈ 68.0', () => {
16
+ expect(converter.convert(68, 'fahrenheit', 'fahrenheit')).toBeCloseTo(68.0, 10);
17
+ });
18
+ test('491.67 rankine → rankine ≈ 491.67', () => {
19
+ expect(converter.convert(491.67, 'rankine', 'rankine')).toBeCloseTo(491.67, 10);
20
+ });
21
+ test('16 reaumur → reaumur ≈ 16.0', () => {
22
+ expect(converter.convert(16, 'reaumur', 'reaumur')).toBeCloseTo(16.0, 10);
23
+ });
24
+ });
25
+ // Testes de conversão Celsius ↔ outras unidades
26
+ describe('Conversões a partir de Celsius', () => {
27
+ test('0 celsius → kelvin ≈ 273.15', () => {
28
+ expect(converter.convert(0, 'celsius', 'kelvin')).toBeCloseTo(273.15, 10);
29
+ });
30
+ test('0 celsius → fahrenheit ≈ 32.0', () => {
31
+ expect(converter.convert(0, 'celsius', 'fahrenheit')).toBeCloseTo(32.0, 10);
32
+ });
33
+ test('0 celsius → rankine ≈ 491.67', () => {
34
+ expect(converter.convert(0, 'celsius', 'rankine')).toBeCloseTo(491.67, 2);
35
+ });
36
+ test('0 celsius → reaumur ≈ 0.0', () => {
37
+ expect(converter.convert(0, 'celsius', 'reaumur')).toBeCloseTo(0.0, 10);
38
+ });
39
+ test('100 celsius → kelvin ≈ 373.15', () => {
40
+ expect(converter.convert(100, 'celsius', 'kelvin')).toBeCloseTo(373.15, 10);
41
+ });
42
+ test('100 celsius → fahrenheit ≈ 212.0', () => {
43
+ expect(converter.convert(100, 'celsius', 'fahrenheit')).toBeCloseTo(212.0, 10);
44
+ });
45
+ test('100 celsius → reaumur ≈ 80.0', () => {
46
+ expect(converter.convert(100, 'celsius', 'reaumur')).toBeCloseTo(80.0, 10);
47
+ });
48
+ test('25 celsius → fahrenheit ≈ 77.0', () => {
49
+ expect(converter.convert(25, 'celsius', 'fahrenheit')).toBeCloseTo(77.0, 10);
50
+ });
51
+ test('-40 celsius → fahrenheit ≈ -40.0', () => {
52
+ expect(converter.convert(-40, 'celsius', 'fahrenheit')).toBeCloseTo(-40.0, 10);
53
+ });
54
+ });
55
+ // Testes de conversão Fahrenheit ↔ outras unidades
56
+ describe('Conversões a partir de Fahrenheit', () => {
57
+ test('32 fahrenheit → celsius ≈ 0.0', () => {
58
+ expect(converter.convert(32, 'fahrenheit', 'celsius')).toBeCloseTo(0.0, 10);
59
+ });
60
+ test('32 fahrenheit → kelvin ≈ 273.15', () => {
61
+ expect(converter.convert(32, 'fahrenheit', 'kelvin')).toBeCloseTo(273.15, 10);
62
+ });
63
+ test('212 fahrenheit → celsius ≈ 100.0', () => {
64
+ expect(converter.convert(212, 'fahrenheit', 'celsius')).toBeCloseTo(100.0, 10);
65
+ });
66
+ test('212 fahrenheit → kelvin ≈ 373.15', () => {
67
+ expect(converter.convert(212, 'fahrenheit', 'kelvin')).toBeCloseTo(373.15, 10);
68
+ });
69
+ test('68 fahrenheit → celsius ≈ 20.0', () => {
70
+ expect(converter.convert(68, 'fahrenheit', 'celsius')).toBeCloseTo(20.0, 10);
71
+ });
72
+ test('98.6 fahrenheit → celsius ≈ 37.0', () => {
73
+ expect(converter.convert(98.6, 'fahrenheit', 'celsius')).toBeCloseTo(37.0, 1);
74
+ });
75
+ test('-40 fahrenheit → celsius ≈ -40.0', () => {
76
+ expect(converter.convert(-40, 'fahrenheit', 'celsius')).toBeCloseTo(-40.0, 10);
77
+ });
78
+ test('32 fahrenheit → reaumur ≈ 0.0', () => {
79
+ expect(converter.convert(32, 'fahrenheit', 'reaumur')).toBeCloseTo(0.0, 10);
80
+ });
81
+ });
82
+ // Testes de conversão Kelvin ↔ outras unidades
83
+ describe('Conversões a partir de Kelvin', () => {
84
+ test('273.15 kelvin → celsius ≈ 0.0', () => {
85
+ expect(converter.convert(273.15, 'kelvin', 'celsius')).toBeCloseTo(0.0, 10);
86
+ });
87
+ test('273.15 kelvin → fahrenheit ≈ 32.0', () => {
88
+ expect(converter.convert(273.15, 'kelvin', 'fahrenheit')).toBeCloseTo(32.0, 10);
89
+ });
90
+ test('373.15 kelvin → celsius ≈ 100.0', () => {
91
+ expect(converter.convert(373.15, 'kelvin', 'celsius')).toBeCloseTo(100.0, 10);
92
+ });
93
+ test('373.15 kelvin → fahrenheit ≈ 212.0', () => {
94
+ expect(converter.convert(373.15, 'kelvin', 'fahrenheit')).toBeCloseTo(212.0, 10);
95
+ });
96
+ test('0 kelvin → celsius ≈ -273.15', () => {
97
+ expect(converter.convert(0, 'kelvin', 'celsius')).toBeCloseTo(-273.15, 10);
98
+ });
99
+ test('0 kelvin → fahrenheit ≈ -459.67', () => {
100
+ expect(converter.convert(0, 'kelvin', 'fahrenheit')).toBeCloseTo(-459.67, 2);
101
+ });
102
+ test('273.15 kelvin → rankine ≈ 491.67', () => {
103
+ expect(converter.convert(273.15, 'kelvin', 'rankine')).toBeCloseTo(491.67, 2);
104
+ });
105
+ test('273.15 kelvin → reaumur ≈ 0.0', () => {
106
+ expect(converter.convert(273.15, 'kelvin', 'reaumur')).toBeCloseTo(0.0, 10);
107
+ });
108
+ });
109
+ // Testes de conversão Rankine ↔ outras unidades
110
+ describe('Conversões a partir de Rankine', () => {
111
+ test('491.67 rankine → celsius ≈ 0.0', () => {
112
+ expect(converter.convert(491.67, 'rankine', 'celsius')).toBeCloseTo(0.0, 1);
113
+ });
114
+ test('491.67 rankine → fahrenheit ≈ 32.0', () => {
115
+ expect(converter.convert(491.67, 'rankine', 'fahrenheit')).toBeCloseTo(32.0, 1);
116
+ });
117
+ test('491.67 rankine → kelvin ≈ 273.15', () => {
118
+ expect(converter.convert(491.67, 'rankine', 'kelvin')).toBeCloseTo(273.15, 2);
119
+ });
120
+ test('671.67 rankine → celsius ≈ 100.0', () => {
121
+ expect(converter.convert(671.67, 'rankine', 'celsius')).toBeCloseTo(100.0, 1);
122
+ });
123
+ test('0 rankine → kelvin ≈ 0.0', () => {
124
+ expect(converter.convert(0, 'rankine', 'kelvin')).toBeCloseTo(0.0, 10);
125
+ });
126
+ test('0 rankine → celsius ≈ -273.15', () => {
127
+ expect(converter.convert(0, 'rankine', 'celsius')).toBeCloseTo(-273.15, 1);
128
+ });
129
+ });
130
+ // Testes de conversão Réaumur ↔ outras unidades
131
+ describe('Conversões a partir de Réaumur', () => {
132
+ test('0 reaumur → celsius ≈ 0.0', () => {
133
+ expect(converter.convert(0, 'reaumur', 'celsius')).toBeCloseTo(0.0, 10);
134
+ });
135
+ test('0 reaumur → kelvin ≈ 273.15', () => {
136
+ expect(converter.convert(0, 'reaumur', 'kelvin')).toBeCloseTo(273.15, 10);
137
+ });
138
+ test('0 reaumur → fahrenheit ≈ 32.0', () => {
139
+ expect(converter.convert(0, 'reaumur', 'fahrenheit')).toBeCloseTo(32.0, 10);
140
+ });
141
+ test('80 reaumur → celsius ≈ 100.0', () => {
142
+ expect(converter.convert(80, 'reaumur', 'celsius')).toBeCloseTo(100.0, 10);
143
+ });
144
+ test('80 reaumur → fahrenheit ≈ 212.0', () => {
145
+ expect(converter.convert(80, 'reaumur', 'fahrenheit')).toBeCloseTo(212.0, 10);
146
+ });
147
+ test('20 reaumur → celsius ≈ 25.0', () => {
148
+ expect(converter.convert(20, 'reaumur', 'celsius')).toBeCloseTo(25.0, 10);
149
+ });
150
+ test('-32 reaumur → celsius ≈ -40.0', () => {
151
+ expect(converter.convert(-32, 'reaumur', 'celsius')).toBeCloseTo(-40.0, 10);
152
+ });
153
+ });
154
+ // Testes de pontos de referência importantes
155
+ describe('Pontos de referência de temperatura', () => {
156
+ test('Ponto de congelamento da água: 0°C = 32°F = 273.15K', () => {
157
+ expect(converter.convert(0, 'celsius', 'fahrenheit')).toBeCloseTo(32.0, 10);
158
+ expect(converter.convert(0, 'celsius', 'kelvin')).toBeCloseTo(273.15, 10);
159
+ expect(converter.convert(32, 'fahrenheit', 'celsius')).toBeCloseTo(0.0, 10);
160
+ expect(converter.convert(273.15, 'kelvin', 'celsius')).toBeCloseTo(0.0, 10);
161
+ });
162
+ test('Ponto de ebulição da água: 100°C = 212°F = 373.15K', () => {
163
+ expect(converter.convert(100, 'celsius', 'fahrenheit')).toBeCloseTo(212.0, 10);
164
+ expect(converter.convert(100, 'celsius', 'kelvin')).toBeCloseTo(373.15, 10);
165
+ expect(converter.convert(212, 'fahrenheit', 'celsius')).toBeCloseTo(100.0, 10);
166
+ expect(converter.convert(373.15, 'kelvin', 'celsius')).toBeCloseTo(100.0, 10);
167
+ });
168
+ test('Zero absoluto: 0K = -273.15°C = -459.67°F', () => {
169
+ expect(converter.convert(0, 'kelvin', 'celsius')).toBeCloseTo(-273.15, 10);
170
+ expect(converter.convert(0, 'kelvin', 'fahrenheit')).toBeCloseTo(-459.67, 2);
171
+ expect(converter.convert(-273.15, 'celsius', 'kelvin')).toBeCloseTo(0.0, 10);
172
+ expect(converter.convert(-459.67, 'fahrenheit', 'kelvin')).toBeCloseTo(0.0, 2);
173
+ });
174
+ test('Temperatura corporal: 37°C ≈ 98.6°F', () => {
175
+ expect(converter.convert(37, 'celsius', 'fahrenheit')).toBeCloseTo(98.6, 1);
176
+ expect(converter.convert(98.6, 'fahrenheit', 'celsius')).toBeCloseTo(37.0, 1);
177
+ });
178
+ test('Temperatura ambiente: 20°C = 68°F', () => {
179
+ expect(converter.convert(20, 'celsius', 'fahrenheit')).toBeCloseTo(68.0, 10);
180
+ expect(converter.convert(68, 'fahrenheit', 'celsius')).toBeCloseTo(20.0, 10);
181
+ });
182
+ });
183
+ // Testes de conversões bidirecionais
184
+ describe('Conversões bidirecionais', () => {
185
+ test('Conversão bidirecional: celsius ↔ fahrenheit', () => {
186
+ const celsius = 25;
187
+ const fahrenheit = converter.convert(celsius, 'celsius', 'fahrenheit');
188
+ const celsiusNovamente = converter.convert(fahrenheit, 'fahrenheit', 'celsius');
189
+ expect(celsiusNovamente).toBeCloseTo(celsius, 10);
190
+ });
191
+ test('Conversão bidirecional: kelvin ↔ celsius', () => {
192
+ const kelvin = 300;
193
+ const celsius = converter.convert(kelvin, 'kelvin', 'celsius');
194
+ const kelvinNovamente = converter.convert(celsius, 'celsius', 'kelvin');
195
+ expect(kelvinNovamente).toBeCloseTo(kelvin, 10);
196
+ });
197
+ test('Conversão bidirecional: reaumur ↔ celsius', () => {
198
+ const reaumur = 40;
199
+ const celsius = converter.convert(reaumur, 'reaumur', 'celsius');
200
+ const reaumurNovamente = converter.convert(celsius, 'celsius', 'reaumur');
201
+ expect(reaumurNovamente).toBeCloseTo(reaumur, 10);
202
+ });
203
+ test('Conversão bidirecional: rankine ↔ kelvin', () => {
204
+ const rankine = 500;
205
+ const kelvin = converter.convert(rankine, 'rankine', 'kelvin');
206
+ const rankineNovamente = converter.convert(kelvin, 'kelvin', 'rankine');
207
+ expect(rankineNovamente).toBeCloseTo(rankine, 10);
208
+ });
209
+ });
210
+ // Testes de temperaturas extremas
211
+ describe('Temperaturas extremas', () => {
212
+ test('Temperatura muito baixa: -200°C', () => {
213
+ expect(converter.convert(-200, 'celsius', 'kelvin')).toBeCloseTo(73.15, 10);
214
+ expect(converter.convert(-200, 'celsius', 'fahrenheit')).toBeCloseTo(-328.0, 10);
215
+ });
216
+ test('Temperatura muito alta: 1000°C', () => {
217
+ expect(converter.convert(1000, 'celsius', 'kelvin')).toBeCloseTo(1273.15, 10);
218
+ expect(converter.convert(1000, 'celsius', 'fahrenheit')).toBeCloseTo(1832.0, 10);
219
+ });
220
+ test('Temperatura próxima do zero absoluto: 1K', () => {
221
+ expect(converter.convert(1, 'kelvin', 'celsius')).toBeCloseTo(-272.15, 10);
222
+ expect(converter.convert(1, 'kelvin', 'fahrenheit')).toBeCloseTo(-457.87, 2);
223
+ });
224
+ });
225
+ // Testes de precisão decimal
226
+ describe('Precisão decimal', () => {
227
+ test('Conversão com decimais: 36.5°C → °F', () => {
228
+ expect(converter.convert(36.5, 'celsius', 'fahrenheit')).toBeCloseTo(97.7, 1);
229
+ });
230
+ test('Conversão com decimais: 98.6°F → °C', () => {
231
+ expect(converter.convert(98.6, 'fahrenheit', 'celsius')).toBeCloseTo(37.0, 1);
232
+ });
233
+ test('Conversão com decimais: 310.15K → °C', () => {
234
+ expect(converter.convert(310.15, 'kelvin', 'celsius')).toBeCloseTo(37.0, 2);
235
+ });
236
+ });
237
+ // Testes de conversões em cadeia
238
+ describe('Conversões em cadeia', () => {
239
+ test('Cadeia de conversões mantém valor original', () => {
240
+ const valorInicial = 50;
241
+ let resultado = valorInicial;
242
+ // celsius → fahrenheit → kelvin → rankine → reaumur → celsius
243
+ resultado = converter.convert(resultado, 'celsius', 'fahrenheit');
244
+ resultado = converter.convert(resultado, 'fahrenheit', 'kelvin');
245
+ resultado = converter.convert(resultado, 'kelvin', 'rankine');
246
+ resultado = converter.convert(resultado, 'rankine', 'kelvin');
247
+ resultado = converter.convert(resultado, 'kelvin', 'reaumur');
248
+ resultado = converter.convert(resultado, 'reaumur', 'celsius');
249
+ expect(resultado).toBeCloseTo(valorInicial, 8);
250
+ });
251
+ test('Múltiplas conversões Celsius-Fahrenheit', () => {
252
+ let temperatura = 0;
253
+ // 0°C → °F → °C → °F → °C
254
+ temperatura = converter.convert(temperatura, 'celsius', 'fahrenheit'); // 32°F
255
+ temperatura = converter.convert(temperatura, 'fahrenheit', 'celsius'); // 0°C
256
+ temperatura = converter.convert(temperatura, 'celsius', 'fahrenheit'); // 32°F
257
+ temperatura = converter.convert(temperatura, 'fahrenheit', 'celsius'); // 0°C
258
+ expect(temperatura).toBeCloseTo(0.0, 10);
259
+ });
260
+ });
261
+ // Testes de erro - casos inválidos
262
+ describe('Tratamento de erros', () => {
263
+ test('Deve lançar erro para unidade de origem inválida', () => {
264
+ expect(() => {
265
+ converter.convert(100, 'invalid_unit', 'celsius');
266
+ }).toThrow('Unidade de temperatura não encontrada');
267
+ });
268
+ test('Deve lançar erro para unidade de destino inválida', () => {
269
+ expect(() => {
270
+ converter.convert(100, 'celsius', 'invalid_unit');
271
+ }).toThrow('Unidade de temperatura não encontrada');
272
+ });
273
+ test('Deve lançar erro para ambas as unidades inválidas', () => {
274
+ expect(() => {
275
+ converter.convert(100, 'invalid_from', 'invalid_to');
276
+ }).toThrow('Unidade de temperatura não encontrada');
277
+ });
278
+ });
279
+ });
@@ -0,0 +1,4 @@
1
+ export declare class TimeConverter {
2
+ static timeToDecimal(hours: number, minutes: number, seconds: number): number;
3
+ static decimalToTime(decimal: number): string;
4
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeConverter = void 0;
4
+ class TimeConverter {
5
+ static timeToDecimal(hours, minutes, seconds) {
6
+ return hours + (minutes / 60) + (seconds / 3600);
7
+ }
8
+ static decimalToTime(decimal) {
9
+ // Lógica para conversão de decimal para hora
10
+ // Implementação para o modo inverso
11
+ // const decimalValue = parseFloat(decimal);
12
+ const totalHours = decimal;
13
+ const wholeHours = Math.floor(totalHours);
14
+ const decimalPart = totalHours - wholeHours;
15
+ const mins = Math.floor(decimalPart * 60);
16
+ const secs = Math.floor((decimalPart * 60 - mins) * 60);
17
+ const hours = wholeHours;
18
+ const minutes = mins;
19
+ const seconds = secs;
20
+ const formattedHours = hours.toString().padStart(2, '0');
21
+ const formattedMinutes = minutes.toString().padStart(2, '0');
22
+ const formattedSeconds = seconds.toString().padStart(2, '0');
23
+ return `${formattedHours}:${formattedMinutes}:${formattedSeconds}`;
24
+ }
25
+ }
26
+ exports.TimeConverter = TimeConverter;
@@ -0,0 +1,4 @@
1
+ import { ConverterBaseService } from '../../converter-base';
2
+ export declare class VolumeConverter extends ConverterBaseService {
3
+ constructor();
4
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VolumeConverter = void 0;
4
+ const converter_base_1 = require("../../converter-base");
5
+ class VolumeConverter extends converter_base_1.ConverterBaseService {
6
+ constructor() {
7
+ super([
8
+ // Base: mililitros
9
+ { id: 'mililitro', name: 'Mililitro', symbol: 'mL', conversionFactor: 1, isBaseUnit: true },
10
+ { id: 'centilitro', name: 'Centilitro', symbol: 'cL', conversionFactor: 10, isBaseUnit: false },
11
+ { id: 'decilitro', name: 'Decilitro', symbol: 'dL', conversionFactor: 100, isBaseUnit: false },
12
+ { id: 'litro', name: 'Litro', symbol: 'L', conversionFactor: 1000, isBaseUnit: false },
13
+ { id: 'hectolitro', name: 'Hectolitro', symbol: 'hL', conversionFactor: 100000, isBaseUnit: false },
14
+ { id: 'milimetro-cubico', name: 'Milímetro cúbico', symbol: 'mm³', conversionFactor: 0.001, isBaseUnit: false },
15
+ { id: 'centimetro-cubico', name: 'Centímetro cúbico', symbol: 'cm³', conversionFactor: 1, isBaseUnit: false },
16
+ { id: 'decimetro-cubico', name: 'Decímetro cúbico', symbol: 'dm³', conversionFactor: 1000, isBaseUnit: false },
17
+ { id: 'metro-cubico', name: 'Metro cúbico', symbol: 'm³', conversionFactor: 1000000, isBaseUnit: false },
18
+ { id: 'colher-cha-eua', name: 'Colher de chá (EUA)', symbol: 'tsp (US)', conversionFactor: 4.92892159375, isBaseUnit: false },
19
+ { id: 'colher-sopa-eua', name: 'Colher de sopa (EUA)', symbol: 'Tbsp (US)', conversionFactor: 14.78676478125, isBaseUnit: false },
20
+ { id: 'onca-fluida-eua', name: 'Onça fluida (EUA)', symbol: 'fl oz (US)', conversionFactor: 29.5735295625, isBaseUnit: false },
21
+ { id: 'xicara-eua', name: 'Xícara (EUA)', symbol: 'cup (US)', conversionFactor: 236.5882365, isBaseUnit: false },
22
+ { id: 'pinta-eua', name: 'Pinta líquida (EUA)', symbol: 'pt (US)', conversionFactor: 473.176473, isBaseUnit: false },
23
+ { id: 'quarto-eua', name: 'Quarto de galão (EUA)', symbol: 'qt (US)', conversionFactor: 946.352946, isBaseUnit: false },
24
+ { id: 'galao-liquido-eua', name: 'Galão líquido (EUA)', symbol: 'gal (US)', conversionFactor: 3785.411784, isBaseUnit: false },
25
+ { id: 'galao-seco-eua', name: 'Galão seco (EUA)', symbol: 'dry gal (US)', conversionFactor: 4404.8838, isBaseUnit: false },
26
+ { id: 'polegada-cubica', name: 'Polegada cúbica', symbol: 'in³', conversionFactor: 16.387064, isBaseUnit: false },
27
+ { id: 'pe-cubico', name: 'Pé cúbico', symbol: 'ft³', conversionFactor: 28316.846592, isBaseUnit: false },
28
+ { id: 'jarda-cubica', name: 'Jarda cúbica', symbol: 'yd³', conversionFactor: 764554.857984, isBaseUnit: false },
29
+ { id: 'acre-pe-cubico', name: 'Acre-pé cúbico', symbol: 'ac⋅ft', conversionFactor: 1233481836.54784, isBaseUnit: false },
30
+ { id: 'colher-cha-imperial', name: 'Colher de chá (Imperial)', symbol: 'tsp (UK)', conversionFactor: 5.91939, isBaseUnit: false },
31
+ { id: 'colher-sopa-imperial', name: 'Colher de sopa (Imperial)', symbol: 'Tbsp (UK)', conversionFactor: 17.7582, isBaseUnit: false },
32
+ { id: 'onca-fluida-imperial', name: 'Onça fluida (Imperial)', symbol: 'fl oz (UK)', conversionFactor: 28.4130625, isBaseUnit: false },
33
+ { id: 'pinta-imperial', name: 'Pinta (Imperial)', symbol: 'pt (UK)', conversionFactor: 568.26125, isBaseUnit: false },
34
+ { id: 'quarto-imperial', name: 'Quarto de galão (Imperial)', symbol: 'qt (UK)', conversionFactor: 1136.5225, isBaseUnit: false },
35
+ { id: 'galao-imperial', name: 'Galão (Imperial)', symbol: 'gal (UK)', conversionFactor: 4546.09, isBaseUnit: false },
36
+ ]);
37
+ }
38
+ }
39
+ exports.VolumeConverter = VolumeConverter;