From 4b08bf0e76106eb25c35b06afe9c81c2c2eb7e45 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 30 Jul 2019 12:31:40 +0200 Subject: [PATCH] add tests for removing multiple characters in edit --- test/editor/diff-test.js | 70 +++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/test/editor/diff-test.js b/test/editor/diff-test.js index 966e4db6cc..ebcb058baa 100644 --- a/test/editor/diff-test.js +++ b/test/editor/diff-test.js @@ -19,30 +19,54 @@ import {diffDeletion, diffAtCaret} from "../../src/editor/diff"; describe('editor/diff', function() { describe('diffDeletion', function() { - it('at start of string', function() { - const diff = diffDeletion("hello", "ello"); - expect(diff.at).toBe(0); - expect(diff.removed).toBe("h"); + describe('with a single character removed', function() { + it('at start of string', function() { + const diff = diffDeletion("hello", "ello"); + expect(diff.at).toBe(0); + expect(diff.removed).toBe("h"); + }); + it('in middle of string', function() { + const diff = diffDeletion("hello", "hllo"); + expect(diff.at).toBe(1); + expect(diff.removed).toBe("e"); + }); + it('in middle of string with duplicate character', function() { + const diff = diffDeletion("hello", "helo"); + expect(diff.at).toBe(3); + expect(diff.removed).toBe("l"); + }); + it('at end of string', function() { + const diff = diffDeletion("hello", "hell"); + expect(diff.at).toBe(4); + expect(diff.removed).toBe("o"); + }); }); - it('removing whole string', function() { - const diff = diffDeletion("hello", ""); - expect(diff.at).toBe(0); - expect(diff.removed).toBe("hello"); - }); - it('in middle of string', function() { - const diff = diffDeletion("hello", "hllo"); - expect(diff.at).toBe(1); - expect(diff.removed).toBe("e"); - }); - it('in middle of string with duplicate character', function() { - const diff = diffDeletion("hello", "helo"); - expect(diff.at).toBe(3); - expect(diff.removed).toBe("l"); - }); - it('at end of string', function() { - const diff = diffDeletion("hello", "hell"); - expect(diff.at).toBe(4); - expect(diff.removed).toBe("o"); + describe('with a multiple removed', function() { + it('at start of string', function() { + const diff = diffDeletion("hello", "llo"); + expect(diff.at).toBe(0); + expect(diff.removed).toBe("he"); + }); + it('removing whole string', function() { + const diff = diffDeletion("hello", ""); + expect(diff.at).toBe(0); + expect(diff.removed).toBe("hello"); + }); + it('in middle of string', function() { + const diff = diffDeletion("hello", "hlo"); + expect(diff.at).toBe(1); + expect(diff.removed).toBe("el"); + }); + it('in middle of string with duplicate character', function() { + const diff = diffDeletion("hello", "heo"); + expect(diff.at).toBe(2); + expect(diff.removed).toBe("ll"); + }); + it('at end of string', function() { + const diff = diffDeletion("hello", "hel"); + expect(diff.at).toBe(3); + expect(diff.removed).toBe("lo"); + }); }); }); describe('diffAtCaret', function() {