38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
import { test } from 'cutest'
|
|
import * as random from '../lib/prng/prng.js'
|
|
import * as Y from '../index.js'
|
|
|
|
import { prosemirrorPlugin } from '../bindings/prosemirror.js'
|
|
import {EditorState} from 'prosemirror-state'
|
|
import {EditorView} from 'prosemirror-view'
|
|
import {schema} from 'prosemirror-schema-basic'
|
|
import {exampleSetup} from 'prosemirror-example-setup'
|
|
|
|
const createNewProsemirrorView = y => {
|
|
const view = new EditorView(document.createElement('div'), {
|
|
state: EditorState.create({
|
|
schema,
|
|
plugins: exampleSetup({schema}).concat([prosemirrorPlugin(y.define('prosemirror', Y.XmlFragment))])
|
|
})
|
|
})
|
|
return view
|
|
}
|
|
|
|
test('random prosemirror insertions', async t => {
|
|
const gen = random.createPRNG(t.getSeed())
|
|
const y = new Y.Y()
|
|
const p1 = createNewProsemirrorView(y)
|
|
const p2 = createNewProsemirrorView(y)
|
|
for (let i = 0; i < 10; i++) {
|
|
const p = random.oneOf(gen, [p1, p2])
|
|
const insertPos = random.int32(gen, 0, p.state.doc.content.size)
|
|
const overwrite = random.int32(gen, 0, p.state.doc.content.size - insertPos)
|
|
p.dispatch(p.state.tr.insertText('' + i, insertPos, insertPos + overwrite))
|
|
}
|
|
t.compare(
|
|
p1.state.doc.toJSON(),
|
|
p2.state.doc.toJSON(),
|
|
'compare prosemirror models'
|
|
)
|
|
})
|