javatests/de/jflex/testcase/token_limit/LimitTest0.java (55 lines of code) (raw):

/* * Copyright 2023, Gerwin Klein <lsf@jflex.de> * SPDX-License-Identifier: BSD-3-Clause */ package de.jflex.testcase.token_limit; import static com.google.common.truth.Truth.assertThat; import de.jflex.util.scanner.ScannerFactory; import java.io.EOFException; import org.junit.Test; /** * Test success cases for {@code %token_size_limit} directive. * * <p>See also <a href="https://github.com/jflex-de/jflex/issues/197">#197</a>. */ public class LimitTest0 { private final ScannerFactory<Limit_Success> scannerFactory = ScannerFactory.of(Limit_Success::new); @Test public void only_long_token() throws Exception { Limit_Success scanner = scannerFactory.createScannerWithContent("aaaaaaaa"); assertThat(scanner.yylex()).isEqualTo(0); assertThat(scanner.yylex()).isEqualTo(-1); } @Test public void two_long_tokens() throws Exception { Limit_Success scanner = scannerFactory.createScannerWithContent("aaaaaaaaaaaaaaaa"); assertThat(scanner.yylex()).isEqualTo(0); assertThat(scanner.yylex()).isEqualTo(0); assertThat(scanner.yylex()).isEqualTo(-1); } @Test public void two_long_tokens_separated() throws Exception { Limit_Success scanner = scannerFactory.createScannerWithContent("baaaaaaaabbaaaaaaaa"); assertThat(scanner.yylex()).isEqualTo(1); assertThat(scanner.yylex()).isEqualTo(0); assertThat(scanner.yylex()).isEqualTo(1); assertThat(scanner.yylex()).isEqualTo(1); assertThat(scanner.yylex()).isEqualTo(0); assertThat(scanner.yylex()).isEqualTo(-1); } @Test public void too_long() throws Exception { Limit_Success scanner = scannerFactory.createScannerWithContent("cccccccccc"); try { scanner.yylex(); assertThat(false).isTrue(); } catch (EOFException e) { assertThat(e.getMessage()).isEqualTo("Scan buffer limit reached [8]"); } } @Test public void too_long_later() throws Exception { Limit_Success scanner = scannerFactory.createScannerWithContent("aaaaaaaabbcccccccccc"); assertThat(scanner.yylex()).isEqualTo(0); assertThat(scanner.yylex()).isEqualTo(1); assertThat(scanner.yylex()).isEqualTo(1); try { assertThat(scanner.yylex()).isEqualTo(3); assertThat(false).isTrue(); } catch (EOFException e) { assertThat(e.getMessage()).isEqualTo("Scan buffer limit reached [8]"); } } }