123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- var Delta = require('../../lib/delta');
- describe('transform()', function () {
- it('insert + insert', function () {
- var a1 = new Delta().insert('A');
- var b1 = new Delta().insert('B');
- var a2 = new Delta(a1);
- var b2 = new Delta(b1);
- var expected1 = new Delta().retain(1).insert('B');
- var expected2 = new Delta().insert('B');
- expect(a1.transform(b1, true)).toEqual(expected1);
- expect(a2.transform(b2, false)).toEqual(expected2);
- });
- it('insert + retain', function () {
- var a = new Delta().insert('A');
- var b = new Delta().retain(1, { bold: true, color: 'red' });
- var expected = new Delta().retain(1).retain(1, { bold: true, color: 'red' });
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('insert + delete', function () {
- var a = new Delta().insert('A');
- var b = new Delta().delete(1);
- var expected = new Delta().retain(1).delete(1);
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('delete + insert', function () {
- var a = new Delta().delete(1);
- var b = new Delta().insert('B');
- var expected = new Delta().insert('B');
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('delete + retain', function () {
- var a = new Delta().delete(1);
- var b = new Delta().retain(1, { bold: true, color: 'red' });
- var expected = new Delta();
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('delete + delete', function () {
- var a = new Delta().delete(1);
- var b = new Delta().delete(1);
- var expected = new Delta();
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('retain + insert', function () {
- var a = new Delta().retain(1, { color: 'blue' });
- var b = new Delta().insert('B');
- var expected = new Delta().insert('B');
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('retain + retain', function () {
- var a1 = new Delta().retain(1, { color: 'blue' });
- var b1 = new Delta().retain(1, { bold: true, color: 'red' });
- var a2 = new Delta().retain(1, { color: 'blue' });
- var b2 = new Delta().retain(1, { bold: true, color: 'red' });
- var expected1 = new Delta().retain(1, { bold: true });
- var expected2 = new Delta();
- expect(a1.transform(b1, true)).toEqual(expected1);
- expect(b2.transform(a2, true)).toEqual(expected2);
- });
- it('retain + retain without priority', function () {
- var a1 = new Delta().retain(1, { color: 'blue' });
- var b1 = new Delta().retain(1, { bold: true, color: 'red' });
- var a2 = new Delta().retain(1, { color: 'blue' });
- var b2 = new Delta().retain(1, { bold: true, color: 'red' });
- var expected1 = new Delta().retain(1, { bold: true, color: 'red' });
- var expected2 = new Delta().retain(1, { color: 'blue' });
- expect(a1.transform(b1, false)).toEqual(expected1);
- expect(b2.transform(a2, false)).toEqual(expected2);
- });
- it('retain + delete', function () {
- var a = new Delta().retain(1, { color: 'blue' });
- var b = new Delta().delete(1);
- var expected = new Delta().delete(1);
- expect(a.transform(b, true)).toEqual(expected);
- });
- it('alternating edits', function () {
- var a1 = new Delta().retain(2).insert('si').delete(5);
- var b1 = new Delta().retain(1).insert('e').delete(5).retain(1).insert('ow');
- var a2 = new Delta(a1);
- var b2 = new Delta(b1);
- var expected1 = new Delta().retain(1).insert('e').delete(1).retain(2).insert('ow');
- var expected2 = new Delta().retain(2).insert('si').delete(1);
- expect(a1.transform(b1, false)).toEqual(expected1);
- expect(b2.transform(a2, false)).toEqual(expected2);
- });
- it('conflicting appends', function () {
- var a1 = new Delta().retain(3).insert('aa');
- var b1 = new Delta().retain(3).insert('bb');
- var a2 = new Delta(a1);
- var b2 = new Delta(b1);
- var expected1 = new Delta().retain(5).insert('bb');
- var expected2 = new Delta().retain(3).insert('aa');
- expect(a1.transform(b1, true)).toEqual(expected1);
- expect(b2.transform(a2, false)).toEqual(expected2);
- });
- it('prepend + append', function () {
- var a1 = new Delta().insert('aa');
- var b1 = new Delta().retain(3).insert('bb');
- var expected1 = new Delta().retain(5).insert('bb');
- var a2 = new Delta(a1);
- var b2 = new Delta(b1);
- var expected2 = new Delta().insert('aa');
- expect(a1.transform(b1, false)).toEqual(expected1);
- expect(b2.transform(a2, false)).toEqual(expected2);
- });
- it('trailing deletes with differing lengths', function () {
- var a1 = new Delta().retain(2).delete(1);
- var b1 = new Delta().delete(3);
- var expected1 = new Delta().delete(2);
- var a2 = new Delta(a1);
- var b2 = new Delta(b1);
- var expected2 = new Delta();
- expect(a1.transform(b1, false)).toEqual(expected1);
- expect(b2.transform(a2, false)).toEqual(expected2);
- });
- it('immutability', function () {
- var a1 = new Delta().insert('A');
- var a2 = new Delta().insert('A');
- var b1 = new Delta().insert('B');
- var b2 = new Delta().insert('B');
- var expected = new Delta().retain(1).insert('B');
- expect(a1.transform(b1, true)).toEqual(expected);
- expect(a1).toEqual(a2);
- expect(b1).toEqual(b2);
- });
- });
|