Skip to content

Commit 4d5e45c

Browse files
author
Owolabi Legunsen
committed
added test to exercise ClassLoaderObjectInputStream::resolveProxyClass with multiple interfaces
1 parent 733dc26 commit 4d5e45c

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

src/test/java/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import static org.junit.Assert.assertEquals;
2222
import static org.junit.Assert.assertTrue;
23+
import static org.junit.Assert.assertFalse;
2324

2425
/**
2526
* Tests the CountingInputStream.
@@ -183,4 +184,24 @@ public void testResolveProxyClass() throws Exception {
183184
clois.close();
184185
}
185186

187+
@org.junit.Test
188+
public void testResolveProxyClassWithMultipleInterfaces() throws Exception {
189+
190+
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
191+
final ObjectOutputStream oos = new ObjectOutputStream(baos);
192+
oos.writeObject(Boolean.FALSE);
193+
final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
194+
195+
final ClassLoaderObjectInputStream clois =
196+
new ClassLoaderObjectInputStream(getClass().getClassLoader(), bais);
197+
final String[] interfaces = new String[]{Comparable.class.getName(),
198+
Serializable.class.getName(),
199+
Runnable.class.getName()};
200+
final Class<?> result = clois.resolveProxyClass(interfaces);
201+
assertTrue("Assignable", Comparable.class.isAssignableFrom(result));
202+
assertTrue("Assignable", Runnable.class.isAssignableFrom(result));
203+
assertTrue("Assignable", Serializable.class.isAssignableFrom(result));
204+
assertFalse("Not Assignable", Flushable.class.isAssignableFrom(result));
205+
clois.close();
206+
}
186207
}

0 commit comments

Comments
 (0)