@Override protected boolean extract0( char[] data, int offset, int length, CSVHeaderInformation optionalData ) { value = safeCastLongToShort( extractLong( data, offset, length ) ); return true; }
@Override protected void extract0( char[] data, int offset, int length, CSVHeaderInformation optionalData ) { int numberOfValues = numberOfValues( data, offset, length ); value = numberOfValues > 0 ? new short[numberOfValues] : EMPTY; for ( int arrayIndex = 0, charIndex = 0; arrayIndex < numberOfValues; arrayIndex++, charIndex++ ) { int numberOfChars = charsToNextDelimiter( data, offset + charIndex, length - charIndex ); value[arrayIndex] = safeCastLongToShort( extractLong( data, offset + charIndex, numberOfChars ) ); charIndex += numberOfChars; } } }
@Test void castLongToShort() { assertEquals(1, safeCastLongToShort( 1L )); assertEquals(10, safeCastLongToShort( 10L )); assertEquals(-1, safeCastLongToShort( -1L )); assertEquals(Short.MAX_VALUE, safeCastLongToShort( Short.MAX_VALUE )); assertEquals(Short.MIN_VALUE, safeCastLongToShort( Short.MIN_VALUE )); }
@Test void failSafeCastLongToShort() { expectedException.expect( ArithmeticException.class ); expectedException.expectMessage( "Value 32768 is too big to be represented as short" ); safeCastLongToShort( Short.MAX_VALUE + 1L ); }
@Override protected boolean extract0( char[] data, int offset, int length, CSVHeaderInformation optionalData ) { value = safeCastLongToShort( extractLong( data, offset, length ) ); return true; }
@Override protected void extract0( char[] data, int offset, int length, CSVHeaderInformation optionalData ) { int numberOfValues = numberOfValues( data, offset, length ); value = numberOfValues > 0 ? new short[numberOfValues] : EMPTY; for ( int arrayIndex = 0, charIndex = 0; arrayIndex < numberOfValues; arrayIndex++, charIndex++ ) { int numberOfChars = charsToNextDelimiter( data, offset + charIndex, length - charIndex ); value[arrayIndex] = safeCastLongToShort( extractLong( data, offset + charIndex, numberOfChars ) ); charIndex += numberOfChars; } } }