25suite(
'MorseTranslator Tests', () => {
30 test(
'Hello converts correctly', () => {
32 assert.strictEqual(result,
".... . .-.. .-.. ---");
39 test(
'Handles two words', () => {
41 assert.strictEqual(result,
".... .. / -... -.-- .");
48 test(
'Handles two words and an end of line', () => {
50 assert.strictEqual(result,
".... .. / -... -.-- . //");
57 test(
'Handles a word and punctuation', () => {
59 assert.strictEqual(result,
".... .. -.-.--");
66 test(
'Handles spaces, words and punctuation', () => {
68 assert.strictEqual(result,
".... . .-.. .-.. --- / .-- --- .-. .-.. -.. -.-.-- //");
77 test(
'Handles empty string', () => {
79 assert.strictEqual(result,
"");
86 test(
'Handles numbers correctly', () => {
88 assert.strictEqual(result,
".---- ..--- ...--");
95 test(
'Handles all digits 0-9', () => {
97 assert.strictEqual(result,
"----- .---- ..--- ...-- ....- ..... -.... --... ---.. ----.");
104 test(
'Handles punctuation marks', () => {
106 assert.strictEqual(result,
".-.-.- --..-- ..--.. .----. -.-.-- -..-.");
113 test(
'Case insensitive conversion', () => {
117 assert.strictEqual(upper, lower);
118 assert.strictEqual(upper, mixed);
125 test(
'Handles unsupported characters gracefully', () => {
128 assert.strictEqual(result,
".- .--.-. -... -.-. ...-..-");
135 test(
'Multiple spaces become single word separator', () => {
137 assert.strictEqual(result,
".- / / / -...");
144 test(
'Multiple newlines become double separators', () => {
146 assert.strictEqual(result,
".- // // -...");
155 test(
'Bidirectional conversion - simple text', () => {
156 const original =
"HELLO WORLD";
159 assert.strictEqual(decoded, original);
166 test(
'Bidirectional conversion - with numbers', () => {
167 const original =
"TEST 123";
170 assert.strictEqual(decoded, original);
177 test(
'Bidirectional conversion - with punctuation', () => {
178 const original =
"SOS! HELP.";
181 assert.strictEqual(decoded, original);
188 test(
'Bidirectional conversion - with newlines', () => {
189 const original =
"LINE1\nLINE2";
192 assert.strictEqual(decoded, original);
201 test(
'fromMorse - simple conversion', () => {
203 assert.strictEqual(result,
"HELLO");
210 test(
'fromMorse - with word separator', () => {
211 const result =
MorseTranslator.fromMorse(
".... . .-.. .-.. --- / .-- --- .-. .-.. -..");
212 assert.strictEqual(result,
"HELLO WORLD");
219 test(
'fromMorse - with line separator', () => {
220 const result =
MorseTranslator.fromMorse(
".... . .-.. .-.. --- // .-- --- .-. .-.. -..");
221 assert.strictEqual(result,
"HELLO\nWORLD");
228 test(
'fromMorse - handles invalid morse patterns', () => {
229 const result =
MorseTranslator.fromMorse(
".... ........ . .-.. .-.. ---");
231 assert.strictEqual(result,
"HELLO");
238 test(
'fromMorse - empty string', () => {
240 assert.strictEqual(result,
"");
249 test(
'Handles long text efficiently', () => {
250 const longText =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ ".repeat(100);
253 assert.strictEqual(decoded, longText.toUpperCase());
260 test(
'Handles complex mixed content', () => {
261 const complex =
"Hello World! 123\nThis is a test.\nWith numbers: 456-789.";
264 assert.strictEqual(decoded, complex.toUpperCase());
Static utility class for Morse code translation operations.
import *as assert from assert