Source code: org/apache/http/io/TestHttpDataInputStream.java
1 /*
2 * $HeadURL: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha2/src/test/org/apache/http/io/TestHttpDataInputStream.java $
3 * $Revision: 376458 $
4 * $Date: 2006-02-09 23:22:06 +0100 (Thu, 09 Feb 2006) $
5 * ====================================================================
6 *
7 * Copyright 1999-2006 The Apache Software Foundation
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ====================================================================
21 *
22 * This software consists of voluntary contributions made by many
23 * individuals on behalf of the Apache Software Foundation. For more
24 * information on the Apache Software Foundation, please see
25 * <http://www.apache.org/>.
26 *
27 */
28
29 package org.apache.http.io;
30
31 import org.apache.http.mockup.HttpDataReceiverMockup;
32
33 import junit.framework.Test;
34 import junit.framework.TestCase;
35 import junit.framework.TestSuite;
36
37 /**
38 * Simple tests for {@link HttpDataInputStream}.
39 *
40 * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
41 */
42 public class TestHttpDataInputStream extends TestCase {
43
44 // ------------------------------------------------------------ Constructor
45 public TestHttpDataInputStream(String testName) {
46 super(testName);
47 }
48
49 // ------------------------------------------------------------------- Main
50 public static void main(String args[]) {
51 String[] testCaseName = { TestHttpDataInputStream.class.getName() };
52 junit.textui.TestRunner.main(testCaseName);
53 }
54
55 // ------------------------------------------------------- TestCase Methods
56
57 public static Test suite() {
58 return new TestSuite(TestHttpDataInputStream.class);
59 }
60
61 public void testConstructor() throws Exception {
62 HttpDataReceiver receiver = new HttpDataReceiverMockup(new byte[] {});
63 new HttpDataInputStream(receiver);
64 try {
65 new HttpDataInputStream(null);
66 fail("IllegalArgumentException should have been thrown");
67 } catch (IllegalArgumentException ex) {
68 //expected
69 }
70 }
71
72 public void testBasicRead() throws Exception {
73 byte[] input = new byte[] {'a', 'b', 'c'};
74 HttpDataReceiverMockup receiver = new HttpDataReceiverMockup(input);
75 HttpDataInputStream instream = new HttpDataInputStream(receiver);
76 byte[] tmp = new byte[2];
77 assertEquals(2, instream.read(tmp, 0, tmp.length));
78 assertEquals('a', tmp[0]);
79 assertEquals('b', tmp[1]);
80 assertEquals('c', instream.read());
81 assertEquals(-1, instream.read(tmp, 0, tmp.length));
82 assertEquals(-1, instream.read());
83 assertEquals(-1, instream.read(tmp, 0, tmp.length));
84 assertEquals(-1, instream.read());
85 }
86
87 public void testClosedCondition() throws Exception {
88 byte[] input = new byte[] {'a', 'b', 'c'};
89 HttpDataReceiverMockup receiver = new HttpDataReceiverMockup(input);
90 HttpDataInputStream instream = new HttpDataInputStream(receiver);
91
92 instream.close();
93 instream.close();
94
95 assertTrue(instream.available() == 0);
96 byte[] tmp = new byte[2];
97 assertEquals(-1, instream.read(tmp, 0, tmp.length));
98 assertEquals(-1, instream.read());
99 assertEquals(-1, instream.read(tmp, 0, tmp.length));
100 assertEquals(-1, instream.read());
101 }
102
103 public void testAvailable() throws Exception {
104 byte[] input = new byte[] {'a', 'b', 'c'};
105 HttpDataReceiverMockup receiver = new HttpDataReceiverMockup(input);
106 HttpDataInputStream instream = new HttpDataInputStream(receiver);
107 assertTrue(instream.available() > 0);
108 }
109
110 }