/*
Copywrite 2013 Will Winder
This file is part of Universal Gcode Sender (UGS).
UGS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
UGS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with UGS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.willwinder.universalgcodesender;
import com.willwinder.universalgcodesender.GrblUtils.Capabilities;
import static org.junit.Assert.*;
import com.willwinder.universalgcodesender.model.*;
import com.willwinder.universalgcodesender.model.UnitUtils;
import java.util.ArrayList;
import org.junit.Test;
/**
*
* @author wwinder
*/
public class GrblUtilsTest {
/**
* Test of isGrblVersionString method, of class GrblUtils.
*/
@Test
public void testIsGrblVersionString() {
System.out.println("isGrblVersionString");
String response;
Boolean expResult;
Boolean result;
response = "Grbl 0.8c";
expResult = true;
result = GrblUtils.isGrblVersionString(response);
assertEquals(expResult, result);
response = "blah 0.8c";
expResult = false;
result = GrblUtils.isGrblVersionString(response);
assertEquals(expResult, result);
}
/**
* Test of getVersionDouble method, of class GrblUtils.
*/
@Test
public void testGetVersionDouble() {
System.out.println("getVersionDouble");
String response;
double expResult;
double result;
response = "Grbl 0.8c";
expResult = 0.8;
result = GrblUtils.getVersionDouble(response);
assertEquals(expResult, result, 0.0);
response = "CarbideMotion 0.9g";
expResult = 0.9;
result = GrblUtils.getVersionDouble(response);
assertEquals(expResult, result, 0.0);
}
/**
* Test of getVersionLetter method, of class GrblUtils.
*/
@Test
public void testGetVersionLetter() {
System.out.println("getVersionLetter");
String response = "Grbl 0.8c";
Character expResult = 'c';
Character result = GrblUtils.getVersionLetter(response);
assertEquals(expResult, result);
}
@Test
public void testGetHomingCommand() {
System.out.println("getHomingCommand");
double version;
Character letter;
String result;
String expResult;
version = 0.7;
letter = null;
expResult = "";
result = GrblUtils.getHomingCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = null;
expResult = GrblUtils.GCODE_PERFORM_HOMING_CYCLE_V8;
result = GrblUtils.getHomingCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = 'c';
expResult = GrblUtils.GCODE_PERFORM_HOMING_CYCLE_V8C;
result = GrblUtils.getHomingCommand(version, letter);
assertEquals(expResult, result);
}
@Test
public void testGetReturnToHomeCommand() {
System.out.println("getReturnToHomeCommands");
double version;
Character letter;
ArrayList<String> result;
String expResult;
version = 0.8;
letter = null;
expResult = GrblUtils.GCODE_RETURN_TO_ZERO_LOCATION_V8;
String expResult2 = GrblUtils.GCODE_RETURN_TO_ZERO_LOCATION_Z0_V8;
result = GrblUtils.getReturnToHomeCommands(version, letter, 0);
assertEquals(2, result.size());
assertEquals(expResult, result.get(0));
assertEquals(expResult2, result.get(1));
// Check the z-raise command is sent first
version = 0.8;
letter = 'c';
expResult = GrblUtils.GCODE_RETURN_TO_ZERO_LOCATION_V8;
expResult2 = GrblUtils.GCODE_RETURN_TO_ZERO_LOCATION_Z0_V8;
result = GrblUtils.getReturnToHomeCommands(version, letter, -10);
assertEquals(3, result.size());
assertEquals(expResult2, result.get(0));
assertEquals(expResult, result.get(1));
assertEquals(expResult2, result.get(2));
}
@Test
public void testGetKillAlarmLockCommand() {
System.out.println("getKillAlarmLockCommand");
double version;
Character letter;
String result;
String expResult;
version = 0.7;
letter = null;
expResult = "";
result = GrblUtils.getKillAlarmLockCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = null;
expResult = "";
result = GrblUtils.getKillAlarmLockCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = 'c';
expResult = GrblUtils.GRBL_KILL_ALARM_LOCK_COMMAND;
result = GrblUtils.getKillAlarmLockCommand(version, letter);
assertEquals(expResult, result);
version = 0.9;
letter = null;
expResult = GrblUtils.GRBL_KILL_ALARM_LOCK_COMMAND;
result = GrblUtils.getKillAlarmLockCommand(version, letter);
assertEquals(expResult, result);
}
@Test
public void testToggleCheckModeCommand() {
System.out.println("getToggleCheckModeCommand");
double version;
Character letter;
String result;
String expResult;
version = 0.7;
letter = null;
expResult = "";
result = GrblUtils.getToggleCheckModeCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = null;
expResult = "";
result = GrblUtils.getToggleCheckModeCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = 'c';
expResult = GrblUtils.GRBL_TOGGLE_CHECK_MODE_COMMAND;
result = GrblUtils.getToggleCheckModeCommand(version, letter);
assertEquals(expResult, result);
version = 0.9;
letter = null;
expResult = GrblUtils.GRBL_TOGGLE_CHECK_MODE_COMMAND;
result = GrblUtils.getToggleCheckModeCommand(version, letter);
assertEquals(expResult, result);
}
@Test
public void testGetViewParserStateCommand() {
System.out.println("getViewParserStateCommand");
double version;
Character letter;
String result;
String expResult;
version = 0.7;
letter = null;
expResult = "";
result = GrblUtils.getViewParserStateCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = null;
expResult = "";
result = GrblUtils.getViewParserStateCommand(version, letter);
assertEquals(expResult, result);
version = 0.8;
letter = 'c';
expResult = GrblUtils.GRBL_VIEW_PARSER_STATE_COMMAND;
result = GrblUtils.getViewParserStateCommand(version, letter);
assertEquals(expResult, result);
version = 0.9;
letter = null;
expResult = GrblUtils.GRBL_VIEW_PARSER_STATE_COMMAND;
result = GrblUtils.getViewParserStateCommand(version, letter);
assertEquals(expResult, result);
}
/**
* Test of getGrblStatusCapabilities method, of class GrblUtils.
*/
@Test
public void testGetGrblStatusCapabilities() {
System.out.println("getGrblStatusCapabilities");
double version;
Character letter;
Capabilities expResult = new Capabilities();
Capabilities result;
version = 0.8;
letter = 'c';
result = GrblUtils.getGrblStatusCapabilities(version, letter);
assertEquals(true, result.REAL_TIME);
assertEquals(false, result.OVERRIDES);
version = 0.8;
letter = 'a';
result = GrblUtils.getGrblStatusCapabilities(version, letter);
assertEquals(false, result.REAL_TIME);
assertEquals(false, result.OVERRIDES);
version = 0.9;
letter = null;
result = GrblUtils.getGrblStatusCapabilities(version, letter);
assertEquals(true, result.REAL_TIME);
assertEquals(false, result.OVERRIDES);
version = 1.1;
letter = null;
result = GrblUtils.getGrblStatusCapabilities(version, letter);
assertEquals(true, result.REAL_TIME);
assertEquals(true, result.OVERRIDES);
assertEquals(true, result.V1_FORMAT);
}
/**
* Test of isGrblStatusString method, of class GrblUtils.
*/
@Test
public void testIsGrblStatusString() {
System.out.println("isGrblStatusString");
String response;
Boolean expResult;
Boolean result;
response = "<position string is in angle brackets...>";
expResult = true;
result = GrblUtils.isGrblStatusString(response);
assertEquals(expResult, result);
response = "blah";
expResult = false;
result = GrblUtils.isGrblStatusString(response);
assertEquals(expResult, result);
}
/**
* Test of getStateFromStatusString method, of class GrblUtils.
*/
@Test
public void testGetStateFromStatusString() {
System.out.println("getStateFromStatusString");
String status;
Capabilities version = new Capabilities();
String expResult;
String result;
status = "<Idle,MPos:5.529,0.560,7.000,WPos:1.529,-5.440,-0.000>";
version.REAL_TIME = true;
expResult = "Idle";
result = GrblUtils.getStateFromStatusString(status, version);
assertEquals(expResult, result);
}
/**
* Test of getMachinePositionFromStatusString method, of class GrblUtils.
*/
@Test
public void testGetMachinePositionFromStatusString() {
System.out.println("getMachinePositionFromStatusString");
String status = "<Idle,MPos:5.529,0.560,7.000,WPos:1.529,-5.440,-0.000>";
Capabilities version = new Capabilities();
version.REAL_TIME = true;
Position expResult = new Position(5.529, 0.560, 7.000, UnitUtils.Units.UNKNOWN);
Position result = GrblUtils.getMachinePositionFromStatusString(status, version, UnitUtils.Units.UNKNOWN);
assertEquals(expResult, result);
}
/**
* Test of getWorkPositionFromStatusString method, of class GrblUtils.
*/
@Test
public void testGetWorkPositionFromStatusString() {
System.out.println("getWorkPositionFromStatusString");
String status = "<Idle,MPos:5.529,0.560,7.000,WPos:1.529,-5.440,-0.000>";
Capabilities version = new Capabilities();
version.REAL_TIME = true;
Position expResult = new Position(1.529, -5.440, -0.000, UnitUtils.Units.UNKNOWN);
Position result = GrblUtils.getWorkPositionFromStatusString(status, version, UnitUtils.Units.UNKNOWN);
assertEquals(expResult, result);
}
@Test
public void testGetResetCoordCommand() {
System.out.println("getResetCoordCommand");
double version = 0.8;
Character letter = 'c';
String result;
result = GrblUtils.getResetCoordToZeroCommand('X', version, letter);
assertEquals("G92 X0", result);
result = GrblUtils.getResetCoordToZeroCommand('Y', version, letter);
assertEquals("G92 Y0", result);
result = GrblUtils.getResetCoordToZeroCommand('Z', version, letter);
assertEquals("G92 Z0", result);
version = 0.9;
result = GrblUtils.getResetCoordToZeroCommand('X', version, letter);
assertEquals("G10 P0 L20 X0", result);
result = GrblUtils.getResetCoordToZeroCommand('Y', version, letter);
assertEquals("G10 P0 L20 Y0", result);
result = GrblUtils.getResetCoordToZeroCommand('Z', version, letter);
assertEquals("G10 P0 L20 Z0", result);
}
}