FileBrowser Cursor !

This commit is contained in:
chk
2026-06-14 22:21:00 +02:00
parent fb6453e2e4
commit ed19c531a8
4 changed files with 39 additions and 27 deletions

View File

@@ -52,7 +52,7 @@ test('Playback: stepping liefert driver-native (Radian) Zeilen, Grenzen werfen',
await expect(a.next()).rejects.toThrow(); // über das Ende → CURSOR_OUT_OF_RANGE
});
test('Cursor liegt im .json-Sidecar, .gcode bleibt sauber (kein !-Marker)', async () => {
test('Cursor liegt als ;! in der .gcode-Datei, store.read() liefert saubere Zeilen', async () => {
await store.write('cur_1', {
name: 'Cur',
lines: [
@@ -62,16 +62,20 @@ test('Cursor liegt im .json-Sidecar, .gcode bleibt sauber (kein !-Marker)', asyn
});
const a = new ActiveState();
await a.load('cur_1');
await a.next(); // cursor → 1 (kein Persist)
await a.appendLine('G4 P0.1'); // persistiert, cursor → 2
await a.next(); // cursor → 1, persistiert als ;! im .gcode
await a.appendLine('G4 P0.1'); // cursor → 2, persistiert
// Rohe .gcode-Datei: genau eine Zeile mit '!', und zwar an Index 2
const rawText = await fsp.readFile(path.join(tmp, 'cur_1.gcode'), 'utf8');
const rawLines = rawText.split('\n').filter(Boolean);
const markedLines = rawLines.filter(units.hasCursorMarker);
expect(markedLines).toHaveLength(1);
expect(rawLines.indexOf(markedLines[0])).toBe(2);
// store.read() liefert saubere Zeilen (kein '!') und korrekten Cursor
const prog = await store.read('cur_1');
// .gcode-Zeilen sind sauber — kein '!'-Marker
const marked = prog.lines.filter(units.hasCursorMarker);
expect(marked).toHaveLength(0);
// Cursor steht im .json-Sidecar
expect(prog.cursor).toBe(2);
// Korrekte Zeile am Ende
expect(prog.lines.filter(units.hasCursorMarker)).toHaveLength(0);
expect(units.splitComment(prog.lines[2]).code).toBe('G4 P0.1');
});