@technobuddha/library
Version:
A large library of useful functions
43 lines (35 loc) • 1.47 kB
text/typescript
import { escapeJava } from './escape-java.ts';
import { space } from './unicode.ts';
describe('escapeJava', () => {
test('should escape standard sequences', () => {
expect(escapeJava('\b\f\n\r\t\\\'"')).toBe('\\b\\f\\n\\r\\t\\\\\\\'\\"');
});
test('should escape nul as \\0, unless followed by an octal digit', () => {
expect(escapeJava('\0')).toBe('\\0');
expect(escapeJava('\0X')).toBe('\\0X');
expect(escapeJava('\u00000')).toBe('\\0000');
});
test('should not escape most ascii', () => {
expect(escapeJava(space)).toBe(space);
expect(escapeJava('ABCdef[~]')).toBe('ABCdef[~]');
});
// cspell:ignore unnnn
test('should escape non printables as \\unnnn', () => {
expect(escapeJava('\u0001')).toBe('\\u0001');
expect(escapeJava('\u001f')).toBe('\\u001f');
expect(escapeJava('\u007f')).toBe('\\u007f');
expect(escapeJava('\u00a0')).toBe('\\u00a0');
});
test('should mot escape latin-1 characters', () => {
expect(escapeJava('¡¢£ýþÿ')).toBe('¡¢£ýþÿ');
});
test('should unicode escape BMP characters', () => {
// cspell:ignore ΑΒΓΔΕΖ
expect(escapeJava('ΑΒΓΔΕΖ')).toBe('\\u0391\\u0392\\u0393\\u0394\\u0395\\u0396');
});
test('should encode astral characters should be UTF-16 encoded', () => {
expect(escapeJava('😀😁😂😺😸😹')).toBe(
'\\ud83d\\ude00\\ud83d\\ude01\\ud83d\\ude02\\ud83d\\ude3a\\ud83d\\ude38\\ud83d\\ude39',
);
});
});