Skip to content

Commit 64c75a7

Browse files
committed
spring-projectsgh-277: added unit tests
1 parent 59218e2 commit 64c75a7

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package org.springframework.shell.jline;
2+
3+
import org.jline.reader.EOFError;
4+
import org.jline.reader.impl.DefaultParser;
5+
import org.junit.jupiter.params.ParameterizedTest;
6+
import org.junit.jupiter.params.provider.Arguments;
7+
import org.junit.jupiter.params.provider.MethodSource;
8+
9+
import java.io.Reader;
10+
import java.io.StringReader;
11+
import java.util.stream.Stream;
12+
13+
import static org.junit.jupiter.api.Assertions.*;
14+
15+
class FileInputProviderTests {
16+
private final ExtendedDefaultParser springParser = new ExtendedDefaultParser();
17+
private final DefaultParser jlineParser = new DefaultParser();
18+
private FileInputProvider fileInputProvider;
19+
20+
static Stream<Arguments> regularLinesUnclosedQuotes() {
21+
return Stream.of(
22+
Arguments.of("Regular line with unclosed 'quote"),
23+
Arguments.of("Regular line with unclosed \"quote")
24+
);
25+
}
26+
27+
static Stream<Arguments> commentsUnclosedQuotes() {
28+
return Stream.of(
29+
Arguments.of("//Commented line with unclosed 'quote"),
30+
Arguments.of("//Commented line with unclosed \"quote")
31+
);
32+
}
33+
34+
@ParameterizedTest
35+
@MethodSource("regularLinesUnclosedQuotes")
36+
void shouldThrowOnUnclosedQuoteDefaultParser(String line) {
37+
jlineParser.setEofOnUnclosedQuote(true);
38+
Reader reader = new StringReader(line);
39+
fileInputProvider = new FileInputProvider(reader, jlineParser);
40+
Exception exception = assertThrows(EOFError.class, () -> {
41+
fileInputProvider.readInput();
42+
});
43+
String expectedExceptionMessage = "Missing closing quote";
44+
String actualExceptionMessage = exception.getMessage();
45+
assertTrue(actualExceptionMessage.contains(expectedExceptionMessage));
46+
}
47+
48+
@ParameterizedTest
49+
@MethodSource("regularLinesUnclosedQuotes")
50+
void shouldThrowOnUnclosedQuoteExtendedParser(String line) {
51+
springParser.setEofOnUnclosedQuote(true);
52+
Reader reader = new StringReader(line);
53+
fileInputProvider = new FileInputProvider(reader, springParser);
54+
Exception exception = assertThrows(EOFError.class, () -> {
55+
fileInputProvider.readInput();
56+
});
57+
String expectedExceptionMessage = "Missing closing quote";
58+
String actualExceptionMessage = exception.getMessage();
59+
assertTrue(actualExceptionMessage.contains(expectedExceptionMessage));
60+
}
61+
62+
@ParameterizedTest
63+
@MethodSource("commentsUnclosedQuotes")
64+
void shoulNotThrowOnUnclosedQuoteDefaultParser(String line) {
65+
jlineParser.setEofOnUnclosedQuote(true);
66+
Reader reader = new StringReader(line);
67+
fileInputProvider = new FileInputProvider(reader, jlineParser);
68+
assertDoesNotThrow(() -> {
69+
fileInputProvider.readInput();
70+
});
71+
}
72+
73+
@ParameterizedTest
74+
@MethodSource("commentsUnclosedQuotes")
75+
void shouldNotThrowOnUnclosedQuoteExtendedParser(String line) {
76+
springParser.setEofOnUnclosedQuote(true);
77+
Reader reader = new StringReader(line);
78+
fileInputProvider = new FileInputProvider(reader, springParser);
79+
assertDoesNotThrow(() -> {
80+
fileInputProvider.readInput();
81+
});
82+
}
83+
}

0 commit comments

Comments
 (0)