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,223 @@
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('power');
6
+ describe('Conversão completa entre unidades de potência', () => {
7
+ // Testes de conversão para a mesma unidade
8
+ describe('Conversões para a mesma unidade', () => {
9
+ test('1 watt → watt ≈ 1.0', () => {
10
+ expect(converter.convert(1, 'watt', 'watt')).toBeCloseTo(1.0, 10);
11
+ });
12
+ test('1 quilowatt → quilowatt ≈ 1.0', () => {
13
+ expect(converter.convert(1, 'quilowatt', 'quilowatt')).toBeCloseTo(1.0, 10);
14
+ });
15
+ test('1 cavalo-vapor-eua → cavalo-vapor-eua ≈ 1.0', () => {
16
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'cavalo-vapor-eua')).toBeCloseTo(1.0, 10);
17
+ });
18
+ test('1 libra-pe-por-minuto → libra-pe-por-minuto ≈ 1.0', () => {
19
+ expect(converter.convert(1, 'libra-pe-por-minuto', 'libra-pe-por-minuto')).toBeCloseTo(1.0, 10);
20
+ });
21
+ test('1 btu-por-minuto → btu-por-minuto ≈ 1.0', () => {
22
+ expect(converter.convert(1, 'btu-por-minuto', 'btu-por-minuto')).toBeCloseTo(1.0, 10);
23
+ });
24
+ });
25
+ // Conversões básicas - unidade base: watt
26
+ describe('Conversões para unidade base (watt)', () => {
27
+ test('1 quilowatt → watt = 1000', () => {
28
+ expect(converter.convert(1, 'quilowatt', 'watt')).toBeCloseTo(1000, 10);
29
+ });
30
+ test('1 cavalo-vapor-eua → watt ≈ 745.69987158227022', () => {
31
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'watt')).toBeCloseTo(745.69987158227022, 8);
32
+ });
33
+ test('1 libra-pe-por-minuto → watt ≈ 0.0225969658', () => {
34
+ expect(converter.convert(1, 'libra-pe-por-minuto', 'watt')).toBeCloseTo(0.0225969658, 10);
35
+ });
36
+ test('1 btu-por-minuto → watt ≈ 17.5842666667', () => {
37
+ expect(converter.convert(1, 'btu-por-minuto', 'watt')).toBeCloseTo(17.5842666667, 8);
38
+ });
39
+ });
40
+ // Conversões inversas da unidade base
41
+ describe('Conversões da unidade base (watt)', () => {
42
+ test('1000 watts → quilowatt = 1', () => {
43
+ expect(converter.convert(1000, 'watt', 'quilowatt')).toBeCloseTo(1, 10);
44
+ });
45
+ test('745.69987158227022 watts → cavalo-vapor-eua = 1', () => {
46
+ expect(converter.convert(745.69987158227022, 'watt', 'cavalo-vapor-eua')).toBeCloseTo(1, 8);
47
+ });
48
+ test('0.0225969658 watts → libra-pe-por-minuto = 1', () => {
49
+ expect(converter.convert(0.0225969658, 'watt', 'libra-pe-por-minuto')).toBeCloseTo(1, 8);
50
+ });
51
+ test('17.5842666667 watts → btu-por-minuto = 1', () => {
52
+ expect(converter.convert(17.5842666667, 'watt', 'btu-por-minuto')).toBeCloseTo(1, 8);
53
+ });
54
+ });
55
+ // Conversões entre quilowatt e outras unidades
56
+ describe('Conversões envolvendo quilowatt', () => {
57
+ test('1 quilowatt → cavalo-vapor-eua ≈ 1.34102209', () => {
58
+ expect(converter.convert(1, 'quilowatt', 'cavalo-vapor-eua')).toBeCloseTo(1.34102209, 6);
59
+ });
60
+ test('1 cavalo-vapor-eua → quilowatt ≈ 0.74569987', () => {
61
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'quilowatt')).toBeCloseTo(0.74569987, 6);
62
+ });
63
+ test('1 quilowatt → btu-por-minuto ≈ 56.8690272', () => {
64
+ expect(converter.convert(1, 'quilowatt', 'btu-por-minuto')).toBeCloseTo(56.869019274698466, 6);
65
+ });
66
+ test('1 quilowatt → libra-pe-por-minuto ≈ 44253.728967452786', () => {
67
+ expect(converter.convert(1, 'quilowatt', 'libra-pe-por-minuto')).toBeCloseTo(44253.728967452786, 4);
68
+ });
69
+ });
70
+ // Conversões entre unidades imperiais/americanas
71
+ describe('Conversões entre unidades imperiais/americanas', () => {
72
+ test('1 cavalo-vapor-eua → btu-por-minuto ≈ 42.407220370152295', () => {
73
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'btu-por-minuto')).toBeCloseTo(42.407220370152295, 6);
74
+ });
75
+ test('1 btu-por-minuto → cavalo-vapor-eua ≈ 0.02358089002937423', () => {
76
+ expect(converter.convert(1, 'btu-por-minuto', 'cavalo-vapor-eua')).toBeCloseTo(0.02358089002937423, 7);
77
+ });
78
+ test('1 cavalo-vapor-eua → libra-pe-por-minuto ≈ 33000', () => {
79
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'libra-pe-por-minuto')).toBeCloseTo(33000, 2);
80
+ });
81
+ test('1 libra-pe-por-minuto → btu-por-minuto ≈ 0.001285067', () => {
82
+ expect(converter.convert(1, 'libra-pe-por-minuto', 'btu-por-minuto')).toBeCloseTo(0.001285067, 8);
83
+ });
84
+ });
85
+ // Conversões comuns do cotidiano
86
+ describe('Conversões comuns do cotidiano', () => {
87
+ test('2000 watts → quilowatt = 2', () => {
88
+ expect(converter.convert(2000, 'watt', 'quilowatt')).toBeCloseTo(2, 10);
89
+ });
90
+ test('5 quilowatts → watts = 5000', () => {
91
+ expect(converter.convert(5, 'quilowatt', 'watt')).toBeCloseTo(5000, 10);
92
+ });
93
+ test('10 cavalos-vapor → quilowatt ≈ 7.4569987', () => {
94
+ expect(converter.convert(10, 'cavalo-vapor-eua', 'quilowatt')).toBeCloseTo(7.4569987, 6);
95
+ });
96
+ test('100 cavalos-vapor → watts ≈ 74569.987', () => {
97
+ expect(converter.convert(100, 'cavalo-vapor-eua', 'watt')).toBeCloseTo(74569.987, 3);
98
+ });
99
+ test('60 BTU/min → watts ≈ 1055.056', () => {
100
+ expect(converter.convert(60, 'btu-por-minuto', 'watt')).toBeCloseTo(1055.056, 3);
101
+ });
102
+ });
103
+ // Testes com valores decimais
104
+ describe('Conversões com valores decimais', () => {
105
+ test('0.5 quilowatt → watt = 500', () => {
106
+ expect(converter.convert(0.5, 'quilowatt', 'watt')).toBeCloseTo(500, 10);
107
+ });
108
+ test('1.5 cavalos-vapor → watts ≈ 1118.5498', () => {
109
+ expect(converter.convert(1.5, 'cavalo-vapor-eua', 'watt')).toBeCloseTo(1118.5498, 4);
110
+ });
111
+ test('2.25 quilowatts → cavalos-vapor ≈ 3.01730', () => {
112
+ expect(converter.convert(2.25, 'quilowatt', 'cavalo-vapor-eua')).toBeCloseTo(3.01730, 5);
113
+ });
114
+ test('0.75 BTU/min → watts ≈ 13.1882', () => {
115
+ expect(converter.convert(0.75, 'btu-por-minuto', 'watt')).toBeCloseTo(13.1882, 4);
116
+ });
117
+ });
118
+ // Testes com valores grandes
119
+ describe('Conversões com valores grandes', () => {
120
+ test('1000 quilowatts → watts = 1000000', () => {
121
+ expect(converter.convert(1000, 'quilowatt', 'watt')).toBeCloseTo(1000000, 10);
122
+ });
123
+ test('5000 cavalos-vapor → quilowatts ≈ 3728.4994', () => {
124
+ expect(converter.convert(5000, 'cavalo-vapor-eua', 'quilowatt')).toBeCloseTo(3728.4994, 4);
125
+ });
126
+ test('10000 BTU/min → quilowatts ≈ 175.8427', () => {
127
+ expect(converter.convert(10000, 'btu-por-minuto', 'quilowatt')).toBeCloseTo(175.8427, 4);
128
+ });
129
+ test('1000000 libra-pé/min → quilowatts ≈ 22.5970', () => {
130
+ expect(converter.convert(1000000, 'libra-pe-por-minuto', 'quilowatt')).toBeCloseTo(22.5970, 4);
131
+ });
132
+ });
133
+ // Testes com valores pequenos
134
+ describe('Conversões com valores pequenos', () => {
135
+ test('1 watt → quilowatt = 0.001', () => {
136
+ expect(converter.convert(1, 'watt', 'quilowatt')).toBeCloseTo(0.001, 10);
137
+ });
138
+ test('0.001 cavalo-vapor → watts ≈ 0.7457', () => {
139
+ expect(converter.convert(0.001, 'cavalo-vapor-eua', 'watt')).toBeCloseTo(0.7457, 4);
140
+ });
141
+ test('0.1 BTU/min → watts ≈ 1.7584', () => {
142
+ expect(converter.convert(0.1, 'btu-por-minuto', 'watt')).toBeCloseTo(1.7584, 4);
143
+ });
144
+ test('10 libra-pé/min → watts ≈ 0.2259697', () => {
145
+ expect(converter.convert(10, 'libra-pe-por-minuto', 'watt')).toBeCloseTo(0.2259697, 7);
146
+ });
147
+ });
148
+ // Testes de casos extremos
149
+ describe('Casos extremos', () => {
150
+ test('0 watts → quilowatt = 0', () => {
151
+ expect(converter.convert(0, 'watt', 'quilowatt')).toBe(0);
152
+ });
153
+ test('0 cavalos-vapor → watts = 0', () => {
154
+ expect(converter.convert(0, 'cavalo-vapor-eua', 'watt')).toBe(0);
155
+ });
156
+ test('Número muito grande: 999999 watts → quilowatt = 999.999', () => {
157
+ expect(converter.convert(999999, 'watt', 'quilowatt')).toBeCloseTo(999.999, 3);
158
+ });
159
+ test('Número muito pequeno: 0.000001 quilowatt → watt = 0.001', () => {
160
+ expect(converter.convert(0.000001, 'quilowatt', 'watt')).toBeCloseTo(0.001, 10);
161
+ });
162
+ });
163
+ // Testes de precisão
164
+ describe('Testes de precisão', () => {
165
+ test('Conversão ida e volta: watt → quilowatt → watt', () => {
166
+ const original = 1500;
167
+ const converted = converter.convert(original, 'watt', 'quilowatt');
168
+ const backConverted = converter.convert(converted, 'quilowatt', 'watt');
169
+ expect(backConverted).toBeCloseTo(original, 8);
170
+ });
171
+ test('Conversão ida e volta: cavalo-vapor → watt → cavalo-vapor', () => {
172
+ const original = 2.5;
173
+ const converted = converter.convert(original, 'cavalo-vapor-eua', 'watt');
174
+ const backConverted = converter.convert(converted, 'watt', 'cavalo-vapor-eua');
175
+ expect(backConverted).toBeCloseTo(original, 8);
176
+ });
177
+ test('Conversão ida e volta: BTU/min → quilowatt → BTU/min', () => {
178
+ const original = 100;
179
+ const converted = converter.convert(original, 'btu-por-minuto', 'quilowatt');
180
+ const backConverted = converter.convert(converted, 'quilowatt', 'btu-por-minuto');
181
+ expect(backConverted).toBeCloseTo(original, 8);
182
+ });
183
+ test('Conversão ida e volta: libra-pé/min → watt → libra-pé/min', () => {
184
+ const original = 50000;
185
+ const converted = converter.convert(original, 'libra-pe-por-minuto', 'watt');
186
+ const backConverted = converter.convert(converted, 'watt', 'libra-pe-por-minuto');
187
+ expect(backConverted).toBeCloseTo(original, 6);
188
+ });
189
+ });
190
+ // Testes de equivalências conhecidas
191
+ describe('Equivalências conhecidas', () => {
192
+ test('1 quilowatt = 1000 watts', () => {
193
+ expect(converter.convert(1, 'quilowatt', 'watt')).toBeCloseTo(1000, 10);
194
+ });
195
+ test('1 cavalo-vapor ≈ 746 watts (aproximadamente)', () => {
196
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'watt')).toBeCloseTo(746, 0);
197
+ });
198
+ test('1 quilowatt ≈ 1.34 cavalos-vapor (aproximadamente)', () => {
199
+ expect(converter.convert(1, 'quilowatt', 'cavalo-vapor-eua')).toBeCloseTo(1.34, 2);
200
+ });
201
+ test('1 cavalo-vapor ≈ 33000 libra-pé/min (definição clássica)', () => {
202
+ expect(converter.convert(1, 'cavalo-vapor-eua', 'libra-pe-por-minuto')).toBeCloseTo(33000, 1);
203
+ });
204
+ test('1 BTU/min ≈ 17.58 watts (aproximadamente)', () => {
205
+ expect(converter.convert(1, 'btu-por-minuto', 'watt')).toBeCloseTo(17.58, 2);
206
+ });
207
+ });
208
+ // Testes específicos de engenharia
209
+ describe('Aplicações de engenharia', () => {
210
+ test('Motor de 5 HP → quilowatts ≈ 3.728', () => {
211
+ expect(converter.convert(5, 'cavalo-vapor-eua', 'quilowatt')).toBeCloseTo(3.728, 3);
212
+ });
213
+ test('Aquecedor de 3000 watts → BTU/min ≈ 170.6070578240954', () => {
214
+ expect(converter.convert(3000, 'watt', 'btu-por-minuto')).toBeCloseTo(170.6070578240954, 2);
215
+ });
216
+ test('Sistema de 50 kW → cavalos-vapor ≈ 67.05', () => {
217
+ expect(converter.convert(50, 'quilowatt', 'cavalo-vapor-eua')).toBeCloseTo(67.05, 2);
218
+ });
219
+ test('Bomba de 200 HP → quilowatts ≈ 149.14', () => {
220
+ expect(converter.convert(200, 'cavalo-vapor-eua', 'quilowatt')).toBeCloseTo(149.14, 2);
221
+ });
222
+ });
223
+ });
@@ -0,0 +1,4 @@
1
+ import { ConverterBaseService } from '../../converter-base';
2
+ export declare class Pressure extends ConverterBaseService {
3
+ constructor();
4
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Pressure = void 0;
4
+ const converter_base_1 = require("../../converter-base");
5
+ class Pressure extends converter_base_1.ConverterBaseService {
6
+ constructor() {
7
+ super([
8
+ // Base: Pascal
9
+ { id: 'pascal', name: 'Pascal', symbol: 'Pa', conversionFactor: 1, isBaseUnit: true },
10
+ { id: 'quilopascal', name: 'Quilopascal', symbol: 'kPa', conversionFactor: 1000, isBaseUnit: false },
11
+ { id: 'bar', name: 'Bar', symbol: 'bar', conversionFactor: 100000, isBaseUnit: false },
12
+ { id: 'atmosfera', name: 'Atmosfera padrão', symbol: 'atm', conversionFactor: 101325, isBaseUnit: false },
13
+ { id: 'milimetro-de-mercurio', name: 'Milímetro de mercúrio', symbol: 'mmHg', conversionFactor: 133.322387415, isBaseUnit: false },
14
+ { id: 'psi', name: 'Libra por polegada quadrada', symbol: 'psi', conversionFactor: 6894.76, isBaseUnit: false },
15
+ ]);
16
+ }
17
+ }
18
+ exports.Pressure = Pressure;
@@ -0,0 +1,107 @@
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('pressure');
6
+ describe('Conversão entre unidades de pressão', () => {
7
+ // Testes de conversão para a mesma unidade
8
+ describe('Conversões para a mesma unidade', () => {
9
+ test('1 pascal → pascal ≈ 1.0', () => {
10
+ expect(converter.convert(1, 'pascal', 'pascal')).toBeCloseTo(1.0, 10);
11
+ });
12
+ test('1 bar → bar ≈ 1.0', () => {
13
+ expect(converter.convert(1, 'bar', 'bar')).toBeCloseTo(1.0, 10);
14
+ });
15
+ test('1 psi → psi ≈ 1.0', () => {
16
+ expect(converter.convert(1, 'psi', 'psi')).toBeCloseTo(1.0, 10);
17
+ });
18
+ });
19
+ // Conversões para a unidade base (Pascal)
20
+ describe('Conversões para Pascal', () => {
21
+ test('1 quilopascal → pascal = 1000', () => {
22
+ expect(converter.convert(1, 'quilopascal', 'pascal')).toBeCloseTo(1000, 10);
23
+ });
24
+ test('1 bar → pascal = 100000', () => {
25
+ expect(converter.convert(1, 'bar', 'pascal')).toBeCloseTo(100000, 10);
26
+ });
27
+ test('1 atmosfera → pascal = 101325', () => {
28
+ expect(converter.convert(1, 'atmosfera', 'pascal')).toBeCloseTo(101325, 10);
29
+ });
30
+ test('1 mmHg → pascal ≈ 133.322387415', () => {
31
+ expect(converter.convert(1, 'milimetro-de-mercurio', 'pascal')).toBeCloseTo(133.322387415, 9);
32
+ });
33
+ test('1 psi → pascal ≈ 6894.76', () => {
34
+ expect(converter.convert(1, 'psi', 'pascal')).toBeCloseTo(6894.76, 2);
35
+ });
36
+ });
37
+ // Conversões da unidade base para outras
38
+ describe('Conversões a partir do Pascal', () => {
39
+ test('1000 pascal → quilopascal = 1', () => {
40
+ expect(converter.convert(1000, 'pascal', 'quilopascal')).toBeCloseTo(1, 10);
41
+ });
42
+ test('100000 pascal → bar = 1', () => {
43
+ expect(converter.convert(100000, 'pascal', 'bar')).toBeCloseTo(1, 10);
44
+ });
45
+ test('101325 pascal → atmosfera = 1', () => {
46
+ expect(converter.convert(101325, 'pascal', 'atmosfera')).toBeCloseTo(1, 10);
47
+ });
48
+ test('133.322387415 pascal → mmHg = 1', () => {
49
+ expect(converter.convert(133.322387415, 'pascal', 'milimetro-de-mercurio')).toBeCloseTo(1, 9);
50
+ });
51
+ test('6894.76 pascal → psi = 1', () => {
52
+ expect(converter.convert(6894.76, 'pascal', 'psi')).toBeCloseTo(1, 2);
53
+ });
54
+ });
55
+ // Casos típicos e valores variados
56
+ describe('Cenários típicos e diversos', () => {
57
+ test('2 bar → atmosfera ≈ 1.9738465334320257', () => {
58
+ expect(converter.convert(2, 'bar', 'atmosfera')).toBeCloseTo(1.9738465334320257, 6);
59
+ });
60
+ test('760 mmHg → atmosfera = 1', () => {
61
+ expect(converter.convert(760, 'milimetro-de-mercurio', 'atmosfera')).toBeCloseTo(1, 4);
62
+ });
63
+ test('14.7 psi → atmosfera ≈ 1', () => {
64
+ expect(converter.convert(14.7, 'psi', 'atmosfera')).toBeCloseTo(1, 1);
65
+ });
66
+ test('500000 pascal → bar = 5', () => {
67
+ expect(converter.convert(500000, 'pascal', 'bar')).toBeCloseTo(5, 10);
68
+ });
69
+ test('0.5 bar → quilopascal = 50', () => {
70
+ expect(converter.convert(0.5, 'bar', 'quilopascal')).toBeCloseTo(50, 10);
71
+ });
72
+ });
73
+ // Testes de precisão e round-trip
74
+ describe('Conversões de ida e volta', () => {
75
+ test('psi → pascal → psi', () => {
76
+ const original = 25;
77
+ const converted = converter.convert(original, 'psi', 'pascal');
78
+ const back = converter.convert(converted, 'pascal', 'psi');
79
+ expect(back).toBeCloseTo(original, 6);
80
+ });
81
+ test('bar → pascal → bar', () => {
82
+ const original = 3.2;
83
+ const converted = converter.convert(original, 'bar', 'pascal');
84
+ const back = converter.convert(converted, 'pascal', 'bar');
85
+ expect(back).toBeCloseTo(original, 8);
86
+ });
87
+ test('milimetro-de-mercurio → pascal → milimetro-de-mercurio', () => {
88
+ const original = 120;
89
+ const converted = converter.convert(original, 'milimetro-de-mercurio', 'pascal');
90
+ const back = converter.convert(converted, 'pascal', 'milimetro-de-mercurio');
91
+ expect(back).toBeCloseTo(original, 8);
92
+ });
93
+ });
94
+ // Casos extremos
95
+ describe('Testes extremos e limites operacionais', () => {
96
+ test('0 pascal → qualquer unidade = 0', () => {
97
+ expect(converter.convert(0, 'pascal', 'psi')).toBe(0);
98
+ expect(converter.convert(0, 'pascal', 'bar')).toBe(0);
99
+ });
100
+ test('Valor muito grande → psi', () => {
101
+ expect(converter.convert(10000000, 'pascal', 'psi')).toBeCloseTo(1450.377, 2);
102
+ });
103
+ test('Valor muito pequeno → atmosfera', () => {
104
+ expect(converter.convert(0.001, 'pascal', 'atmosfera')).toBeCloseTo(9.8692e-9, 10);
105
+ });
106
+ });
107
+ });
@@ -0,0 +1,4 @@
1
+ import { ConverterBaseService } from '../../converter-base';
2
+ export declare class SpeedConverter extends ConverterBaseService {
3
+ constructor();
4
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpeedConverter = void 0;
4
+ const converter_base_1 = require("../../converter-base");
5
+ class SpeedConverter extends converter_base_1.ConverterBaseService {
6
+ constructor() {
7
+ super([
8
+ // Base: m/s (metro por segundo)
9
+ { id: 'centimetro-por-segundo', name: 'Centímetro por segundo', symbol: 'cm/s', conversionFactor: 0.01, isBaseUnit: false },
10
+ { id: 'metro-por-segundo', name: 'Metro por segundo', symbol: 'm/s', conversionFactor: 1, isBaseUnit: true },
11
+ { id: 'quilometro-por-hora', name: 'Quilômetro por hora', symbol: 'km/h', conversionFactor: 0.2777777778, isBaseUnit: false },
12
+ { id: 'pes-por-segundo', name: 'Pés por segundo', symbol: 'ft/s', conversionFactor: 0.3048, isBaseUnit: false },
13
+ { id: 'milha-por-hora', name: 'Milha por hora', symbol: 'mph', conversionFactor: 0.44704, isBaseUnit: false },
14
+ { id: 'nos', name: 'Nó náutico', symbol: 'kn', conversionFactor: 0.514444, isBaseUnit: false },
15
+ { id: 'mach', name: 'Mach (nível do mar)', symbol: 'Mach', conversionFactor: 340.29, isBaseUnit: false },
16
+ { id: 'velocidade-da-luz', name: 'Velocidade da luz no vácuo', symbol: 'c', conversionFactor: 299792458, isBaseUnit: false },
17
+ { id: 'quilometro-por-segundo', name: 'Quilômetro por segundo', symbol: 'km/s', conversionFactor: 1000, isBaseUnit: false },
18
+ { id: 'polegada-por-segundo', name: 'Polegada por segundo', symbol: 'in/s', conversionFactor: 0.0254, isBaseUnit: false },
19
+ ]);
20
+ }
21
+ }
22
+ exports.SpeedConverter = SpeedConverter;
@@ -0,0 +1,257 @@
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('speed');
6
+ describe('Conversão completa entre unidades de velocidade', () => {
7
+ // Testes de conversão para a mesma unidade
8
+ describe('Conversões para a mesma unidade', () => {
9
+ test('1 metro-por-segundo → metro-por-segundo ≈ 1.0', () => {
10
+ expect(converter.convert(1, 'metro-por-segundo', 'metro-por-segundo')).toBeCloseTo(1.0, 10);
11
+ });
12
+ test('1 quilometro-por-hora → quilometro-por-hora ≈ 1.0', () => {
13
+ expect(converter.convert(1, 'quilometro-por-hora', 'quilometro-por-hora')).toBeCloseTo(1.0, 10);
14
+ });
15
+ test('1 milha-por-hora → milha-por-hora ≈ 1.0', () => {
16
+ expect(converter.convert(1, 'milha-por-hora', 'milha-por-hora')).toBeCloseTo(1.0, 10);
17
+ });
18
+ test('1 nos → nos ≈ 1.0', () => {
19
+ expect(converter.convert(1, 'nos', 'nos')).toBeCloseTo(1.0, 10);
20
+ });
21
+ test('1 mach → mach ≈ 1.0', () => {
22
+ expect(converter.convert(1, 'mach', 'mach')).toBeCloseTo(1.0, 10);
23
+ });
24
+ });
25
+ // Conversões básicas - unidade base: metro por segundo
26
+ describe('Conversões para unidade base (metro por segundo)', () => {
27
+ test('1 centimetro-por-segundo → metro-por-segundo = 0.01', () => {
28
+ expect(converter.convert(1, 'centimetro-por-segundo', 'metro-por-segundo')).toBeCloseTo(0.01, 10);
29
+ });
30
+ test('1 quilometro-por-hora → metro-por-segundo ≈ 0.2777777778', () => {
31
+ expect(converter.convert(1, 'quilometro-por-hora', 'metro-por-segundo')).toBeCloseTo(0.2777777778, 10);
32
+ });
33
+ test('1 pes-por-segundo → metro-por-segundo ≈ 0.3048', () => {
34
+ expect(converter.convert(1, 'pes-por-segundo', 'metro-por-segundo')).toBeCloseTo(0.3048, 10);
35
+ });
36
+ test('1 milha-por-hora → metro-por-segundo ≈ 0.44704', () => {
37
+ expect(converter.convert(1, 'milha-por-hora', 'metro-por-segundo')).toBeCloseTo(0.44704, 10);
38
+ });
39
+ test('1 nos → metro-por-segundo ≈ 0.514444', () => {
40
+ expect(converter.convert(1, 'nos', 'metro-por-segundo')).toBeCloseTo(0.514444, 10);
41
+ });
42
+ test('1 mach → metro-por-segundo ≈ 340.29', () => {
43
+ expect(converter.convert(1, 'mach', 'metro-por-segundo')).toBeCloseTo(340.29, 10);
44
+ });
45
+ test('1 quilometro-por-segundo → metro-por-segundo = 1000', () => {
46
+ expect(converter.convert(1, 'quilometro-por-segundo', 'metro-por-segundo')).toBeCloseTo(1000, 10);
47
+ });
48
+ test('1 polegada-por-segundo → metro-por-segundo ≈ 0.0254', () => {
49
+ expect(converter.convert(1, 'polegada-por-segundo', 'metro-por-segundo')).toBeCloseTo(0.0254, 10);
50
+ });
51
+ test('1 velocidade-da-luz → metro-por-segundo = 299792458', () => {
52
+ expect(converter.convert(1, 'velocidade-da-luz', 'metro-por-segundo')).toBeCloseTo(299792458, 10);
53
+ });
54
+ });
55
+ // Conversões inversas da unidade base
56
+ describe('Conversões da unidade base (metro por segundo)', () => {
57
+ test('0.01 metro-por-segundo → centimetro-por-segundo = 1', () => {
58
+ expect(converter.convert(0.01, 'metro-por-segundo', 'centimetro-por-segundo')).toBeCloseTo(1, 10);
59
+ });
60
+ test('0.2777777778 metro-por-segundo → quilometro-por-hora = 1', () => {
61
+ expect(converter.convert(0.2777777778, 'metro-por-segundo', 'quilometro-por-hora')).toBeCloseTo(1, 8);
62
+ });
63
+ test('0.3048 metro-por-segundo → pes-por-segundo = 1', () => {
64
+ expect(converter.convert(0.3048, 'metro-por-segundo', 'pes-por-segundo')).toBeCloseTo(1, 10);
65
+ });
66
+ test('0.44704 metro-por-segundo → milha-por-hora = 1', () => {
67
+ expect(converter.convert(0.44704, 'metro-por-segundo', 'milha-por-hora')).toBeCloseTo(1, 10);
68
+ });
69
+ test('340.29 metro-por-segundo → mach = 1', () => {
70
+ expect(converter.convert(340.29, 'metro-por-segundo', 'mach')).toBeCloseTo(1, 10);
71
+ });
72
+ test('1000 metro-por-segundo → quilometro-por-segundo = 1', () => {
73
+ expect(converter.convert(1000, 'metro-por-segundo', 'quilometro-por-segundo')).toBeCloseTo(1, 10);
74
+ });
75
+ });
76
+ // Conversões comuns do cotidiano
77
+ describe('Conversões comuns do cotidiano', () => {
78
+ test('100 km/h → m/s ≈ 27.78', () => {
79
+ expect(converter.convert(100, 'quilometro-por-hora', 'metro-por-segundo')).toBeCloseTo(27.78, 2);
80
+ });
81
+ test('60 milhas/h → km/h ≈ 96.56', () => {
82
+ expect(converter.convert(60, 'milha-por-hora', 'quilometro-por-hora')).toBeCloseTo(96.56, 2);
83
+ });
84
+ test('50 m/s → km/h = 179.9999999856', () => {
85
+ expect(converter.convert(50, 'metro-por-segundo', 'quilometro-por-hora')).toBeCloseTo(179.9999999856, 10);
86
+ });
87
+ test('30 nós → km/h ≈ 55.56', () => {
88
+ expect(converter.convert(30, 'nos', 'quilometro-por-hora')).toBeCloseTo(55.56, 2);
89
+ });
90
+ test('10 pés/s → m/s ≈ 3.048', () => {
91
+ expect(converter.convert(10, 'pes-por-segundo', 'metro-por-segundo')).toBeCloseTo(3.048, 10);
92
+ });
93
+ });
94
+ // Conversões entre unidades imperiais/americanas
95
+ describe('Conversões entre unidades imperiais/americanas', () => {
96
+ test('60 mph → pés/s = 88', () => {
97
+ expect(converter.convert(60, 'milha-por-hora', 'pes-por-segundo')).toBeCloseTo(88, 2);
98
+ });
99
+ test('100 pés/s → mph ≈ 68.18', () => {
100
+ expect(converter.convert(100, 'pes-por-segundo', 'milha-por-hora')).toBeCloseTo(68.18, 2);
101
+ });
102
+ test('12 polegadas/s → pés/s = 1', () => {
103
+ expect(converter.convert(12, 'polegada-por-segundo', 'pes-por-segundo')).toBeCloseTo(1, 10);
104
+ });
105
+ test('1 pé/s → polegadas/s = 12', () => {
106
+ expect(converter.convert(1, 'pes-por-segundo', 'polegada-por-segundo')).toBeCloseTo(12, 10);
107
+ });
108
+ });
109
+ // Conversões náuticas e aeronáuticas
110
+ describe('Conversões náuticas e aeronáuticas', () => {
111
+ test('1 nó → km/h ≈ 1.852', () => {
112
+ expect(converter.convert(1, 'nos', 'quilometro-por-hora')).toBeCloseTo(1.852, 3);
113
+ });
114
+ test('100 nós → mph ≈ 115.08', () => {
115
+ expect(converter.convert(100, 'nos', 'milha-por-hora')).toBeCloseTo(115.08, 2);
116
+ });
117
+ test('Mach 1 → km/h ≈ 1225.04', () => {
118
+ expect(converter.convert(1, 'mach', 'quilometro-por-hora')).toBeCloseTo(1225.04, 2);
119
+ });
120
+ test('Mach 2 → m/s ≈ 680.58', () => {
121
+ expect(converter.convert(2, 'mach', 'metro-por-segundo')).toBeCloseTo(680.58, 2);
122
+ });
123
+ test('500 mph → Mach ≈ 0.6568515090070234', () => {
124
+ expect(converter.convert(500, 'milha-por-hora', 'mach')).toBeCloseTo(0.6568515090070234, 3);
125
+ });
126
+ });
127
+ // Testes com valores decimais
128
+ describe('Conversões com valores decimais', () => {
129
+ test('0.5 m/s → cm/s = 50', () => {
130
+ expect(converter.convert(0.5, 'metro-por-segundo', 'centimetro-por-segundo')).toBeCloseTo(50, 10);
131
+ });
132
+ test('2.5 km/h → m/s ≈ 0.694', () => {
133
+ expect(converter.convert(2.5, 'quilometro-por-hora', 'metro-por-segundo')).toBeCloseTo(0.694, 3);
134
+ });
135
+ test('1.5 Mach → km/h ≈ 1837.57', () => {
136
+ expect(converter.convert(1.5, 'mach', 'quilometro-por-hora')).toBeCloseTo(1837.57, 2);
137
+ });
138
+ test('0.25 nós → m/s ≈ 0.1286', () => {
139
+ expect(converter.convert(0.25, 'nos', 'metro-por-segundo')).toBeCloseTo(0.1286, 4);
140
+ });
141
+ });
142
+ // Testes com velocidades altas
143
+ describe('Conversões com velocidades altas', () => {
144
+ test('1000 km/h → m/s ≈ 277.78', () => {
145
+ expect(converter.convert(1000, 'quilometro-por-hora', 'metro-por-segundo')).toBeCloseTo(277.78, 2);
146
+ });
147
+ test('Mach 5 → km/h ≈ 6125.22', () => {
148
+ expect(converter.convert(5, 'mach', 'quilometro-por-hora')).toBeCloseTo(6125.22, 2);
149
+ });
150
+ test('10 km/s → m/s = 10000', () => {
151
+ expect(converter.convert(10, 'quilometro-por-segundo', 'metro-por-segundo')).toBeCloseTo(10000, 10);
152
+ });
153
+ test('0.1c (10% velocidade da luz) → km/s ≈ 29979.2458', () => {
154
+ expect(converter.convert(0.1, 'velocidade-da-luz', 'quilometro-por-segundo')).toBeCloseTo(29979.2458, 1);
155
+ });
156
+ });
157
+ // Testes com velocidades baixas
158
+ describe('Conversões com velocidades baixas', () => {
159
+ test('1 cm/s → mm/s = 10', () => {
160
+ // Assumindo que mm/s teria fator 0.001
161
+ expect(converter.convert(1, 'centimetro-por-segundo', 'metro-por-segundo')).toBeCloseTo(0.01, 10);
162
+ });
163
+ test('0.1 m/s → km/h = 0.36', () => {
164
+ expect(converter.convert(0.1, 'metro-por-segundo', 'quilometro-por-hora')).toBeCloseTo(0.36, 10);
165
+ });
166
+ test('1 polegada/s → cm/s ≈ 2.54', () => {
167
+ expect(converter.convert(1, 'polegada-por-segundo', 'centimetro-por-segundo')).toBeCloseTo(2.54, 10);
168
+ });
169
+ test('5 cm/s → mph ≈ 0.1118', () => {
170
+ expect(converter.convert(5, 'centimetro-por-segundo', 'milha-por-hora')).toBeCloseTo(0.1118, 4);
171
+ });
172
+ });
173
+ // Testes de casos extremos
174
+ describe('Casos extremos', () => {
175
+ test('0 m/s → km/h = 0', () => {
176
+ expect(converter.convert(0, 'metro-por-segundo', 'quilometro-por-hora')).toBe(0);
177
+ });
178
+ test('0 mph → nós = 0', () => {
179
+ expect(converter.convert(0, 'milha-por-hora', 'nos')).toBe(0);
180
+ });
181
+ test('Velocidade muito alta: 999999 m/s → km/s ≈ 999.999', () => {
182
+ expect(converter.convert(999999, 'metro-por-segundo', 'quilometro-por-segundo')).toBeCloseTo(999.999, 3);
183
+ });
184
+ test('Velocidade muito baixa: 0.000001 m/s → cm/s = 0.0001', () => {
185
+ expect(converter.convert(0.000001, 'metro-por-segundo', 'centimetro-por-segundo')).toBeCloseTo(0.0001, 10);
186
+ });
187
+ });
188
+ // Testes de precisão
189
+ describe('Testes de precisão', () => {
190
+ test('Conversão ida e volta: m/s → km/h → m/s', () => {
191
+ const original = 25;
192
+ const converted = converter.convert(original, 'metro-por-segundo', 'quilometro-por-hora');
193
+ const backConverted = converter.convert(converted, 'quilometro-por-hora', 'metro-por-segundo');
194
+ expect(backConverted).toBeCloseTo(original, 8);
195
+ });
196
+ test('Conversão ida e volta: mph → nós → mph', () => {
197
+ const original = 65;
198
+ const converted = converter.convert(original, 'milha-por-hora', 'nos');
199
+ const backConverted = converter.convert(converted, 'nos', 'milha-por-hora');
200
+ expect(backConverted).toBeCloseTo(original, 8);
201
+ });
202
+ test('Conversão ida e volta: Mach → m/s → Mach', () => {
203
+ const original = 2.5;
204
+ const converted = converter.convert(original, 'mach', 'metro-por-segundo');
205
+ const backConverted = converter.convert(converted, 'metro-por-segundo', 'mach');
206
+ expect(backConverted).toBeCloseTo(original, 8);
207
+ });
208
+ test('Conversão ida e volta: km/s → c → km/s', () => {
209
+ const original = 150000; // 50% da velocidade da luz
210
+ const converted = converter.convert(original, 'quilometro-por-segundo', 'velocidade-da-luz');
211
+ const backConverted = converter.convert(converted, 'velocidade-da-luz', 'quilometro-por-segundo');
212
+ expect(backConverted).toBeCloseTo(original, 6);
213
+ });
214
+ });
215
+ // Testes de equivalências conhecidas
216
+ describe('Equivalências conhecidas', () => {
217
+ test('1 m/s = 3.599999999712 km/h', () => {
218
+ expect(converter.convert(1, 'metro-por-segundo', 'quilometro-por-hora')).toBeCloseTo(3.599999999712, 10);
219
+ });
220
+ test('1 mph ≈ 1.609 km/h', () => {
221
+ expect(converter.convert(1, 'milha-por-hora', 'quilometro-por-hora')).toBeCloseTo(1.609, 3);
222
+ });
223
+ test('1 nó ≈ 1.852 km/h (milha náutica)', () => {
224
+ expect(converter.convert(1, 'nos', 'quilometro-por-hora')).toBeCloseTo(1.852, 3);
225
+ });
226
+ test('Mach 1 ≈ 1225 km/h (ao nível do mar)', () => {
227
+ expect(converter.convert(1, 'mach', 'quilometro-por-hora')).toBeCloseTo(1225, 1);
228
+ });
229
+ test('1 pé/s ≈ 0.682 mph', () => {
230
+ expect(converter.convert(1, 'pes-por-segundo', 'milha-por-hora')).toBeCloseTo(0.682, 3);
231
+ });
232
+ test('Velocidade da luz ≈ 1079252848.7136598 bilhão km/h', () => {
233
+ expect(converter.convert(1, 'velocidade-da-luz', 'quilometro-por-hora')).toBeCloseTo(1079252848.7136598, 1);
234
+ });
235
+ });
236
+ // Testes específicos de aplicações
237
+ describe('Aplicações específicas', () => {
238
+ test('Limite urbano: 50 km/h → mph ≈ 31.07', () => {
239
+ expect(converter.convert(50, 'quilometro-por-hora', 'milha-por-hora')).toBeCloseTo(31.07, 2);
240
+ });
241
+ test('Velocidade de cruzeiro Boeing 747: 900 km/h → Mach ≈ 0.735', () => {
242
+ expect(converter.convert(900, 'quilometro-por-hora', 'mach')).toBeCloseTo(0.735, 3);
243
+ });
244
+ test('Velocidade típica de vento: 20 nós → m/s ≈ 10.29', () => {
245
+ expect(converter.convert(20, 'nos', 'metro-por-segundo')).toBeCloseTo(10.29, 2);
246
+ });
247
+ test('Velocidade de escape da Terra: 11.2 km/s → mph ≈ 25053.686471009307', () => {
248
+ expect(converter.convert(11.2, 'quilometro-por-segundo', 'milha-por-hora')).toBeCloseTo(25053.686471009307, 0);
249
+ });
250
+ test('Corrida de 100m: 10 m/s → km/h = 35.99999999712', () => {
251
+ expect(converter.convert(10, 'metro-por-segundo', 'quilometro-por-hora')).toBeCloseTo(35.99999999712, 10);
252
+ });
253
+ test('Trem-bala japonês: 320 km/h → m/s ≈ 88.89', () => {
254
+ expect(converter.convert(320, 'quilometro-por-hora', 'metro-por-segundo')).toBeCloseTo(88.89, 2);
255
+ });
256
+ });
257
+ });