Author: sebb Date: Tue Apr 14 15:17:42 2009 New Revision: 764825 URL: http://svn.apache.org/viewvc?rev=764825&view=rev Log: Additional String <=> Byte array Ascii conversion methods + basic tests
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/ArchiveUtils.java commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/ArchiveUtilsTest.java Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/ArchiveUtils.java URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/ArchiveUtils.java?rev=764825&r1=764824&r2=764825&view=diff ============================================================================== --- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/ArchiveUtils.java (original) +++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/utils/ArchiveUtils.java Tue Apr 14 15:17:42 2009 @@ -78,15 +78,38 @@ * @return <code>true</code> if buffer is the same as the expected string */ public static boolean matchAsciiBuffer(String expected, byte[] buffer){ - byte[] buffer1; + return matchAsciiBuffer(expected, buffer, 0, buffer.length); + } + + /** + * Convert a string to Ascii bytes. + * Used for comparing "magic" strings which need to be independent of the default Locale. + * + * @param inputString + * @return the bytes + */ + public static byte[] toAsciiBytes(String inputString){ try { - buffer1 = expected.getBytes("ASCII"); + return inputString.getBytes("ASCII"); } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); // Should not happen + throw new RuntimeException(e); // Should never happen } - return isEqual(buffer1, 0, buffer1.length, buffer, 0, buffer.length, false); } - + + /** + * Convert an input byte array to a String using the ASCII character set. + * + * @param inputBytes + * @return the bytes, interpreted as an Ascii string + */ + public static String toAsciiString(final byte[] inputBytes){ + try { + return new String(inputBytes, "ASCII"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); // Should never happen + } + } + /** * Compare byte buffers, optionally ignoring trailing nulls * Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/ArchiveUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/ArchiveUtilsTest.java?rev=764825&r1=764824&r2=764825&view=diff ============================================================================== --- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/ArchiveUtilsTest.java (original) +++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/ArchiveUtilsTest.java Tue Apr 14 15:17:42 2009 @@ -20,10 +20,6 @@ import org.apache.commons.compress.utils.ArchiveUtils; -/** - * Check that the different write methods create the same output. - * TODO perform the same checks for reads. - */ public class ArchiveUtilsTest extends AbstractTestCase { private static final int bytesToTest = 50; @@ -57,4 +53,18 @@ assertTrue(ArchiveUtils.matchAsciiBuffer("def\0", buffer2)); assertFalse(ArchiveUtils.matchAsciiBuffer("def", buffer2)); } + + public void testAsciiConversions() { + asciiToByteAndBackOK(""); + asciiToByteAndBackOK("abcd"); + asciiToByteAndBackFail("\u8025"); + } + + private void asciiToByteAndBackOK(String inputString) { + assertEquals(inputString, ArchiveUtils.toAsciiString(ArchiveUtils.toAsciiBytes(inputString))); + } + + private void asciiToByteAndBackFail(String inputString) { + assertFalse(inputString.equals(ArchiveUtils.toAsciiString(ArchiveUtils.toAsciiBytes(inputString)))); + } }