public void CompilerTest(string/*!*/ code, int expectedCompilerWarningCount, int expectedRuntimeWarningCount) { LoggingErrorSink log = new LoggingErrorSink(true); CompilerTest(code, log); Assert(log.ErrorCount == 0 && log.FatalErrorCount == 0, "Compile time error"); Assert(log.WarningCount == expectedCompilerWarningCount, "Wrong number of compile time errors/warnings"); Assert(Context.RuntimeErrorSink.WarningCount == expectedRuntimeWarningCount, "Wrong number of runtime warnings"); }
public AssertTokenizer(Tests /*!*/ tests) { _log = new LoggingErrorSink(); _tests = tests; _context = tests.Context; DefaultEncoding = RubyEncoding.UTF8; Compatibility = tests.Context.RubyOptions.Compatibility; }
public void Scenario_RubyScopeParsing() { LoggingErrorSink log = new LoggingErrorSink(); SourceUnitTree p; SourceUnit unit; unit = Context.CreateSnippet(@" class c << G end ", SourceCodeKind.File); p = new Parser().Parse(unit, new RubyCompilerOptions(), log); Assert(p == null && log.FatalErrorCount == 1); log.ClearCounters(); unit = Context.CreateSnippet(@" def goo(&b) end class C def foo() x.goo() { goo() { class << M def bar() goo() { } end end } } end end BEGIN { goo1() { } } END { goo2() { } } ", SourceCodeKind.File); p = new Parser().Parse(unit, new RubyCompilerOptions(), ErrorSink.Null); Assert(p != null && !log.AnyError); log.ClearCounters(); unit = Context.CreateSnippet(@" for x in array do goo() end ", SourceCodeKind.File); p = new Parser().Parse(unit, new RubyCompilerOptions(), ErrorSink.Null); Assert(p != null && !log.AnyError); log.ClearCounters(); }
public void Scenario_RubyTokenizer1() { LoggingErrorSink log = new LoggingErrorSink(); List <Tokens> tokens; tokens = GetRubyTokens(log, "foo (while (f do end) do end) do end"); Assert(tokens.Count == 14); Assert(tokens[0] == Tokens.Identifier); Assert(tokens[1] == Tokens.LparenArg); Assert(tokens[2] == Tokens.While); Assert(tokens[3] == Tokens.LeftParen); Assert(tokens[4] == Tokens.Identifier); Assert(tokens[5] == Tokens.Do); Assert(tokens[6] == Tokens.End); Assert(tokens[7] == (Tokens)')'); Assert(tokens[8] == Tokens.LoopDo); Assert(tokens[9] == Tokens.End); Assert(tokens[10] == (Tokens)')'); Assert(tokens[11] == Tokens.BlockDo); Assert(tokens[12] == Tokens.End); Assert(tokens[13] == Tokens.EndOfFile); log.Errors.Clear(); tokens = GetRubyTokens(log, "print 'foo'"); Assert(log.Errors.Count == 0); Assert(tokens.Count == 5 && tokens[0] == Tokens.Identifier && tokens[1] == Tokens.StringBeg && tokens[2] == Tokens.StringContent && tokens[3] == Tokens.StringEnd && tokens[4] == Tokens.EndOfFile); Assert(log.Errors.Count == 0); tokens = GetRubyTokens(log, "print '"); Assert(log.Errors.Count == 1 && log.Errors[0].Severity == Severity.Error ); Assert(tokens.Count == 4 && tokens[0] == Tokens.Identifier && tokens[1] == Tokens.StringBeg && tokens[2] == Tokens.StringEnd && tokens[3] == Tokens.EndOfFile); }
public AssertTokenizer(RubyContext /*!*/ context) { _log = new LoggingErrorSink(); _context = context; }