devtoolz-library 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/baseFactory.d.ts +12 -0
- package/dist/baseFactory.js +33 -0
- package/dist/constants/regexPatterns.d.ts +2 -0
- package/dist/constants/regexPatterns.js +9 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.d.ts +4 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.d.ts +4 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.factory.js +2 -0
- package/dist/converters/numeric-systems/interfaces/INumericSystem.converter.js +2 -0
- package/dist/converters/numeric-systems/numericSystem.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/numericSystem.converter.factory.d.ts +8 -0
- package/dist/converters/numeric-systems/numericSystem.converter.factory.js +17 -0
- package/dist/converters/numeric-systems/numericSystem.converter.js +17 -0
- package/dist/converters/numeric-systems/provider.d.ts +2 -0
- package/dist/converters/numeric-systems/provider.js +11 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.js +16 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/binary/binary.converter.test.js +252 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.js +16 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/decimal/decimal.converter.test.js +199 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.js +18 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/hexadecimal/hexadecimal.converter.test.js +130 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.d.ts +5 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.js +15 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/octadecimal/octadecimal.converter.test.js +151 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.d.ts +7 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.js +77 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.test.d.ts +1 -0
- package/dist/converters/numeric-systems/services/roman/roman.converter.test.js +105 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.d.ts +5 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.factory.d.ts +4 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.factory.js +2 -0
- package/dist/converters/serialization/interfaces/ISerialization.converter.js +2 -0
- package/dist/converters/serialization/interfaces/ISerializationOptions.d.ts +4 -0
- package/dist/converters/serialization/interfaces/ISerializationOptions.js +2 -0
- package/dist/converters/serialization/provider.d.ts +2 -0
- package/dist/converters/serialization/provider.js +7 -0
- package/dist/converters/serialization/serialization.converter.d.ts +6 -0
- package/dist/converters/serialization/serialization.converter.factory.d.ts +9 -0
- package/dist/converters/serialization/serialization.converter.factory.js +20 -0
- package/dist/converters/serialization/serialization.converter.js +17 -0
- package/dist/converters/serialization/services/csv/csv.converter.d.ts +6 -0
- package/dist/converters/serialization/services/csv/csv.converter.js +68 -0
- package/dist/converters/serialization/services/csv/csv.converter.test.d.ts +1 -0
- package/dist/converters/serialization/services/csv/csv.converter.test.js +295 -0
- package/dist/converters/serialization/services/json/json.converter.d.ts +5 -0
- package/dist/converters/serialization/services/json/json.converter.js +12 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.d.ts +4 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.d.ts +4 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.factory.js +2 -0
- package/dist/converters/text-format/inteface/ITextFormatConverter.converter.js +2 -0
- package/dist/converters/text-format/provider.d.ts +2 -0
- package/dist/converters/text-format/provider.js +8 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.d.ts +5 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.js +40 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.test.d.ts +1 -0
- package/dist/converters/text-format/services/binary/binary-format.converter.test.js +174 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.d.ts +6 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.js +85 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.test.d.ts +1 -0
- package/dist/converters/text-format/services/morse/morse-format.converter.test.js +518 -0
- package/dist/converters/text-format/services/text/text-format.converter.d.ts +5 -0
- package/dist/converters/text-format/services/text/text-format.converter.js +12 -0
- package/dist/converters/text-format/textFormatConverter.converter.d.ts +5 -0
- package/dist/converters/text-format/textFormatConverter.converter.factory.d.ts +8 -0
- package/dist/converters/text-format/textFormatConverter.converter.factory.js +17 -0
- package/dist/converters/text-format/textFormatConverter.converter.js +17 -0
- package/dist/converters/unit-converter/converter-base.d.ts +19 -0
- package/dist/converters/unit-converter/converter-base.js +56 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverter.d.ts +9 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverter.js +2 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.d.ts +4 -0
- package/dist/converters/unit-converter/interfaces/IUnitConverterFactory.js +2 -0
- package/dist/converters/unit-converter/models/unit.d.ts +7 -0
- package/dist/converters/unit-converter/models/unit.js +2 -0
- package/dist/converters/unit-converter/provider.d.ts +2 -0
- package/dist/converters/unit-converter/provider.js +16 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.js +15 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/angle/angle.converter.test.js +112 -0
- package/dist/converters/unit-converter/services/area/area.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/area/area.converter.js +24 -0
- package/dist/converters/unit-converter/services/area/area.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/area/area.converter.test.js +439 -0
- package/dist/converters/unit-converter/services/data/data.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/data/data.converter.js +30 -0
- package/dist/converters/unit-converter/services/data/data.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/data/data.converter.test.js +209 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.js +20 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/energy/energy.converter.test.js +154 -0
- package/dist/converters/unit-converter/services/length/length.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/length/length.converter.js +31 -0
- package/dist/converters/unit-converter/services/length/length.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/length/length.converter.test.js +186 -0
- package/dist/converters/unit-converter/services/power/power.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/power/power.converter.js +17 -0
- package/dist/converters/unit-converter/services/power/power.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/power/power.converter.test.js +223 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.js +18 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/pressure/pressure.converter.test.js +107 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.js +22 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/speed/speed.converter.test.js +257 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.d.ts +7 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.js +46 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/temperature/temperature.converter.test.js +279 -0
- package/dist/converters/unit-converter/services/time/time.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/time/time.converter.js +26 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.js +39 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/volume/volume.converter.test.js +295 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.d.ts +4 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.js +29 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.d.ts +1 -0
- package/dist/converters/unit-converter/services/weight-mass/weight-mass.converter.test.js +218 -0
- package/dist/converters/unit-converter/unit.converter.factory.d.ts +9 -0
- package/dist/converters/unit-converter/unit.converter.factory.js +20 -0
- package/dist/crypt.d.ts +0 -0
- package/dist/crypt.js +77 -0
- package/dist/documents/cnpj/cnpj.d.ts +14 -0
- package/dist/documents/cnpj/cnpj.formatter.d.ts +5 -0
- package/dist/documents/cnpj/cnpj.formatter.js +12 -0
- package/dist/documents/cnpj/cnpj.generator.d.ts +9 -0
- package/dist/documents/cnpj/cnpj.generator.js +43 -0
- package/dist/documents/cnpj/cnpj.js +47 -0
- package/dist/documents/cnpj/cnpj.validator.d.ts +11 -0
- package/dist/documents/cnpj/cnpj.validator.js +49 -0
- package/dist/documents/cnpj/tests/cnpj.formatter.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.formatter.test.js +62 -0
- package/dist/documents/cnpj/tests/cnpj.generator.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.generator.test.js +51 -0
- package/dist/documents/cnpj/tests/cnpj.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.test.js +162 -0
- package/dist/documents/cnpj/tests/cnpj.validator.test.d.ts +1 -0
- package/dist/documents/cnpj/tests/cnpj.validator.test.js +104 -0
- package/dist/documents/cpf/cpf.d.ts +14 -0
- package/dist/documents/cpf/cpf.formatter.d.ts +5 -0
- package/dist/documents/cpf/cpf.formatter.js +12 -0
- package/dist/documents/cpf/cpf.generator.d.ts +9 -0
- package/dist/documents/cpf/cpf.generator.js +40 -0
- package/dist/documents/cpf/cpf.js +50 -0
- package/dist/documents/cpf/cpf.validator.d.ts +11 -0
- package/dist/documents/cpf/cpf.validator.js +46 -0
- package/dist/documents/cpf/tests/cpf.formatter.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.formatter.test.js +71 -0
- package/dist/documents/cpf/tests/cpf.generator.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.generator.test.js +71 -0
- package/dist/documents/cpf/tests/cpf.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.test.js +151 -0
- package/dist/documents/cpf/tests/cpf.validator.test.d.ts +1 -0
- package/dist/documents/cpf/tests/cpf.validator.test.js +113 -0
- package/dist/documents/interfaces/formatter.interface.d.ts +4 -0
- package/dist/documents/interfaces/formatter.interface.js +2 -0
- package/dist/documents/interfaces/generator.interface.d.ts +3 -0
- package/dist/documents/interfaces/generator.interface.js +2 -0
- package/dist/documents/interfaces/validator.interface.d.ts +4 -0
- package/dist/documents/interfaces/validator.interface.js +2 -0
- package/dist/documents/models/validation-result.model.d.ts +4 -0
- package/dist/documents/models/validation-result.model.js +2 -0
- package/dist/enums/cryptProvider.d.ts +6 -0
- package/dist/enums/cryptProvider.js +10 -0
- package/dist/extensions/array.extensions.d.ts +6 -0
- package/dist/extensions/array.extensions.js +7 -0
- package/dist/extensions/boolean.extensions.d.ts +6 -0
- package/dist/extensions/boolean.extensions.js +5 -0
- package/dist/extensions/number.extensions.d.ts +11 -0
- package/dist/extensions/number.extensions.js +24 -0
- package/dist/extensions/string.extensions.d.ts +13 -0
- package/dist/extensions/string.extensions.js +28 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +39 -0
- package/dist/interfaces/IFactory.d.ts +3 -0
- package/dist/interfaces/IFactory.js +2 -0
- package/dist/interfaces/IServiceCategory.d.ts +3 -0
- package/dist/interfaces/IServiceCategory.js +2 -0
- package/dist/interfaces/validator.d.ts +5 -0
- package/dist/interfaces/validator.js +2 -0
- package/dist/interfaces/value.d.ts +3 -0
- package/dist/interfaces/value.js +2 -0
- package/dist/interfaces/valueGenerator.d.ts +4 -0
- package/dist/interfaces/valueGenerator.js +2 -0
- package/dist/random.d.ts +12 -0
- package/dist/random.js +29 -0
- package/package.json +25 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BinaryFormatConverter = void 0;
|
|
4
|
+
class BinaryFormatConverter {
|
|
5
|
+
fromText(value) {
|
|
6
|
+
if (typeof value !== 'string')
|
|
7
|
+
throw new Error('Input must be a string');
|
|
8
|
+
let result = '';
|
|
9
|
+
for (let i = 0; i < value.length; i++) {
|
|
10
|
+
const charCode = value.charCodeAt(i);
|
|
11
|
+
const binaryString = charCode.toString(2).padStart(8, '0'); // Convert to binary and pad to 8 bits
|
|
12
|
+
result += binaryString + ' '; // Append a space after each byte
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
toText(value) {
|
|
17
|
+
if (typeof value !== 'string')
|
|
18
|
+
throw new Error('Input must be a string');
|
|
19
|
+
// Se a string está vazia após trim, retorna string vazia
|
|
20
|
+
const trimmed = value.trim();
|
|
21
|
+
if (trimmed === '') {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
const binaryArray = trimmed.split(/\s+/);
|
|
25
|
+
for (const bin of binaryArray) {
|
|
26
|
+
if (!/^[01]{1,8}$/.test(bin)) {
|
|
27
|
+
throw new Error(`Invalid binary format: ${bin}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
let result = '';
|
|
31
|
+
binaryArray.forEach(binaryValue => {
|
|
32
|
+
const charCode = parseInt(binaryValue, 2); // Convert binary string to integer
|
|
33
|
+
if (!isNaN(charCode)) {
|
|
34
|
+
result += String.fromCharCode(charCode); // Convert integer to character
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return result; // Remove trailing space
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.BinaryFormatConverter = BinaryFormatConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const textFormatConverter_converter_factory_1 = require("../../textFormatConverter.converter.factory");
|
|
4
|
+
describe('converter', () => {
|
|
5
|
+
let factory;
|
|
6
|
+
let converter;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
factory = new textFormatConverter_converter_factory_1.TextFormatConverterFactory();
|
|
9
|
+
converter = factory.createService('binary');
|
|
10
|
+
});
|
|
11
|
+
describe('fromText', () => {
|
|
12
|
+
it('should convert simple text to binary', () => {
|
|
13
|
+
const result = converter.fromText('A');
|
|
14
|
+
expect(result).toBe('01000001 ');
|
|
15
|
+
});
|
|
16
|
+
it('should convert multiple characters to binary', () => {
|
|
17
|
+
const result = converter.fromText('ABC');
|
|
18
|
+
expect(result).toBe('01000001 01000010 01000011 ');
|
|
19
|
+
});
|
|
20
|
+
it('should handle lowercase letters', () => {
|
|
21
|
+
const result = converter.fromText('abc');
|
|
22
|
+
expect(result).toBe('01100001 01100010 01100011 ');
|
|
23
|
+
});
|
|
24
|
+
it('should handle numbers', () => {
|
|
25
|
+
const result = converter.fromText('123');
|
|
26
|
+
expect(result).toBe('00110001 00110010 00110011 ');
|
|
27
|
+
});
|
|
28
|
+
it('should handle special characters', () => {
|
|
29
|
+
const result = converter.fromText('!@#');
|
|
30
|
+
expect(result).toBe('00100001 01000000 00100011 ');
|
|
31
|
+
});
|
|
32
|
+
it('should handle spaces', () => {
|
|
33
|
+
const result = converter.fromText('A B');
|
|
34
|
+
expect(result).toBe('01000001 00100000 01000010 ');
|
|
35
|
+
});
|
|
36
|
+
it('should handle empty string', () => {
|
|
37
|
+
const result = converter.fromText('');
|
|
38
|
+
expect(result).toBe('');
|
|
39
|
+
});
|
|
40
|
+
it('should handle Unicode characters', () => {
|
|
41
|
+
// Teste com caracteres específicos e seus valores conhecidos
|
|
42
|
+
const result = converter.fromText('ção');
|
|
43
|
+
// Vamos verificar o que realmente está sendo retornado
|
|
44
|
+
// 'ç' (231) = 11100111, 'ã' (227) = 11100011, 'o' (111) = 01101111
|
|
45
|
+
expect(result).toBe('11100111 11100011 01101111 ');
|
|
46
|
+
});
|
|
47
|
+
it('should throw error for non-string input', () => {
|
|
48
|
+
expect(() => converter.fromText(123)).toThrow('Input must be a string');
|
|
49
|
+
expect(() => converter.fromText(null)).toThrow('Input must be a string');
|
|
50
|
+
expect(() => converter.fromText(undefined)).toThrow('Input must be a string');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('toText', () => {
|
|
54
|
+
it('should convert binary to simple text', () => {
|
|
55
|
+
const result = converter.toText('01000001');
|
|
56
|
+
expect(result).toBe('A');
|
|
57
|
+
});
|
|
58
|
+
it('should convert multiple binary groups to text', () => {
|
|
59
|
+
const result = converter.toText('01000001 01000010 01000011');
|
|
60
|
+
expect(result).toBe('ABC');
|
|
61
|
+
});
|
|
62
|
+
it('should handle lowercase letters', () => {
|
|
63
|
+
const result = converter.toText('01100001 01100010 01100011');
|
|
64
|
+
expect(result).toBe('abc');
|
|
65
|
+
});
|
|
66
|
+
it('should handle numbers', () => {
|
|
67
|
+
const result = converter.toText('00110001 00110010 00110011');
|
|
68
|
+
expect(result).toBe('123');
|
|
69
|
+
});
|
|
70
|
+
it('should handle special characters', () => {
|
|
71
|
+
const result = converter.toText('00100001 01000000 00100011');
|
|
72
|
+
expect(result).toBe('!@#');
|
|
73
|
+
});
|
|
74
|
+
it('should handle spaces', () => {
|
|
75
|
+
const result = converter.toText('01000001 00100000 01000010');
|
|
76
|
+
expect(result).toBe('A B');
|
|
77
|
+
});
|
|
78
|
+
it('should handle empty string', () => {
|
|
79
|
+
const result = converter.toText('');
|
|
80
|
+
expect(result).toBe('');
|
|
81
|
+
});
|
|
82
|
+
it('should handle whitespace variations', () => {
|
|
83
|
+
const result = converter.toText(' 01000001 01000010 ');
|
|
84
|
+
expect(result).toBe('AB');
|
|
85
|
+
});
|
|
86
|
+
it('should handle binary without padding', () => {
|
|
87
|
+
const result = converter.toText('1000001 1000010');
|
|
88
|
+
expect(result).toBe('AB');
|
|
89
|
+
});
|
|
90
|
+
it('should handle trailing spaces (from fromText output)', () => {
|
|
91
|
+
const result = converter.toText('01000001 01000010 ');
|
|
92
|
+
expect(result).toBe('AB');
|
|
93
|
+
});
|
|
94
|
+
it('should throw error for invalid binary format', () => {
|
|
95
|
+
expect(() => converter.toText('invalid')).toThrow('Invalid binary format: invalid');
|
|
96
|
+
expect(() => converter.toText('01000001 invalid')).toThrow('Invalid binary format: invalid');
|
|
97
|
+
expect(() => converter.toText('012345678')).toThrow('Invalid binary format: 012345678');
|
|
98
|
+
});
|
|
99
|
+
it('should throw error for non-string input', () => {
|
|
100
|
+
expect(() => converter.toText(123)).toThrow('Input must be a string');
|
|
101
|
+
expect(() => converter.toText(null)).toThrow('Input must be a string');
|
|
102
|
+
expect(() => converter.toText(undefined)).toThrow('Input must be a string');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('Round-trip conversion', () => {
|
|
106
|
+
it('should maintain data integrity in round-trip conversion', () => {
|
|
107
|
+
const originalTexts = [
|
|
108
|
+
'Hello World!',
|
|
109
|
+
'TypeScript é incrível',
|
|
110
|
+
'12345',
|
|
111
|
+
'!@#$%^&*()',
|
|
112
|
+
'A',
|
|
113
|
+
'Testing with spaces and tabs\t',
|
|
114
|
+
'Números: 123 e símbolos: !@#'
|
|
115
|
+
];
|
|
116
|
+
originalTexts.forEach(text => {
|
|
117
|
+
const binary = converter.fromText(text);
|
|
118
|
+
const convertedBack = converter.toText(binary);
|
|
119
|
+
expect(convertedBack).toBe(text);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
it('should handle empty string in round-trip', () => {
|
|
123
|
+
const text = '';
|
|
124
|
+
const binary = converter.fromText(text);
|
|
125
|
+
const convertedBack = converter.toText(binary);
|
|
126
|
+
expect(convertedBack).toBe(text);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('Edge cases', () => {
|
|
130
|
+
it('should handle very long strings', () => {
|
|
131
|
+
const longText = 'A'.repeat(1000);
|
|
132
|
+
const binary = converter.fromText(longText);
|
|
133
|
+
const convertedBack = converter.toText(binary);
|
|
134
|
+
expect(convertedBack).toBe(longText);
|
|
135
|
+
});
|
|
136
|
+
it('should handle all ASCII characters', () => {
|
|
137
|
+
let allAscii = '';
|
|
138
|
+
for (let i = 32; i <= 126; i++) {
|
|
139
|
+
allAscii += String.fromCharCode(i);
|
|
140
|
+
}
|
|
141
|
+
const binary = converter.fromText(allAscii);
|
|
142
|
+
const convertedBack = converter.toText(binary);
|
|
143
|
+
expect(convertedBack).toBe(allAscii);
|
|
144
|
+
});
|
|
145
|
+
it('should handle newlines and tabs', () => {
|
|
146
|
+
const textWithWhitespace = 'Line1\nLine2\tTabbed';
|
|
147
|
+
const binary = converter.fromText(textWithWhitespace);
|
|
148
|
+
const convertedBack = converter.toText(binary);
|
|
149
|
+
expect(convertedBack).toBe(textWithWhitespace);
|
|
150
|
+
});
|
|
151
|
+
it('should handle single character', () => {
|
|
152
|
+
const chars = ['A', 'z', '1', '!', ' ', '\n', '\t'];
|
|
153
|
+
chars.forEach(char => {
|
|
154
|
+
const binary = converter.fromText(char);
|
|
155
|
+
const convertedBack = converter.toText(binary);
|
|
156
|
+
expect(convertedBack).toBe(char);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
describe('Format validation', () => {
|
|
161
|
+
it('should reject strings with non-binary characters', () => {
|
|
162
|
+
expect(() => converter.toText('01000001 0100000G')).toThrow('Invalid binary format: 0100000G');
|
|
163
|
+
expect(() => converter.toText('01000001 01000002')).toThrow('Invalid binary format: 01000002');
|
|
164
|
+
});
|
|
165
|
+
it('should reject binary strings longer than 8 bits', () => {
|
|
166
|
+
expect(() => converter.toText('010000011')).toThrow('Invalid binary format: 010000011');
|
|
167
|
+
expect(() => converter.toText('01000001 010000011')).toThrow('Invalid binary format: 010000011');
|
|
168
|
+
});
|
|
169
|
+
it('should accept binary strings shorter than 8 bits', () => {
|
|
170
|
+
expect(() => converter.toText('1 10 101')).not.toThrow();
|
|
171
|
+
expect(converter.toText('1 10 101')).toBe('\u0001\u0002\u0005');
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MorseFormatConverter = void 0;
|
|
4
|
+
class MorseFormatConverter {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.morseCode = {
|
|
7
|
+
'A': '.-',
|
|
8
|
+
'B': '-...',
|
|
9
|
+
'C': '-.-.',
|
|
10
|
+
'D': '-..',
|
|
11
|
+
'E': '.',
|
|
12
|
+
'F': '..-.',
|
|
13
|
+
'G': '--.',
|
|
14
|
+
'H': '....',
|
|
15
|
+
'I': '..',
|
|
16
|
+
'J': '.---',
|
|
17
|
+
'K': '-.-',
|
|
18
|
+
'L': '.-..',
|
|
19
|
+
'M': '--',
|
|
20
|
+
'N': '-.',
|
|
21
|
+
'O': '---',
|
|
22
|
+
'P': '.--.',
|
|
23
|
+
'Q': '--.-',
|
|
24
|
+
'R': '.-.',
|
|
25
|
+
'S': '...',
|
|
26
|
+
'T': '-',
|
|
27
|
+
'U': '..-',
|
|
28
|
+
'V': '...-',
|
|
29
|
+
'W': '.--',
|
|
30
|
+
'X': '-..-',
|
|
31
|
+
'Y': '-.--',
|
|
32
|
+
'Z': '--..',
|
|
33
|
+
'0': '-----',
|
|
34
|
+
'1': '.----',
|
|
35
|
+
'2': '..---',
|
|
36
|
+
'3': '...--',
|
|
37
|
+
'4': '....-',
|
|
38
|
+
'5': '.....',
|
|
39
|
+
'6': '-....',
|
|
40
|
+
'7': '--...',
|
|
41
|
+
'8': "---..",
|
|
42
|
+
"9": "----."
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
fromText(value) {
|
|
46
|
+
let result = '';
|
|
47
|
+
if (value.length === 0)
|
|
48
|
+
return result;
|
|
49
|
+
if (value.trim().length === 0)
|
|
50
|
+
return '';
|
|
51
|
+
for (let i = 0; i < value.length; i++) {
|
|
52
|
+
const char = value[i].toUpperCase();
|
|
53
|
+
if (this.morseCode[char]) {
|
|
54
|
+
result += this.morseCode[char];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result += char; // Preserve non-morse characters
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
toText(value) {
|
|
63
|
+
let result = '';
|
|
64
|
+
if (value.length === 0)
|
|
65
|
+
return result;
|
|
66
|
+
if (value.trim().length === 0)
|
|
67
|
+
return '';
|
|
68
|
+
const morseWords = value.split(' '); // Morse words are separated by 3 spaces
|
|
69
|
+
for (const morseWord of morseWords) {
|
|
70
|
+
const morseChars = morseWord.split(' ');
|
|
71
|
+
for (const morseChar of morseChars) {
|
|
72
|
+
const char = Object.keys(this.morseCode).find(key => this.morseCode[key] === morseChar);
|
|
73
|
+
if (char) {
|
|
74
|
+
result += char;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
result += '?'; // Unknown Morse code
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
result += ' '; // Add space between words
|
|
81
|
+
}
|
|
82
|
+
return result.trim(); // Remove trailing space
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.MorseFormatConverter = MorseFormatConverter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|