1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.codec.textline;
21
22 import static org.junit.Assert.*;
23
24 import java.nio.ByteBuffer;
25
26 import org.apache.mina.codec.textline.TextLineDecoder.Context;
27 import org.junit.Test;
28
29
30
31
32
33
34 public class UnixTextLineDecoderTest {
35
36 @Test
37 public void testThatEmptyBufferReturnsEmptyResult() {
38 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
39 Context context = decoder.createDecoderState();
40 String results = decoder.decode(ByteBuffer.allocate(0), context);
41 assertNull(results);
42 }
43
44 @Test
45 public void testThatNonLineTerminatedStringReturnsEmptyResult() {
46 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
47 Context context = decoder.createDecoderState();
48 String results = decoder.decode(ByteBuffer.wrap("a string".getBytes()), context);
49 assertNull(results);
50 assertEquals(8, context.getBuffer().position());
51 }
52
53 @Test
54 public void testThatUnixLineTerminatedStringReturnsNonEmptyResult() {
55 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
56 Context context = decoder.createDecoderState();
57 String results = decoder.decode(ByteBuffer.wrap("a string\n".getBytes()), context);
58 assertNotNull(results);
59 assertEquals("a string", results);
60 assertEquals(0, context.getBuffer().position());
61 }
62
63 @Test
64 public void testThatWindowsLineTerminatedStringReturnsNonEmptyResult() {
65 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
66 Context context = decoder.createDecoderState();
67 String results = decoder.decode(ByteBuffer.wrap("a string\r\n".getBytes()), context);
68 assertNotNull(results);
69 assertEquals("a string\r", results);
70 assertEquals(0, context.getBuffer().position());
71 }
72
73 @Test
74 public void testThatContextIsMaintainedBetweenMessages() {
75 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
76 Context context = decoder.createDecoderState();
77 String results = decoder.decode(ByteBuffer.wrap("a string\na".getBytes()), context);
78 assertNotNull(results);
79 assertEquals("a string", results);
80 assertEquals(1, context.getBuffer().position());
81 results = decoder.decode(ByteBuffer.wrap(" string\n".getBytes()), context);
82 assertNotNull(results);
83 assertEquals("a string", results);
84 assertEquals(0, context.getBuffer().position());
85 }
86
87 @Test
88 public void testThatUnixLineTerminatedLongStringReturnsNonEmptyResult() {
89 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
90 Context context = decoder.createDecoderState();
91 StringBuffer sb = new StringBuffer();
92 for (int i = 0; i < 100; ++i) {
93 sb.append("a string");
94 }
95 String results = decoder.decode(ByteBuffer.wrap((sb.toString() + "\n").getBytes()), context);
96 assertNotNull(results);
97 assertEquals(sb.toString(), results);
98 assertEquals(0, context.getBuffer().position());
99 }
100
101 @Test
102 public void testThatWindowsLineTerminatedLongStringReturnsNonEmptyResult() {
103 TextLineDecoder decoder = new TextLineDecoder(LineDelimiter.UNIX);
104 Context context = decoder.createDecoderState();
105 StringBuffer sb = new StringBuffer();
106 for (int i = 0; i < 100; ++i) {
107 sb.append("a string");
108 }
109 String results = decoder.decode(ByteBuffer.wrap((sb.toString() + "\r\n").getBytes()), context);
110 assertNotNull(results);
111 assertEquals(sb.toString() + "\r", results);
112 assertEquals(0, context.getBuffer().position());
113 }
114 }