GCode - BufferType
This commit is contained in:
105
test/GCode.receiveGCode.test.js
Normal file
105
test/GCode.receiveGCode.test.js
Normal file
@@ -0,0 +1,105 @@
|
||||
const GCode = require('../robot/GCode')
|
||||
const createDummyRobot = require('./helpers/createDummyRobot')
|
||||
|
||||
describe('GCode.receiveGCode', () => {
|
||||
|
||||
test('G90 setzt Absolutmodus', () => {
|
||||
const robot = createDummyRobot()
|
||||
|
||||
robot.moveRelative = true
|
||||
|
||||
GCode.receiveGCode(robot, 'G90')
|
||||
|
||||
expect(robot.moveRelative).toBe(false)
|
||||
expect(robot.calculateAngles3D).not.toHaveBeenCalled()
|
||||
expect(robot.sendCommand).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
test('G91 setzt Relativmodus', () => {
|
||||
const robot = createDummyRobot()
|
||||
|
||||
GCode.receiveGCode(robot, 'G91')
|
||||
|
||||
expect(robot.moveRelative).toBe(true)
|
||||
})
|
||||
|
||||
test('G1 absolut setzt Koordinaten', () => {
|
||||
const robot = createDummyRobot()
|
||||
|
||||
GCode.receiveGCode(robot, 'G90 G1 X10 Y20 Z30')
|
||||
|
||||
expect(robot.x).toBe(10)
|
||||
expect(robot.y).toBe(20)
|
||||
expect(robot.z).toBe(30)
|
||||
|
||||
expect(robot.calculateAngles3D).toHaveBeenCalledTimes(1)
|
||||
expect(robot.sendCommand).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
test('G1 relativ addiert Koordinaten', () => {
|
||||
const robot = createDummyRobot()
|
||||
robot.moveRelative = true
|
||||
robot.x = 5
|
||||
robot.y = 5
|
||||
|
||||
GCode.receiveGCode(robot, 'G1 X2 Y3')
|
||||
|
||||
expect(robot.x).toBe(7)
|
||||
expect(robot.y).toBe(8)
|
||||
})
|
||||
|
||||
test('M1 relativ verändert Motorwerte', () => {
|
||||
const robot = createDummyRobot()
|
||||
robot.moveRelative = true
|
||||
|
||||
GCode.receiveGCode(robot, 'M1 X10 Y20 Z30 A1 B2 C3')
|
||||
|
||||
expect(robot.xMotor).toBe(10)
|
||||
expect(robot.alpha).toBe(20)
|
||||
expect(robot.beta).toBe(30)
|
||||
|
||||
expect(robot.a).toBe(1)
|
||||
expect(robot.b).toBe(2)
|
||||
expect(robot.c).toBe(3)
|
||||
|
||||
expect(robot.calculatePositionFromMotorAngles).toHaveBeenCalled()
|
||||
expect(robot.sendCommand).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
test('G28 setzt Home-Position', () => {
|
||||
const robot = createDummyRobot()
|
||||
|
||||
GCode.receiveGCode(robot, 'G28')
|
||||
|
||||
expect(robot.x).toBe(0)
|
||||
expect(robot.z).toBe(0)
|
||||
expect(robot.y).toBe(robot.l1 + robot.l2 + robot.l3)
|
||||
expect(robot.phi).toBeCloseTo(-Math.PI / 2)
|
||||
expect(robot.theta).toBeCloseTo(Math.PI / 2)
|
||||
})
|
||||
|
||||
test('Sende falsches Format', () =>{
|
||||
const robot = createDummyRobot();
|
||||
GCode.receiveGCode(robot, 'X324');
|
||||
})
|
||||
|
||||
|
||||
test('receiveGCode verarbeitet Buffer korrekt (UTF-8)', () => {
|
||||
const robot = createDummyRobot()
|
||||
|
||||
const buffer = Buffer.from('G90 G1 X12 Y34 Z56', 'utf8')
|
||||
|
||||
GCode.receiveGCode(robot, buffer)
|
||||
|
||||
expect(robot.moveRelative).toBe(false)
|
||||
|
||||
expect(robot.x).toBe(12)
|
||||
expect(robot.y).toBe(34)
|
||||
expect(robot.z).toBe(56)
|
||||
|
||||
expect(robot.calculateAngles3D).toHaveBeenCalledTimes(1)
|
||||
expect(robot.sendCommand).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
36
test/helpers/createDummyRobot.js
Normal file
36
test/helpers/createDummyRobot.js
Normal file
@@ -0,0 +1,36 @@
|
||||
// test/helpers/createDummyRobot.js
|
||||
function createDummyRobot() {
|
||||
return {
|
||||
moveRelative: false,
|
||||
|
||||
// kartesische Position
|
||||
x: 0,
|
||||
y: 0,
|
||||
z: 0,
|
||||
|
||||
phi: 0,
|
||||
theta: 0,
|
||||
psi: 0,
|
||||
e: 0,
|
||||
|
||||
// Motoren
|
||||
xMotor: 0,
|
||||
alpha: 0,
|
||||
beta: 0,
|
||||
a: 0,
|
||||
b: 0,
|
||||
c: 0,
|
||||
|
||||
// Geometrie
|
||||
l1: 10,
|
||||
l2: 10,
|
||||
l3: 10,
|
||||
|
||||
// Methoden → jest.fn erlaubt Call-Tracking
|
||||
calculateAngles3D: jest.fn(),
|
||||
calculatePositionFromMotorAngles: jest.fn(),
|
||||
sendCommand: jest.fn()
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = createDummyRobot
|
||||
Reference in New Issue
Block a user