mirror of
https://github.com/heyman/heynote.git
synced 2024-11-24 17:03:19 +01:00
Add test that ensures that getBlocksFromSyntaxTree() and getBlocksFromString() functions produces the same results
This commit is contained in:
parent
016422e7db
commit
bc3a9b66a1
@ -25,7 +25,7 @@ let firstBlockDelimiterSize
|
||||
* Return a list of blocks in the document from the syntax tree.
|
||||
* syntaxTreeAvailable() should have been called before this function to ensure the syntax tree is available.
|
||||
*/
|
||||
function getBlocksFromSyntaxTree(state) {
|
||||
export function getBlocksFromSyntaxTree(state) {
|
||||
//const timer = startTimer()
|
||||
const blocks = [];
|
||||
const tree = syntaxTree(state, state.doc.length)
|
||||
@ -72,7 +72,7 @@ function getBlocksFromSyntaxTree(state) {
|
||||
/**
|
||||
* Parse blocks from document's string contents using String.indexOf()
|
||||
*/
|
||||
function getBlocksFromString(state) {
|
||||
export function getBlocksFromString(state) {
|
||||
//const timer = startTimer()
|
||||
const blocks = []
|
||||
const doc = state.doc
|
||||
@ -138,7 +138,7 @@ function getBlocksFromString(state) {
|
||||
* the blocks are parsed from the string contents of the document, which is much faster
|
||||
* than waiting for the tree parsing to finish.
|
||||
*/
|
||||
function getBlocks(state) {
|
||||
export function getBlocks(state) {
|
||||
if (syntaxTreeAvailable(state, state.doc.length)) {
|
||||
return getBlocksFromSyntaxTree(state)
|
||||
} else {
|
||||
|
28
tests/block-parsing.spec.js
Normal file
28
tests/block-parsing.spec.js
Normal file
@ -0,0 +1,28 @@
|
||||
import { expect, test } from "@playwright/test"
|
||||
import { EditorState } from "@codemirror/state"
|
||||
|
||||
import { heynoteLang } from "../src/editor/lang-heynote/heynote.js"
|
||||
import { getBlocksFromSyntaxTree, getBlocksFromString } from "../src/editor/block/block.js"
|
||||
|
||||
test("parse blocks from both syntax tree and string contents", async ({page}) => {
|
||||
const contents = `
|
||||
∞∞∞text
|
||||
Text Block A
|
||||
∞∞∞text-a
|
||||
Text Block B
|
||||
∞∞∞json-a
|
||||
{
|
||||
"key": "value"
|
||||
}
|
||||
∞∞∞python
|
||||
print("Hello, World!")
|
||||
`
|
||||
const state = EditorState.create({
|
||||
doc: contents,
|
||||
extensions: heynoteLang(),
|
||||
})
|
||||
const treeBlocks = getBlocksFromSyntaxTree(state)
|
||||
const stringBlocks = getBlocksFromString(state)
|
||||
|
||||
expect(treeBlocks).toEqual(stringBlocks)
|
||||
})
|
Loading…
Reference in New Issue
Block a user