AbstractCharStreamScanner implements CharStreamScanner { @Override public String readWhile(CharFilter filter) { return readWhile(filter, Integer.MAX_VALUE); } AbstractCharStreamScanner(); @Override int readDigit(); @Override double readDouble(); @Override float readFloat(); @Override int skipWhile(CharFilter filter); @Override char skipWhileAndPeek(CharFilter filter); @Override char skipWhileAndPeek(CharFilter filter, int max); @Override String readWhile(CharFilter filter); @Override String readUntil(CharFilter filter, boolean acceptEof, String stop); @Override String readUntil(CharFilter filter, boolean acceptEot, String stop, boolean ignoreCase); @Override boolean skipOver(String substring); @Override boolean skipOver(String substring, boolean ignoreCase); @Override String readLine(); @Override boolean expect(String expected); @Override boolean expectStrict(String expected); @Override Character readJavaCharLiteral(); @Override String readJavaStringLiteral();  }
@Test public void testReadWhile() { String string = "abc def ghi"; CharFilter textFilter = CharFilter.ASCII_LETTER_FILTER; CharFilter spaceFilter = CharFilter.WHITESPACE_FILTER; CharStreamScanner scanner = scanner(string); assertThat(scanner.readWhile(textFilter)).isEqualTo("abc"); assertThat(scanner.readWhile(textFilter)).isEmpty(); assertThat(scanner.readWhile(textFilter, 0)).isEmpty(); assertThat(scanner.readWhile(spaceFilter)).isEqualTo(" "); assertThat(scanner.readWhile(textFilter)).isEqualTo("def"); assertThat(scanner.readWhile(spaceFilter)).isEqualTo(" "); assertThat(scanner.readWhile(textFilter, 2)).isEqualTo("gh"); assertThat(scanner.readWhile(textFilter, 2)).isEqualTo("i"); assertThat(scanner.hasNext()).isFalse(); }