1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.compress.utils;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertTrue;
21 import static org.junit.jupiter.api.Assertions.fail;
22
23 import java.io.IOException;
24 import java.io.InputStream;
25
26 import org.junit.jupiter.api.Test;
27
28 public class SkipShieldingInputStreamTest {
29
30 @Test
31 public void testSkipDelegatesToRead() throws IOException {
32 try (InputStream i = new SkipShieldingInputStream(new InputStream() {
33 @Override
34 public int read() {
35 return -1;
36 }
37
38 @Override
39 public int read(byte[] b, int off, int len) {
40 return len;
41 }
42
43 @Override
44 public long skip(long n) {
45 fail("skip invoked");
46 return -1;
47 }
48 })) {
49 assertEquals(100, i.skip(100));
50 }
51 }
52
53 @Test
54 public void testSkipHasAnUpperBoundOnRead() throws IOException {
55 try (InputStream i = new SkipShieldingInputStream(new InputStream() {
56 @Override
57 public int read() {
58 return -1;
59 }
60
61 @Override
62 public int read(byte[] b, int off, int len) {
63 return len;
64 }
65
66 @Override
67 public long skip(long n) {
68 fail("skip invoked");
69 return -1;
70 }
71 })) {
72 assertTrue(Integer.MAX_VALUE > i.skip(Long.MAX_VALUE));
73 }
74 }
75
76 @Test
77 public void testSkipSwallowsNegativeArguments() throws IOException {
78 try (InputStream i = new SkipShieldingInputStream(new InputStream() {
79 @Override
80 public int read() {
81 return -1;
82 }
83
84 @Override
85 public int read(byte[] b, int off, int len) {
86 fail("read invoked");
87 return len;
88 }
89
90 @Override
91 public long skip(long n) {
92 fail("skip invoked");
93 return -1;
94 }
95 })) {
96 assertEquals(0, i.skip(Long.MIN_VALUE));
97 }
98 }
99
100 }