Files
yjs/tests/delta.tests.js

80 lines
2.1 KiB
JavaScript

import * as t from 'lib0/testing'
import * as delta from '../src/utils/Delta.js'
/**
* @param {t.TestCase} _tc
*/
export const testDelta = _tc => {
const d = delta.createTextDelta().insert('hello').insert(' ').useAttributes({ bold: true }).insert('world').useAttribution({ insert: ['tester'] }).insert('!').done()
t.compare(d.toJSON(), [{ insert: 'hello ' }, { insert: 'world', attributes: { bold: true } }, { insert: '!', attributes: { bold: true }, attribution: { insert: ['tester'] } }])
}
/**
* @param {t.TestCase} _tc
*/
export const testDeltaMerging = _tc => {
const d = delta.createTextDelta()
.insert('hello')
.insert('world')
.insert(' ', { italic: true })
.insert({})
.insert([1])
.insert([2])
.done()
t.compare(d.toJSON(), [{ insert: 'helloworld' }, { insert: ' ', attributes: { italic: true } }, { insert: {} }, { insert: [1, 2] }])
}
/**
* @param {t.TestCase} _tc
*/
export const testUseAttributes = _tc => {
const d = delta.createTextDelta()
.insert('a')
.updateUsedAttributes('bold', true)
.insert('b')
.insert('c', { bold: 4 })
.updateUsedAttributes('bold', null)
.insert('d')
.useAttributes({ italic: true })
.insert('e')
.useAttributes(null)
.insert('f')
.done()
const d2 = delta.createTextDelta()
.insert('a')
.insert('b', { bold: true })
.insert('c', { bold: 4 })
.insert('d')
.insert('e', { italic: true })
.insert('f')
.done()
t.compare(d, d2)
}
/**
* @param {t.TestCase} _tc
*/
export const testUseAttribution = _tc => {
const d = delta.createTextDelta()
.insert('a')
.updateUsedAttribution('insert', ['me'])
.insert('b')
.insert('c', null, { insert: ['you'] })
.updateUsedAttribution('insert', null)
.insert('d')
.useAttribution({ insert: ['me'] })
.insert('e')
.useAttribution(null)
.insert('f')
.done()
const d2 = delta.createTextDelta()
.insert('a')
.insert('b', null, { insert: ['me'] })
.insert('c', null, { insert: ['you'] })
.insert('d')
.insert('e', null, { insert: ['me'] })
.insert('f')
.done()
t.compare(d, d2)
}