public void TestIncorrectGenericEvent() { var test = @" namespace Foo { machine M { start state S { on e<<int> goto S2; } } }"; LanguageTestUtilities.AssertFailedTestLog("Unexpected token inside a generic name.", test); }
public void TestMonitorOnEventDoActionDeclarationWithoutSemicolon() { var test = @" namespace Foo { monitor M { start state S1 { on e do Bar } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \";\".", test); }
public void TestQualifiedDefaultEvent() { var test = @" namespace Foo { machine M { start state S { on Foo.default goto S2; } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected identifier.", test); }
public void TestGenericDefaultEvent() { var test = @" namespace Foo { machine M { start state S { on default<int> goto S2; } } }"; LanguageTestUtilities.AssertFailedTestLog("Invalid generic expression.", test); }
public void TestOnEventDeclarationWithoutHandler() { var test = @" namespace Foo { machine M { start state S1 { on e; } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \"do\", \"goto\" or \"push\".", test); }
public void TestDeferEventDeclarationWithoutComma() { var test = @" namespace Foo { machine M { start state S { defer e1 e2; } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \",\".", test); }
public void TestOnEventDoActionDeclarationWithIncorrectWildcardUse() { var test = @" namespace Foo { machine M { start state S1 { on e.* do Bar } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected identifier.", test); }
public void TestMonitorMethodInsideGroup() { var test = @" namespace Foo { monitor M { group G { void Bar() { } } } }"; LanguageTestUtilities.AssertFailedTestLog("Unexpected token 'void'.", test); }
public void TestAsyncInWrongExitLocation() { var test = @" namespace Foo { machine M { state S1 { exit async {} } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \"{\".", test); }
public void TestOnEventDoActionDeclarationWithoutAction() { var test = @" namespace Foo { machine M { start state S1 { on e do; } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected async keyword, action identifier, or opening curly bracket.", test); }
public void TestAsyncInWrongDoLocation() { var test = @" namespace Foo { machine M { state S1 { async on e do {} } } }"; LanguageTestUtilities.AssertFailedTestLog("'async' was used in an incorrect context.", test); }
public void TestAsyncOnState() { var test = @" namespace Foo { machine M { async state S1 { on e do {} } } }"; LanguageTestUtilities.AssertFailedTestLog("A machine state cannot be async.", test); }
public void TestAsyncOnMachine() { var test = @" namespace Foo { async machine M { start state S1 { on e do {} } } }"; LanguageTestUtilities.AssertFailedTestLog("Unexpected token.", test); }
public void TestOnEventDoActionAnonymousHandlerWithAwaitedAction() { var test = @" namespace Foo { machine M { start state S1 { on e do await {} } } }"; LanguageTestUtilities.AssertFailedTestLog("'await' should not be used on actions.", test); }
public void TestOnEventDoActionDeclarationWithGenericError2() { var test = @" namespace Foo { machine M { start state S1 { on e> do Bar; } } }"; LanguageTestUtilities.AssertFailedTestLog("Invalid generic expression.", test); }
public void TestMonitorEmptyNestedGroup() { var test = @" namespace Foo { monitor M { group G { group G2 { } } } }"; LanguageTestUtilities.AssertFailedTestLog("A state group must declare at least one state.", test); }
public void TestMonitorGroupInsideState() { var test = @" namespace Foo { monitor M { start state S { group G { } } } }"; LanguageTestUtilities.AssertFailedTestLog("Unexpected token.", test); }
public void TestOnEventDoActionDeclarationWithCommaError() { var test = @" namespace Foo { machine M { start state S1 { on e, do Bar } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected event identifier.", test); }
public void TestOnEventGotoStateDeclarationWithGenericError3() { var test = @" namespace Foo { machine M { start state S1 { on e<List<int>>> goto S2; } } }"; LanguageTestUtilities.AssertFailedTestLog("Invalid generic expression.", test); }
public void TestOnEventGotoStateDeclarationWithGenericError1() { var test = @" namespace Foo { machine M { start state S1 { on <> goto S2; } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected event identifier.", test); }
public void TestOnEventGotoStateDeclarationWithoutState() { var test = @" namespace Foo { machine M { start state S1 { on e goto; } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected state identifier.", test); }
public void TestOnEventGotoStateDeclarationWithoutSemicolon() { var test = @" namespace Foo { machine M { start state S1 { on e goto S2 } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \";\".", test); }
public void TestEntryDeclarationWithUnexpectedIdentifier() { var test = @" namespace Foo { machine M { start state S { entry Bar {} } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \"{\".", test); }
public void TestOnlyOneStartState() { var test = @" namespace Foo { machine Machine1 { start state Init : BaseState { } start state BaseState { } } }"; LanguageTestUtilities.AssertFailedTestLog("A machine can declare only a single start state.", test); }
public void TestStateDeclarationWithMoreThanOneExit() { var test = @" namespace Foo { machine M { start state S { exit{} exit {} } } }"; LanguageTestUtilities.AssertFailedTestLog("Duplicate exit declaration.", test); }
public void TestMonitorIgnoreEventDeclarationWithExtraComma() { var test = @" namespace Foo { monitor M { group G { start state S { ignore e1,e2,; } } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected event identifier.", test); }
public void TestMonitorIgnoreEventDeclarationWithoutComma() { var test = @" namespace Foo { monitor M { group G { start state S { ignore e1 e2; } } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected \",\".", test); }
public void TestMachineDeferEventDeclarationWithExtraComma() { var test = @" namespace Foo { machine M { group G { start state S { defer e1,e2,; } } } }"; LanguageTestUtilities.AssertFailedTestLog("Expected event identifier.", test); }
public void TestMonitorStateDeclarationWithMoreThanOneEntry() { var test = @" namespace Foo { monitor M { group G { start state S { entry {} entry{} } } } }"; LanguageTestUtilities.AssertFailedTestLog("Duplicate entry declaration.", test); }
public void TestUsingDeclarationWithoutIdentifier() { var test = "using;"; LanguageTestUtilities.AssertFailedTestLog("Expected identifier.", test); }