Source code: org/apache/http/io/TestHttpDataOutputStream.java
1 /*
2 * $HeadURL: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha2/src/test/org/apache/http/io/TestHttpDataOutputStream.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.HttpDataTransmitterMockup;
32
33 import junit.framework.Test;
34 import junit.framework.TestCase;
35 import junit.framework.TestSuite;
36
37 /**
38 * Simple tests for {@link HttpDataOutputStream}.
39 *
40 * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
41 */
42 public class TestHttpDataOutputStream extends TestCase {
43
44 // ------------------------------------------------------------ Constructor
45 public TestHttpDataOutputStream(String testName) {
46 super(testName);
47 }
48
49 // ------------------------------------------------------------------- Main
50 public static void main(String args[]) {
51 String[] testCaseName = { TestHttpDataOutputStream.class.getName() };
52 junit.textui.TestRunner.main(testCaseName);
53 }
54
55 // ------------------------------------------------------- TestCase Methods
56
57 public static Test suite() {
58 return new TestSuite(TestHttpDataOutputStream.class);
59 }
60
61 public void testConstructor() throws Exception {
62 HttpDataTransmitterMockup transmitter = new HttpDataTransmitterMockup();
63 new HttpDataOutputStream(transmitter);
64 try {
65 new HttpDataOutputStream(null);
66 fail("IllegalArgumentException should have been thrown");
67 } catch (IllegalArgumentException ex) {
68 //expected
69 }
70 }
71
72 public void testBasicWrite() throws Exception {
73 HttpDataTransmitterMockup transmitter = new HttpDataTransmitterMockup();
74 HttpDataOutputStream outstream = new HttpDataOutputStream(transmitter);
75 outstream.write(new byte[] {'a', 'b'}, 0, 2);
76 outstream.write('c');
77 outstream.flush();
78
79 byte[] input = transmitter.getData();
80
81 assertNotNull(input);
82 byte[] expected = new byte[] {'a', 'b', 'c'};
83 assertEquals(expected.length, input.length);
84 for (int i = 0; i < expected.length; i++) {
85 assertEquals(expected[i], input[i]);
86 }
87 }
88
89 public void testClosedCondition() throws Exception {
90 HttpDataTransmitterMockup transmitter = new HttpDataTransmitterMockup();
91 HttpDataOutputStream outstream = new HttpDataOutputStream(transmitter);
92 outstream.close();
93 outstream.close();
94
95 try {
96 byte[] tmp = new byte[2];
97 outstream.write(tmp, 0, tmp.length);
98 fail("IllegalStateException should have been thrown");
99 } catch (IllegalStateException e) {
100 //expected
101 }
102 try {
103 outstream.write('a');
104 fail("IllegalStateException should have been thrown");
105 } catch (IllegalStateException e) {
106 //expected
107 }
108 try {
109 outstream.flush();
110 fail("IllegalStateException should have been thrown");
111 } catch (IllegalStateException e) {
112 //expected
113 }
114 }
115
116 }