public void UndefinedVariableTest() { string undefined = @" var test = 50; var testCopy = noTest;" ; (Synfron.Staxe.Matcher.Data.IMatchData matchData, bool success, int _, int?_, string _) = LanguageMatchEngine.Match(undefined); Assert.True(success); InstructionGenerator generator = new InstructionGenerator(); LanguageConstraintException exception = Assert.Throws <LanguageConstraintException>(() => generator.Generate(matchData)); Assert.Contains("Variable 'noTest' is not declared.", exception.Message); Assert.Equal(undefined.IndexOf("noTest"), exception.Position); }
public void InvalidAssignmentTest() { string invalidAssignment = @" var callable = () { }; callable() = 7;" ; (Synfron.Staxe.Matcher.Data.IMatchData matchData, bool success, int _, int?_, string _) = LanguageMatchEngine.Match(invalidAssignment); Assert.True(success); InstructionGenerator generator = new InstructionGenerator(); LanguageConstraintException exception = Assert.Throws <LanguageConstraintException>(() => generator.Generate(matchData)); Assert.Contains("Cannot assign to the return of a function.", exception.Message); Assert.Equal(invalidAssignment.IndexOf("= 7"), exception.Position); }