Fix cursor movement on Windows

This commit is contained in:
Andras Schmelczer 2025-04-03 21:44:45 +01:00
commit 5328e3b0f6
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C

View file

@ -1,63 +1,55 @@
import { positionToLineAndColumn } from "./position-to-line-and-column";
describe("positionToLineAndColumn", () => {
test("converts position to line and column in a single line text", () => {
const text = "Hello, world!";
expect(positionToLineAndColumn(text, 0)).toEqual({
line: 0,
column: 1
});
expect(positionToLineAndColumn(text, 7)).toEqual({
line: 0,
column: 8
});
expect(positionToLineAndColumn(text, 12)).toEqual({
line: 0,
column: 13
});
});
test("converts position to line and column in multi-line text", () => {
const text = "First line\nSecond line\nThird line";
const text = "ab\ncd\n";
expect(positionToLineAndColumn(text, 0)).toEqual({
line: 0,
column: 0
});
expect(positionToLineAndColumn(text, 1)).toEqual({
line: 0,
column: 1
});
expect(positionToLineAndColumn(text, 10)).toEqual({
expect(positionToLineAndColumn(text, 2)).toEqual({
line: 0,
column: 11
column: 2
});
expect(positionToLineAndColumn(text, 15)).toEqual({
expect(positionToLineAndColumn(text, 3)).toEqual({
line: 1,
column: 5
column: 0
});
expect(positionToLineAndColumn(text, 26)).toEqual({
expect(positionToLineAndColumn(text, 4)).toEqual({
line: 1,
column: 1
});
expect(positionToLineAndColumn(text, 6)).toEqual({
line: 2,
column: 4
column: 0
});
});
test("handles positions at line breaks", () => {
const text = "Line\nBreak";
expect(positionToLineAndColumn(text, 4)).toEqual({
line: 0,
column: 5
test("with carrige returns", () => {
expect(positionToLineAndColumn("a\nb", 3)).toEqual({
line: 1,
column: 1
});
expect(positionToLineAndColumn(text, 5)).toEqual({
expect(positionToLineAndColumn("a\r\nb", 3)).toEqual({
line: 1,
column: 1
});
});
test("handles empty input", () => {
expect(positionToLineAndColumn("", 0)).toEqual({ line: 0, column: 1 });
expect(positionToLineAndColumn("", 0)).toEqual({ line: 0, column: 0 });
});
test("handles positions at the end of text", () => {
const text = "End";
expect(positionToLineAndColumn(text, 3)).toEqual({
line: 0,
column: 4
column: 3
});
});