package org.jacorb.test.bugs.bug272; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.jacorb.test.harness.ORBTestCase; import org.junit.Test; import org.omg.CORBA.Any; import org.omg.CORBA.OctetSeqHelper; /** * Test for bug 272, byte array in Any. * * @author Andre Spiegel */ public class Bug272Test extends ORBTestCase { /** * Puts a byte array of length 1 into an Any. * (Regression test for bug #272) */ @Test public void test_Any_byte_array_1() { do_Any_byte_array (1); } /** * Puts a byte array of length 3999 into an Any, * which is one less than the deferred write limit. * (Regression test for bug #272) */ @Test public void test_Any_byte_array_3999() { do_Any_byte_array (3999); } /** * Puts a byte array of length 4000 into an Any, * which is the deferred write limit. * (Regression test for bug #272) */ @Test public void test_Any_byte_array_4000() { do_Any_byte_array (4000); } /** * Puts a byte array of length 4001 into an Any, * which is one beyond the deferred write limit. * (Regression test for bug #272) */ @Test public void test_Any_byte_array_4001() { do_Any_byte_array (4001); } /** * Puts a byte array of length 40123 into an Any, * which is way beyond the deferred write limit. * (Regression test for bug #272) */ @Test public void test_Any_byte_array_40123() { do_Any_byte_array (40123); } private void do_Any_byte_array (int length) { Any a = orb.create_any(); byte[] b = new byte[length]; for (int i=0; i<b.length; i++) { b[i] = (byte)(i % 256); } OctetSeqHelper.insert( a, b ); byte[] result = OctetSeqHelper.extract( a ); assertTrue ( "arrays are the same", b != result); assertEquals( "wrong length of resulting array: ", b.length, result.length ); for (int i=0; i<result.length; i++) { assertEquals( "wrong array element at index " + i, b[i], result[i] ); } } }