| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { expect } from 'chai'
- import { EditorState, EditorSelection } from '@codemirror/state'
- import { isCursorOnEmptyLine } from '../../../../../frontend/js/features/source-editor/utils/is-cursor-on-empty-line'
- function cursorState(doc: string, cursorPos: number) {
- return EditorState.create({
- doc,
- selection: EditorSelection.cursor(cursorPos),
- })
- }
- function selectionState(doc: string, from: number, to: number) {
- return EditorState.create({
- doc,
- selection: EditorSelection.range(from, to),
- })
- }
- describe('isCursorOnEmptyLine', function () {
- it('returns true when cursor is on an empty line', function () {
- const state = cursorState('hello\n\nworld', 6)
- expect(isCursorOnEmptyLine(state)).to.be.true
- })
- it('returns true when cursor is on a whitespace-only line', function () {
- const state = cursorState('hello\n \nworld', 8)
- expect(isCursorOnEmptyLine(state)).to.be.true
- })
- it('returns false when cursor is on a line with content', function () {
- const state = cursorState('hello world', 3)
- expect(isCursorOnEmptyLine(state)).to.be.false
- })
- it('returns false when there is an active selection', function () {
- const state = selectionState('hello\n\nworld', 0, 5)
- expect(isCursorOnEmptyLine(state)).to.be.false
- })
- it('returns false when selection spans an empty line', function () {
- const state = selectionState('hello\n\nworld', 4, 8)
- expect(isCursorOnEmptyLine(state)).to.be.false
- })
- })
|