@BeforeSuite public void before() { basicTypes.add(new BCF2TypedValue(1, BCF2Type.INT8)); basicTypes.add(new BCF2TypedValue(1000, BCF2Type.INT16)); basicTypes.add(new BCF2TypedValue(1000000, BCF2Type.INT32)); basicTypes.add(new BCF2TypedValue(1.2345e6, BCF2Type.FLOAT)); basicTypes.add(new BCF2TypedValue("A", BCF2Type.CHAR)); primitives.add(new BCF2TypedValue(0, BCF2Type.INT8)); primitives.add(new BCF2TypedValue(10, BCF2Type.INT8)); primitives.add(new BCF2TypedValue(-1, BCF2Type.INT8)); primitives.add(new BCF2TypedValue(100, BCF2Type.INT8)); primitives.add(new BCF2TypedValue(-100, BCF2Type.INT8)); primitives.add(new BCF2TypedValue(-127, BCF2Type.INT8)); // last value in range primitives.add(new BCF2TypedValue( 127, BCF2Type.INT8)); // last value in range primitives.add(new BCF2TypedValue(-1000, BCF2Type.INT16)); primitives.add(new BCF2TypedValue(1000, BCF2Type.INT16)); primitives.add(new BCF2TypedValue(-128, BCF2Type.INT16)); // first value in range primitives.add(new BCF2TypedValue( 128, BCF2Type.INT16)); // first value in range primitives.add(new BCF2TypedValue(-32767, BCF2Type.INT16)); // last value in range primitives.add(new BCF2TypedValue( 32767, BCF2Type.INT16)); // last value in range primitives.add(new BCF2TypedValue(-32768, BCF2Type.INT32)); // first value in range primitives.add(new BCF2TypedValue( 32768, BCF2Type.INT32)); // first value in range primitives.add(new BCF2TypedValue(-100000, BCF2Type.INT32)); primitives.add(new BCF2TypedValue(100000, BCF2Type.INT32)); primitives.add(new BCF2TypedValue(-2147483647, BCF2Type.INT32)); primitives.add(new BCF2TypedValue(2147483647, BCF2Type.INT32));
private final byte[] encodeRecord(final List<BCF2TypedValue> toEncode) throws IOException { BCF2Encoder encoder = new BCF2Encoder(); for ( final BCF2TypedValue tv : toEncode ) { if ( tv.isMissing() ) encoder.encodeTypedMissing(tv.type); else { final BCF2Type encodedType = encoder.encode(tv.value); if ( tv.type != null ) // only if we have an expectation Assert.assertEquals(encodedType, tv.type); } } // check output final byte[] record = encoder.getRecordBytes(); Assert.assertNotNull(record); Assert.assertTrue(record.length > 0); return record; }
@Test(dataProvider = "BCF2EncodingTestProviderBasicTypes") public void testBCF2EncodingVectorsWithMissing(final List<BCF2TypedValue> toEncode) throws IOException { for ( final BCF2TypedValue tv : toEncode ) { if ( tv.type != BCF2Type.CHAR ) { for ( final int length : Arrays.asList(2, 5, 10, 15, 20, 25) ) { final byte td = BCF2Utils.encodeTypeDescriptor(1, tv.type); final BCF2Encoder encoder = new BCF2Encoder(); for ( int i = 0; i < length; i++ ) { encoder.encodeRawValue(i % 2 == 0 ? null : tv.value, tv.type); } final BCF2Decoder decoder = new BCF2Decoder(encoder.getRecordBytes()); for ( int i = 0; i < length; i++ ) { final Object decoded = decoder.decodeTypedValue(td); myAssertEquals(i % 2 == 0 ? new BCF2TypedValue(null, tv.type) : tv, decoded); } } } } }