fix decode function
This commit is contained in:
parent
1a61f86bea
commit
50a1b7e2d5
2 changed files with 41 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
||||||
import { describe, beforeEach, it, expect, mock, afterAll, spyOn } from 'bun:test';
|
import { describe, beforeEach, it, expect, afterAll, spyOn } from 'bun:test';
|
||||||
import { debounce, deepCopy, deepDiff, filter, map, MutarionKind, splitAt } from './utilities';
|
import { decode, deepCopy, deepDiff, filter, map, MutarionKind, splitAt } from './utilities';
|
||||||
import { install } from '@sinonjs/fake-timers';
|
import { install } from '@sinonjs/fake-timers';
|
||||||
|
|
||||||
type MilliSeconds = number;
|
type MilliSeconds = number;
|
||||||
|
@ -72,6 +72,44 @@ describe('utilities', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('decode', () => {
|
||||||
|
it('should decode \\t characters', async () => {
|
||||||
|
// Arrange
|
||||||
|
const given = 'this is\\ta string';
|
||||||
|
const expected = 'this is\ta string';
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const actual = decode(given);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(actual).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should decode \\n characters', async () => {
|
||||||
|
// Arrange
|
||||||
|
const given = 'this is\\na string';
|
||||||
|
const expected = 'this is\na string';
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const actual = decode(given);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(actual).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should decode \\uHHHH characters', async () => {
|
||||||
|
// Arrange
|
||||||
|
const given = 'this is \\u1234 a string';
|
||||||
|
const expected = 'this is \u1234 a string';
|
||||||
|
|
||||||
|
// Act
|
||||||
|
const actual = decode(given);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(actual).toBe(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('deepCopy', () => {
|
describe('deepCopy', () => {
|
||||||
it('can skip values passed by reference (non-objects, null, and undefined)', async () => {
|
it('can skip values passed by reference (non-objects, null, and undefined)', async () => {
|
||||||
// arrange
|
// arrange
|
||||||
|
|
|
@ -19,7 +19,7 @@ const decodeReplacer = (_: any, char: string) => ({
|
||||||
f: '\f',
|
f: '\f',
|
||||||
"'": '\'',
|
"'": '\'',
|
||||||
'"': '\"',
|
'"': '\"',
|
||||||
u: String.fromCharCode(Number.parseInt(char.slice(1))),
|
u: String.fromCharCode(Number.parseInt(`0x${char.slice(1)}`)),
|
||||||
}[char.charAt(0)] ?? '');
|
}[char.charAt(0)] ?? '');
|
||||||
export const decode = (subject: string): string => subject.replace(decodeRegex, decodeReplacer);
|
export const decode = (subject: string): string => subject.replace(decodeRegex, decodeReplacer);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue