Skip to content

Commit 475e024

Browse files
Remove getState() from RelpParser, add toString() that prints only current state, add tests for it (#56)
1 parent 862c451 commit 475e024

2 files changed

Lines changed: 56 additions & 2 deletions

File tree

src/main/java/com/teragrep/rlp_01/RelpParser.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,11 @@ public ByteBuffer getData() {
7373
return this.frameData;
7474
}
7575

76-
public RelpParserState getState() {
77-
return state;
76+
@Override
77+
public String toString() {
78+
return "RelpParser{" +
79+
"state=" + state +
80+
'}';
7881
}
7982

8083
private enum RelpParserState {
@@ -95,6 +98,9 @@ private enum RelpParserState {
9598
Byte to be parsed.
9699
*/
97100
public void parse(byte b) {
101+
if(this.isComplete) {
102+
throw new IllegalStateException("parser was not reset after completing");
103+
}
98104
switch (this.state) {
99105
case TXN:
100106
if (b == ' '){

src/test/java/com/teragrep/rlp_01/RelpParserTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,54 @@ public void testMultipleMessagesInRow() {
161161
Assertions.assertEquals("five!", results.get(2), "parser getData() differs");
162162
}
163163

164+
@Test
165+
public void testToStringStateZeroLengthNewline() {
166+
RelpParser parser = createParser("0 syslog 0\n");
167+
Assertions.assertEquals("RelpParser{state=NL}", parser.toString(), "Parser toString() differs");
168+
}
169+
170+
@Test
171+
public void testToStringStateZeroLengthSpace() {
172+
RelpParser parser = createParser("0 syslog 0 ");
173+
Assertions.assertEquals("RelpParser{state=NL}", parser.toString(), "Parser toString() differs");
174+
}
175+
176+
@Test
177+
public void testToStringStateTxn() {
178+
RelpParser parser = createParser("0");
179+
Assertions.assertEquals("RelpParser{state=TXN}", parser.toString(), "Parser toString() differs");
180+
}
181+
182+
@Test
183+
public void testToStringStateCommand() {
184+
RelpParser parser = createParser("0 syslog");
185+
Assertions.assertEquals("RelpParser{state=COMMAND}", parser.toString(), "Parser toString() differs");
186+
}
187+
188+
@Test
189+
public void testToStringStateLength() {
190+
RelpParser parser = createParser("0 syslog 3");
191+
Assertions.assertEquals("RelpParser{state=LENGTH}", parser.toString(), "Parser toString() differs");
192+
}
193+
194+
@Test
195+
public void testToStringStateDataIncomplete() {
196+
RelpParser parser = createParser("0 syslog 3 he");
197+
Assertions.assertEquals("RelpParser{state=DATA}", parser.toString(), "Parser toString() differs");
198+
}
199+
200+
@Test
201+
public void testToStringStateDataComplete() {
202+
RelpParser parser = createParser("0 syslog 3 hey");
203+
Assertions.assertEquals("RelpParser{state=NL}", parser.toString(), "Parser toString() differs");
204+
}
205+
206+
@Test
207+
public void testToStringStateNLAfterData() {
208+
RelpParser parser = createParser("0 syslog 3 hey\n");
209+
Assertions.assertEquals("RelpParser{state=NL}", parser.toString(), "Parser toString() differs");
210+
}
211+
164212
@Disabled(value="Triggers BufferOverflow and is not gracefully handled")
165213
@Test
166214
public void testVeryLongTxnId() {

0 commit comments

Comments
 (0)