G92 senden besser
This commit is contained in:
@@ -2,18 +2,24 @@
|
||||
* buildG92.test.js
|
||||
* Unit-Tests für server/buildG92.cjs
|
||||
*
|
||||
* Sichert ab, dass aus dem Homing-State der korrekte G92-String entsteht und —
|
||||
* gemäß Entscheidung — fehlende Achsen c (Palm) / e (Greifer) als 0 mitgesendet
|
||||
* werden. Achsbuchstaben + Reihenfolge müssen zur Driver-Erwartung passen
|
||||
* Sichert ab, dass aus dem Homing-State der korrekte G92-String entsteht:
|
||||
* bekannte Achsen werden real gesendet, wirklich fehlende/null-Achsen per
|
||||
* Default WEGGELASSEN (Driver lässt sie unverändert). Achsbuchstaben +
|
||||
* Reihenfolge müssen zur Driver-Erwartung passen
|
||||
* (X→xMotor, Y→alpha, Z→beta, A→a, B→b, C→c, E→e).
|
||||
*/
|
||||
|
||||
const { buildG92 } = require('../server/buildG92.cjs');
|
||||
|
||||
describe('buildG92', () => {
|
||||
test('typischer Homing-State (x,y,z,a,b) → c/e als 0 ergänzt, alle 7 Achsen', () => {
|
||||
test('Fallback-State (alle 7 DOF) → alle Achsen mit realem Wert', () => {
|
||||
const state = { x: 164.57045, y: -2.08983, z: 60.58375, a: 86.75125, b: -46.96569, c: -64.90875, e: 22.58589 };
|
||||
expect(buildG92(state)).toBe('G92 X164.57 Y-2.09 Z60.58 A86.75 B-46.97 C-64.91 E22.59');
|
||||
});
|
||||
|
||||
test('4b-Primärkette (nur x,y,z,a,b) → c/e werden weggelassen', () => {
|
||||
const state = { x: 192.72935, y: 35.99125, z: -30.87771, a: -1.69522, b: 12.34 };
|
||||
expect(buildG92(state)).toBe('G92 X192.73 Y35.99 Z-30.88 A-1.70 B12.34 C0.00 E0.00');
|
||||
expect(buildG92(state)).toBe('G92 X192.73 Y35.99 Z-30.88 A-1.70 B12.34');
|
||||
});
|
||||
|
||||
test('Reihenfolge ist immer x,y,z,a,b,c,e (unabhängig von Key-Reihenfolge)', () => {
|
||||
@@ -21,28 +27,23 @@ describe('buildG92', () => {
|
||||
expect(buildG92(state)).toBe('G92 X3.00 Y6.00 Z5.00 A2.00 B1.00 C7.00 E4.00');
|
||||
});
|
||||
|
||||
test('null- und undefined-Achsen werden als 0 gesendet', () => {
|
||||
const state = { x: 10, y: null, z: undefined, a: 0, b: -0.0 };
|
||||
expect(buildG92(state)).toBe('G92 X10.00 Y0.00 Z0.00 A0.00 B0.00 C0.00 E0.00');
|
||||
test('null/undefined/NaN-Achsen werden weggelassen (keine falsche 0)', () => {
|
||||
const state = { x: 10, y: null, z: undefined, a: 0, b: NaN, c: 'abc' };
|
||||
expect(buildG92(state)).toBe('G92 X10.00 A0.00');
|
||||
});
|
||||
|
||||
test('fillMissingWithZero=false lässt fehlende Achsen weg', () => {
|
||||
test('fillMissingWithZero=true füllt fehlende Achsen wieder mit 0', () => {
|
||||
const state = { x: 10, y: 20 };
|
||||
expect(buildG92(state, { fillMissingWithZero: false })).toBe('G92 X10.00 Y20.00');
|
||||
expect(buildG92(state, { fillMissingWithZero: true }))
|
||||
.toBe('G92 X10.00 Y20.00 Z0.00 A0.00 B0.00 C0.00 E0.00');
|
||||
});
|
||||
|
||||
test('decimals steuert die Nachkommastellen', () => {
|
||||
expect(buildG92({ x: 1.23456 }, { decimals: 3 }))
|
||||
.toBe('G92 X1.235 Y0.000 Z0.000 A0.000 B0.000 C0.000 E0.000');
|
||||
expect(buildG92({ x: 1.23456 }, { decimals: 3 })).toBe('G92 X1.235');
|
||||
});
|
||||
|
||||
test('leerer State → alle Achsen 0', () => {
|
||||
expect(buildG92({})).toBe('G92 X0.00 Y0.00 Z0.00 A0.00 B0.00 C0.00 E0.00');
|
||||
expect(buildG92()).toBe('G92 X0.00 Y0.00 Z0.00 A0.00 B0.00 C0.00 E0.00');
|
||||
});
|
||||
|
||||
test('nicht-numerische Werte (NaN/Strings) werden als 0 behandelt', () => {
|
||||
expect(buildG92({ x: 'abc', y: NaN, z: 5 }))
|
||||
.toBe('G92 X0.00 Y0.00 Z5.00 A0.00 B0.00 C0.00 E0.00');
|
||||
test('leerer State → "G92 " ohne Achsen', () => {
|
||||
expect(buildG92({})).toBe('G92 ');
|
||||
expect(buildG92()).toBe('G92 ');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user