Subversion Repositories Programming Utils

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
86 rm5248 1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one
3
 * or more contributor license agreements.  See the NOTICE file
4
 * distributed with this work for additional information
5
 * regarding copyright ownership.  The ASF licenses this file
6
 * to you under the Apache License, Version 2.0 (the
7
 * "License"); you may not use this file except in compliance
8
 * with the License.  You may obtain a copy of the License at
9
 *
10
 *   http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied.  See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19
package org.apache.sshd.common.channel;
20
 
21
import java.util.Arrays;
22
 
23
import org.apache.sshd.util.BaseTest;
24
import org.apache.sshd.util.BogusChannel;
25
import org.junit.Test;
26
 
27
import static org.junit.Assert.assertArrayEquals;
28
import static org.junit.Assert.assertEquals;
29
import static org.junit.Assert.fail;
30
 
31
public class ChannelPipedInputStreamTest extends BaseTest {
32
 
33
    @Test
34
    public void testAvailable() throws Exception {
35
        Window window = new Window(new BogusChannel(), null, true, true);
36
        ChannelPipedInputStream stream = new ChannelPipedInputStream(window);
37
 
38
        byte[] b = "test".getBytes();
39
        stream.receive(b, 0, b.length);
40
        assertEquals(b.length, stream.available());
41
 
42
        stream.eof();
43
        assertEquals(b.length, stream.available());
44
 
45
        final byte[] readBytes = new byte[50];
46
        assertEquals(b.length, stream.read(readBytes));
47
        assertStreamEquals(b, readBytes);
48
        assertEquals(-1, stream.available());
49
    }
50
 
51
    private void assertStreamEquals(byte[] expected, byte[] read) {
52
        if (expected.length > read.length) {
53
            fail("Less bytes than expected: " + Arrays.toString(expected) + " but got: " + Arrays.toString(read));
54
        } else {
55
            assertArrayEquals(expected, Arrays.copyOf(read, expected.length));
56
            for (int i = expected.length; i < read.length; i++) {
57
                assertEquals('\0', read[i]);
58
            }
59
        }
60
    }
61
 
62
}