Blame view

src/test/java/com/ishchuk/antlr/LogParserUnitTest.java 1.48 KB
ea3b85f2   eishchuk   Initial commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  package com.ishchuk.antlr;
  
  import static org.hamcrest.CoreMatchers.is;
  import static org.hamcrest.MatcherAssert.assertThat;
  
  import com.ishchuk.antlr.log.LogListener;
  import com.ishchuk.antlr.log.model.LogLevel;
  import com.ishchuk.antlr.log.model.LogEntry;
  import com.ishchuk.antlr4.LogLexer;
  import com.ishchuk.antlr4.LogParser;
  import org.antlr.v4.runtime.CharStreams;
  import org.antlr.v4.runtime.CommonTokenStream;
  import org.antlr.v4.runtime.tree.ParseTreeWalker;
  import org.junit.Test;
  
  import java.time.LocalDateTime;
  
  
  public class LogParserUnitTest {
  
      @Test
      public void whenLogContainsOneErrorLogEntry_thenOneErrorIsReturned() throws Exception {
          String logLines = "2018-May-05 14:20:21 DEBUG entering awesome method\r\n" +
                  "2018-May-05 14:20:24 ERROR Bad thing happened\r\n";
          LogLexer serverLogLexer = new LogLexer(CharStreams.fromString(logLines));
          CommonTokenStream tokens = new CommonTokenStream( serverLogLexer );
          LogParser logParser = new LogParser(tokens);
          ParseTreeWalker walker = new ParseTreeWalker();
          LogListener logWalker = new LogListener();
          walker.walk(logWalker, logParser.log());
  
          assertThat(logWalker.getEntries().size(), is(2));
          LogEntry error = logWalker.getEntries().get(1);
          assertThat(error.getLevel(), is(LogLevel.ERROR));
          assertThat(error.getMessage(), is("Bad thing happened"));
          assertThat(error.getTimestamp(), is(LocalDateTime.of(2018,5,5,14,20,24)));
      }
  }