Source code: org/apache/http/io/TestContentLengthInputStream.java
1 /*
2 * $HeadURL: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha2/src/test/org/apache/http/io/TestContentLengthInputStream.java $
3 * $Revision: 325980 $
4 * $Date: 2005-10-17 22:39:18 +0200 (Mon, 17 Oct 2005) $
5 * ====================================================================
6 *
7 * Copyright 2002-2004 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 java.io.ByteArrayOutputStream;
32 import java.io.IOException;
33 import java.io.InputStream;
34
35 import org.apache.http.mockup.HttpDataReceiverMockup;
36 import org.apache.http.util.EncodingUtils;
37
38 import junit.framework.Test;
39 import junit.framework.TestCase;
40 import junit.framework.TestSuite;
41
42 public class TestContentLengthInputStream extends TestCase {
43
44 public TestContentLengthInputStream(String testName) {
45 super(testName);
46 }
47
48 // ------------------------------------------------------- TestCase Methods
49
50 public static Test suite() {
51 return new TestSuite(TestContentLengthInputStream.class);
52 }
53
54 // ------------------------------------------------------------------- Main
55 public static void main(String args[]) {
56 String[] testCaseName = { TestContentLengthInputStream.class.getName() };
57 junit.textui.TestRunner.main(testCaseName);
58 }
59
60 private static final String CONTENT_CHARSET = "ISO-8859-1";
61
62 public void testConstructors() throws Exception {
63 new ContentLengthInputStream(new HttpDataReceiverMockup(new byte[] {}), 10);
64 try {
65 new ContentLengthInputStream(null, 10);
66 fail("IllegalArgumentException should have been thrown");
67 } catch (IllegalArgumentException ex) {
68 // expected
69 }
70 try {
71 new ContentLengthInputStream(new HttpDataReceiverMockup(new byte[] {}), -10);
72 fail("IllegalArgumentException should have been thrown");
73 } catch (IllegalArgumentException ex) {
74 // expected
75 }
76 }
77
78 public void testBasics() throws IOException {
79 String correct = "1234567890123456";
80 InputStream in = new ContentLengthInputStream(new HttpDataReceiverMockup(
81 EncodingUtils.getBytes(correct, CONTENT_CHARSET)), 10L);
82 ByteArrayOutputStream out = new ByteArrayOutputStream();
83
84 byte[] buffer = new byte[50];
85 int len = in.read(buffer, 0, 2);
86 out.write(buffer, 0, len);
87 len = in.read(buffer);
88 out.write(buffer, 0, len);
89
90 String result = EncodingUtils.getString(out.toByteArray(), CONTENT_CHARSET);
91 assertEquals(result, "1234567890");
92 }
93
94 public void testSkip() throws IOException {
95 InputStream in = new ContentLengthInputStream(new HttpDataReceiverMockup(new byte[20]), 10L);
96 assertEquals(10, in.skip(10));
97 assertTrue(in.read() == -1);
98
99 in = new ContentLengthInputStream(new HttpDataReceiverMockup(new byte[20]), 10L);
100 in.read();
101 assertEquals(9, in.skip(10));
102 assertTrue(in.read() == -1);
103
104 in = new ContentLengthInputStream(new HttpDataReceiverMockup(new byte[20]), 2L);
105 in.read();
106 in.read();
107 assertTrue(in.skip(10) <= 0);
108 assertTrue(in.skip(-1) == 0);
109 assertTrue(in.read() == -1);
110
111 in = new ContentLengthInputStream(new HttpDataReceiverMockup(new byte[2]), 4L);
112 in.read();
113 assertTrue(in.skip(2) == 1);
114 }
115
116 public void testClose() throws IOException {
117 String correct = "1234567890123456";
118 InputStream in = new ContentLengthInputStream(new HttpDataReceiverMockup(
119 EncodingUtils.getBytes(correct, CONTENT_CHARSET)), 10L);
120 in.close();
121 in.close();
122 try {
123 in.read();
124 fail("IOException should have been thrown");
125 } catch (IOException ex) {
126 // expected
127 }
128 byte[] tmp = new byte[10];
129 try {
130 in.read(tmp);
131 fail("IOException should have been thrown");
132 } catch (IOException ex) {
133 // expected
134 }
135 try {
136 in.read(tmp, 0, tmp.length);
137 fail("IOException should have been thrown");
138 } catch (IOException ex) {
139 // expected
140 }
141 }
142
143 }
144