package org.goko.core.rs274ngcv3.assertion; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.goko.core.common.exception.GkException; import org.goko.core.gcode.bean.GCodeCommand; import org.goko.core.gcode.bean.GCodeContext; import org.goko.core.gcode.service.IGCodeService; import org.goko.core.rs274ngcv3.parser.GCodeLexer; import org.goko.core.rs274ngcv3.parser.GCodeToken; import org.junit.Assert; public class AssertGCode { public static void assertParseEquals(IGCodeService service , String command) throws GkException{ GCodeCommand comm = service.parseCommand(command, new GCodeContext()); String converted = new String(service.convert(comm)); AssertGCode.assertEquals(command, converted); } public static void assertEquals(String expectedGCodeCommand, String actualGCodeCommand) throws GkException{ GCodeLexer gcodeLexer = new GCodeLexer(); List<GCodeToken> lstExpectedTokens = gcodeLexer.createTokens(expectedGCodeCommand); List<GCodeToken> lstActualTokens = gcodeLexer.createTokens(actualGCodeCommand); List<GCodeToken> lstActualTmp = gcodeLexer.createTokens(actualGCodeCommand); if(CollectionUtils.size(lstExpectedTokens) != CollectionUtils.size(lstActualTokens)){ Assert.fail("The 2 commands are not equal : Exepcted '"+expectedGCodeCommand+"', got '"+actualGCodeCommand+"'"); } for (GCodeToken gCodeToken : lstExpectedTokens) { if(lstActualTmp.contains(gCodeToken)){ lstActualTmp.remove(gCodeToken); }else{ Assert.fail("The 2 commands are not equal : Exepcted '"+expectedGCodeCommand+"', got '"+actualGCodeCommand+"'"); } } } }