package org.easyb.ui.scanner;
import static org.easyb.ui.editor.KeywordEnum.SCENARIO;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.easyb.ui.editor.BehaviourWordRule;
import org.easyb.ui.editor.PartitionScannerBuilder;
import org.eclipse.jface.text.rules.ICharacterScanner;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.lib.action.VoidAction;
public class BehaviourWordRuleTest extends TestCase{
public void testMatch(){
ScannerStub scanner =
new ScannerStub("scenario \"Test scenario\",{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertFalse(token.isUndefined());
assertEquals(24,scanner.getOffSet());
}
//Shouldn`t iterate passed the first character
public void testNoneMatchFirstCharacter(){
ScannerStub scanner =
new ScannerStub("test \"Test scenario\",{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertTrue(token.isUndefined());
assertEquals(0,scanner.getOffSet());
}
public void testNoneMatch(){
ScannerStub scanner =
new ScannerStub("scen \"Test scenario\",{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertTrue(token.isUndefined());
assertEquals(0,scanner.getOffSet());
}
public void testTripleQuotes(){
ScannerStub scanner =
new ScannerStub("scenario \"\"\"Test scenario\"\"\",{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertFalse(token.isUndefined());
assertEquals(28,scanner.getOffSet());
}
//TODO fix
public void testTripleQuotesMissingQuote(){
ScannerStub scanner =
new ScannerStub("scenario \"\"Test scenario\"\"\",{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertTrue(token.isUndefined());
assertEquals(0,scanner.getOffSet());
}
public void testSingleQuotesMatch(){
ScannerStub scanner =
new ScannerStub("scenario 'Test scenario',{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertFalse(token.isUndefined());
assertEquals(24,scanner.getOffSet());
}
public void testSlashMatch(){
ScannerStub scanner =
new ScannerStub("scenario /Test scenario/,{ ");
BehaviourWordRule rule =
new BehaviourWordRule(new Token(PartitionScannerBuilder.EASYB_BEHAVIOUR_SCENARIO_START),SCENARIO.toString());
IToken token = null;
do{
token = rule.evaluate(scanner);
}while(scanner.isEnd());
assertFalse(token.isUndefined());
assertEquals(24,scanner.getOffSet());
}
}