Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
more tests cases
Browse files Browse the repository at this point in the history
  • Loading branch information
yaya-usman committed Apr 10, 2022
1 parent 04e00ef commit d2a85be
Showing 1 changed file with 66 additions and 15 deletions.
81 changes: 66 additions & 15 deletions test/editor/operations-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,21 +46,72 @@ describe('editor/operations: formatting operations', () => {
expect(model.serializeParts()).toEqual([{ "text": "hello _world_!", "type": "plain" }]);
});

it('works for escaping backticks in between texts', () => {
const renderer = createRenderer();
const pc = createPartCreator();
const model = new EditorModel([
pc.plain("hello ` world!"),
], pc, renderer);

const range = model.startRange(model.positionForOffset(0, false),
model.positionForOffset(13, false)); // hello ` world

expect(range.parts[0].text.trim().includes("`")).toBeTruthy();
expect(longestBacktickSequence(range.parts[0].text.trim())).toBe(1);
expect(model.serializeParts()).toEqual([{ "text": "hello ` world!", "type": "plain" }]);
formatRangeAsCode(range);
expect(model.serializeParts()).toEqual([{ "text": "``hello ` world``!", "type": "plain" }]);
describe('escape backticks', () => {
it('works for escaping backticks in between texts', () => {
const renderer = createRenderer();
const pc = createPartCreator();
const model = new EditorModel([
pc.plain("hello ` world!"),
], pc, renderer);

const range = model.startRange(model.positionForOffset(0, false),
model.positionForOffset(13, false)); // hello ` world

expect(range.parts[0].text.trim().includes("`")).toBeTruthy();
expect(longestBacktickSequence(range.parts[0].text.trim())).toBe(1);
expect(model.serializeParts()).toEqual([{ "text": "hello ` world!", "type": "plain" }]);
formatRangeAsCode(range);
expect(model.serializeParts()).toEqual([{ "text": "``hello ` world``!", "type": "plain" }]);
});

it('escapes longer backticks in between text', () => {
const renderer = createRenderer();
const pc = createPartCreator();
const model = new EditorModel([
pc.plain("hello```world"),
], pc, renderer);

const range = model.startRange(model.positionForOffset(0, false),
model.getPositionAtEnd()); // hello```world

expect(range.parts[0].text.includes("`")).toBeTruthy();
expect(longestBacktickSequence(range.parts[0].text)).toBe(3);
expect(model.serializeParts()).toEqual([{ "text": "hello```world", "type": "plain" }]);
formatRangeAsCode(range);
expect(model.serializeParts()).toEqual([{ "text": "````hello```world````", "type": "plain" }]);
});

it('escapes non-consecutive with varying length backticks in between text', () => {
const renderer = createRenderer();
const pc = createPartCreator();
const model = new EditorModel([
pc.plain("hell```o`w`o``rld"),
], pc, renderer);

const range = model.startRange(model.positionForOffset(0, false),
model.getPositionAtEnd()); // hell```o`w`o``rld
expect(range.parts[0].text.includes("`")).toBeTruthy();
expect(longestBacktickSequence(range.parts[0].text)).toBe(3);
expect(model.serializeParts()).toEqual([{ "text": "hell```o`w`o``rld", "type": "plain" }]);
formatRangeAsCode(range);
expect(model.serializeParts()).toEqual([{ "text": "````hell```o`w`o``rld````", "type": "plain" }]);
});

it('escapes backticks in between text and untoggles already formated code text', () => {
const renderer = createRenderer();
const pc = createPartCreator();
const model = new EditorModel([
pc.plain("`hello`world`"),
], pc, renderer);

const range = model.startRange(model.positionForOffset(0, false),
model.getPositionAtEnd()); // `hello`world`
expect(range.parts[0].text.includes("`")).toBeTruthy();
expect(longestBacktickSequence(range.parts[0].text)).toBe(1);
expect(model.serializeParts()).toEqual([{ "text": "`hello`world`", "type": "plain" }]);
formatRangeAsCode(range);
expect(model.serializeParts()).toEqual([{ "text": "hello`world", "type": "plain" }]);
});
});

it('works for parts of words', () => {
Expand Down

0 comments on commit d2a85be

Please sign in to comment.