package org.synthuse.test;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.synthuse.*;
public class CommandProcessorTest {
String goodTestScript1 = "| do | pause | on | 10 |";
String goodTestScript2 = "| do | pause | on | 10 |\n| do | pause | on | 20 |\n";
String goodTestScript3 = "|do|pause|on|8|\n|do|pause|on|16|\n";
String goodTestScript4 = "| do|pause|on|8|\r\n|do|pause|on|16|\r\n";
String badTestScript1 = "| do | pause | on | bob |\n";
String badTestScript2 = "| do | pause | on | bob |\n| do | pause | on | joe |\n";
CommandProcessor.Events testEvents = new CommandProcessor.Events() {
@Override
public void statusChanged(String status) {
}
@Override
public void executionCompleted() {
}
};
@Before
public void setUp() throws Exception {
CommandProcessor.DEFAULT_QUIET = true;
CommandProcessor.SPEED = 0;
}
@After
public void tearDown() throws Exception {
}
@Test
public void initCommandProcessor() {
CommandProcessor commandProcessor = null;
commandProcessor = new CommandProcessor("");
assertEquals(commandProcessor.scriptStr, "");
commandProcessor = new CommandProcessor(goodTestScript1);
assertEquals(commandProcessor.scriptStr, goodTestScript1);
//this script will be initialized and executed too
commandProcessor = CommandProcessor.executeThreaded(goodTestScript2, testEvents);
assertEquals(commandProcessor.scriptStr, goodTestScript2);
}
@Test
public void ExecuteSingleThreadedValidScripts() {
CommandProcessor commandProcessor = new CommandProcessor("", testEvents);
commandProcessor.run();
assertEquals(commandProcessor.getErrors(), 0);
commandProcessor.setScript(goodTestScript1);
assertEquals(commandProcessor.scriptStr, goodTestScript1);
commandProcessor.run();
assertEquals(commandProcessor.getErrors(), 0);
commandProcessor.setScript(goodTestScript2);
assertEquals(commandProcessor.scriptStr, goodTestScript2);
commandProcessor.run();
assertEquals(commandProcessor.getErrors(), 0);
commandProcessor = new CommandProcessor(goodTestScript3, testEvents);
commandProcessor.run();
assertEquals(commandProcessor.getErrors(), 0);
}
@Test
public void ExecuteMultiThreadedValidScripts() {
CommandProcessor.executeThreaded("", testEvents);
CommandProcessor commandProcessor = null;
commandProcessor = CommandProcessor.executeThreaded(goodTestScript1, testEvents);
assertEquals(commandProcessor.getErrors(), 0);
commandProcessor = CommandProcessor.executeThreaded(goodTestScript2, testEvents);
assertEquals(commandProcessor.getErrors(), 0);
commandProcessor = CommandProcessor.executeThreaded(goodTestScript3, testEvents);
assertEquals(commandProcessor.getErrors(), 0);
//CommandProcessor.executeThreaded(goodTestScript3, null);
}
@Test
public void ExecuteSingleThreadedBadScripts() {
//undefined command
CommandProcessor commandProcessor = new CommandProcessor("| do | xasdffds |", testEvents);
commandProcessor.setQuiet(true);
commandProcessor.run();
//System.out.println(commandProcessor.lastError);
//2014-03-25 10:19:37.54 - Error: Command 'xasdffds' not found.
assertEquals(commandProcessor.getErrors(), 1);
commandProcessor.setScript(badTestScript1);
commandProcessor.setQuiet(true);
commandProcessor.run();
//System.out.println(commandProcessor.lastError);
assertEquals(commandProcessor.getErrors(), 1);
assertTrue(commandProcessor.lastError.length() > 1);
commandProcessor.setScript(badTestScript2);
commandProcessor.setQuiet(true);
assertEquals(commandProcessor.scriptStr, badTestScript2);
commandProcessor.run();
//System.out.println(commandProcessor.lastError);
assertEquals(commandProcessor.getErrors(), 2);
assertTrue(commandProcessor.lastError.length() > 1);
}
// test running mulithreaded bad scripts
// test parsing bars, and arguments that contain values with bars
// test command sections ie keyboard, mouse, win, main, base
}