Author: niallp
Date: Sat Jan  7 01:49:45 2012
New Revision: 1228548

URL: http://svn.apache.org/viewvc?rev=1228548&view=rev
Log:
Checkstyle - replace tab characters with spaces

Modified:
    
commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java
    
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamBlockSize.java
    
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamFile.java
    
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestSimple.java

Modified: 
commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java?rev=1228548&r1=1228547&r2=1228548&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java
 (original)
+++ 
commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java
 Sat Jan  7 01:49:45 2012
@@ -31,256 +31,256 @@ import java.nio.charset.CharsetEncoder;
  */
 public class ReversedLinesFileReader implements Closeable {
 
-       private final int blockSize;
-       private final String encoding;
+    private final int blockSize;
+    private final String encoding;
 
-       private final RandomAccessFile randomAccessFile;
+    private final RandomAccessFile randomAccessFile;
 
-       private final long totalByteLength;
-       private final long totalBlockCount;
+    private final long totalByteLength;
+    private final long totalBlockCount;
+
+    private final byte[][] newLineSequences;
+    private final int avoidNewlineSplitBufferSize;
+    private final int byteDecrement;
 
-       private final byte[][] newLineSequences;
-       private final int avoidNewlineSplitBufferSize;
-       private final int byteDecrement;
-       
     private FilePart currentFilePart;
 
-       private boolean trailingNewlineOfFileSkipped = false;
+    private boolean trailingNewlineOfFileSkipped = false;
 
-       /**
-        * Creates a ReversedLinesFileReader with default block size of 4KB and 
the
-        * platform's default encoding.
-        *
-        * @param file
-        *            the file to be read
-        * @throws IOException
-        */
-       public ReversedLinesFileReader(final File file) throws IOException {
-               this(file, 4096, Charset.defaultCharset().toString());
-       }
-
-       /**
-        * Creates a ReversedLinesFileReader with the given block size and 
encoding.
-        *
-        * @param file
-        *            the file to be read
-        * @param blockSize
-        *            size of the internal buffer (for ideal performance this 
should
-        *            match with the block size of the underlying file system).
-        * @param encoding
-        *            the encoding of the file
-        * @throws IOException
-        */
-       public ReversedLinesFileReader(final File file, final int blockSize, 
final String encoding) throws IOException {
-               this.blockSize = blockSize;
-               this.encoding = encoding;
-               
-               randomAccessFile = new RandomAccessFile(file, "r");
-               totalByteLength = randomAccessFile.length();
-               int lastBlockLength = (int) (totalByteLength % blockSize);
-               if (lastBlockLength > 0) {
-               totalBlockCount = totalByteLength / blockSize + 1;
-               } else {
+    /**
+     * Creates a ReversedLinesFileReader with default block size of 4KB and the
+     * platform's default encoding.
+     *
+     * @param file
+     *            the file to be read
+     * @throws IOException
+     */
+    public ReversedLinesFileReader(final File file) throws IOException {
+        this(file, 4096, Charset.defaultCharset().toString());
+    }
+
+    /**
+     * Creates a ReversedLinesFileReader with the given block size and 
encoding.
+     *
+     * @param file
+     *            the file to be read
+     * @param blockSize
+     *            size of the internal buffer (for ideal performance this 
should
+     *            match with the block size of the underlying file system).
+     * @param encoding
+     *            the encoding of the file
+     * @throws IOException
+     */
+    public ReversedLinesFileReader(final File file, final int blockSize, final 
String encoding) throws IOException {
+        this.blockSize = blockSize;
+        this.encoding = encoding;
+
+        randomAccessFile = new RandomAccessFile(file, "r");
+        totalByteLength = randomAccessFile.length();
+        int lastBlockLength = (int) (totalByteLength % blockSize);
+        if (lastBlockLength > 0) {
+            totalBlockCount = totalByteLength / blockSize + 1;
+        } else {
             totalBlockCount = totalByteLength / blockSize;
-                       if (totalByteLength > 0) {
-                               lastBlockLength = blockSize;
-                       }
-               }
-               currentFilePart = new FilePart(totalBlockCount, 
lastBlockLength, null);
-
-               // --- check & prepare encoding ---
-               Charset charset = Charset.forName(encoding);
-               CharsetEncoder charsetEncoder = charset.newEncoder();
-               float maxBytesPerChar = charsetEncoder.maxBytesPerChar();
-               if(maxBytesPerChar==1f) {
-                       // all one byte encodings are no problem
-                       byteDecrement = 1;
-               } else if(charset == Charset.forName("UTF-8")) {
-                       // UTF-8 works fine out of the box, for multibyte 
sequences a second UTF-8 byte can never be a newline byte
-                       // http://en.wikipedia.org/wiki/UTF-8
-                       byteDecrement = 1;
-               } else if(charset == Charset.forName("Shift_JIS")) {
-                       // Same as for UTF-8
-                       // 
http://www.herongyang.com/Unicode/JIS-Shift-JIS-Encoding.html
-                       byteDecrement = 1;
-               } else if(charset == Charset.forName("UTF-16BE") || charset == 
Charset.forName("UTF-16LE")) {
-                       // UTF-16 new line sequences are not allowed as second 
tuple of four byte sequences, however byte order has to be specified
-                       byteDecrement = 2;
-               } else if(charset == Charset.forName("UTF-16")) {
-                       throw new UnsupportedEncodingException("For UTF-16, you 
need to specify the byte order (use UTF-16BE or UTF-16LE)");
-               } else {
-                       throw new UnsupportedEncodingException("Encoding 
"+encoding+" is not supported yet (feel free to submit a patch)");
-               }
-               // NOTE: The new line sequences are matched in the order given, 
so it is important that \r\n is BEFORE \n
-               newLineSequences = new byte[][] { "\r\n".getBytes(encoding), 
"\n".getBytes(encoding), "\r".getBytes(encoding) };
-               
-               avoidNewlineSplitBufferSize = newLineSequences[0].length;
-
-       }
-
-       /**
-        * Returns the lines of the file from bottom to top.
-        *
-        * @return the next line or null if the start of the file is reached
-        * @throws IOException
-        */
-       public String readLine() throws IOException {
-
-               String line = currentFilePart.readLine();
-               while (line == null) {
-                       currentFilePart = currentFilePart.rollOver();
-                       if (currentFilePart != null) {
-                               line = currentFilePart.readLine();
-                       } else {
-                               // no more fileparts: we're done, leave line 
set to null
-                               break;
-                       }
-               }
-               
-               // aligned behaviour wiht BufferedReader that doesn't return a 
last, emtpy line
-               if("".equals(line) && !trailingNewlineOfFileSkipped) {
-                       trailingNewlineOfFileSkipped = true;
-                       line = readLine();
-               }
-               
-               return line;
-       }
-
-       /**
-        * Closes underlying resources.
-        */
-       public void close() throws IOException {
-               randomAccessFile.close();
-       }
-
-       private class FilePart {
-               private final long no;
-               private final byte[] data;
-
-               private byte[] leftOver;
-
-               private int currentLastBytePos;
-
-               private FilePart(final long no, final int length, final byte[] 
leftOverOfLastFilePart) throws IOException {
-                       this.no = no;
-                       int dataLength = length + (leftOverOfLastFilePart != 
null ? leftOverOfLastFilePart.length : 0);
-                       this.data = new byte[dataLength];
-                       final long off = (no - 1) * blockSize;
-
-                       // read data
-                       if (no > 0 /* file not empty */) {
-                               randomAccessFile.seek(off);
-                               final int countRead = 
randomAccessFile.read(data, 0, length);
-                               if (countRead != length) {
-                                       throw new IllegalStateException("Count 
of requested bytes and actually read bytes don't match");
-                               }
-                       }
-                       // copy left over part into data arr
-                       if (leftOverOfLastFilePart != null) {
-                               System.arraycopy(leftOverOfLastFilePart, 0, 
data, length, leftOverOfLastFilePart.length);
-                       }
-                       this.currentLastBytePos = data.length - 1;
-                       this.leftOver = null;
-               }
-
-               private FilePart rollOver() throws IOException {
-
-                       if (currentLastBytePos > -1) {
-                               throw new IllegalStateException("Current 
currentLastCharPos unexpectedly positive... "
-                                               + "last readLine() should have 
returned something! currentLastCharPos=" + currentLastBytePos);
-                       }
-
-                       if (no > 1) {
-                               return new FilePart(no - 1, blockSize, 
leftOver);
-                       } else {
-                               // NO 1 was the last FilePart, we're finished
-                               if (leftOver != null) {
-                                       throw new 
IllegalStateException("Unexpected leftover of the last block: 
leftOverOfThisFilePart="
-                                                       + new String(leftOver, 
encoding));
-                               }
-                               return null;
-                       }
-               }
-
-               private String readLine() throws IOException {
-
-                       String line = null;
-                       int newLineMatchByteCount;
-                       
-                       boolean isLastFilePart = (no == 1);                     
-
-                       int i = currentLastBytePos;
-                       while (i > -1) {
-                               
-                               if (!isLastFilePart && i < 
avoidNewlineSplitBufferSize) {
-                                       // avoidNewlineSplitBuffer: for all 
except the last file part we
-                                       // take a few bytes to the next file 
part to avoid splitting of newlines
-                                       createLeftOver();
-                                       break; // skip last few bytes and leave 
it to the next file part
-                               }
-                               
-                               // --- check for newline ---
-                               if ((newLineMatchByteCount = 
getNewLineMatchByteCount(data, i)) > 0 /* found newline */) {
-                                       final int lineStart = i + 1;
-                                       int lineLengthBytes = 
currentLastBytePos - lineStart + 1;
-
-                                       if (lineLengthBytes < 0) {
-                                               throw new 
IllegalStateException("Unexpected negative line length="+lineLengthBytes);
-                                       }
-                                       byte[] lineData = new 
byte[lineLengthBytes];
-                                       System.arraycopy(data, lineStart, 
lineData, 0, lineLengthBytes);
-
-                                       line = new String(lineData, encoding);
-                                       
-                                       currentLastBytePos = i - 
newLineMatchByteCount;
-                                       break; // found line
-                               }
-
-                               // --- move cursor ---
-                               i -= byteDecrement;
-
-                               // --- end of file part handling ---
-                               if (i < 0) {
-                                       createLeftOver();
-                                       break; // end of file part
-                               }
-                       }
-                       
-                       // --- last file part handling ---
-                       if (isLastFilePart && leftOver != null) {
-                               // there will be no line break anymore, this is 
the first line of the file
-                               line = new String(leftOver, encoding);
-                               leftOver = null;
-                       }                       
-
-                       return line;
-               }
-
-               private void createLeftOver() {
-                       int lineLengthBytes = currentLastBytePos + 1;
-                       if (lineLengthBytes > 0) {
-                               // create left over for next block
-                               leftOver = new byte[lineLengthBytes];
-                               System.arraycopy(data, 0, leftOver, 0, 
lineLengthBytes);
-                       } else {
-                               leftOver = null;
-                       }
-                       currentLastBytePos = -1;
-               }
-
-               private int getNewLineMatchByteCount(byte[] data, int i) {
-                       for (byte[] newLineSequence : newLineSequences) {
-                               boolean match = true;
-                               for (int j = newLineSequence.length - 1; j >= 
0; j--) {
-                                       int k = i + j - (newLineSequence.length 
- 1);
-                                       match &= k >= 0 && data[k] == 
newLineSequence[j];
-                               }
-                               if (match) {
-                                       return newLineSequence.length;
-                               }
-                       }
-                       return 0;
-               }
-       }
+            if (totalByteLength > 0) {
+                lastBlockLength = blockSize;
+            }
+        }
+        currentFilePart = new FilePart(totalBlockCount, lastBlockLength, null);
+
+        // --- check & prepare encoding ---
+        Charset charset = Charset.forName(encoding);
+        CharsetEncoder charsetEncoder = charset.newEncoder();
+        float maxBytesPerChar = charsetEncoder.maxBytesPerChar();
+        if(maxBytesPerChar==1f) {
+            // all one byte encodings are no problem
+            byteDecrement = 1;
+        } else if(charset == Charset.forName("UTF-8")) {
+            // UTF-8 works fine out of the box, for multibyte sequences a 
second UTF-8 byte can never be a newline byte
+            // http://en.wikipedia.org/wiki/UTF-8
+            byteDecrement = 1;
+        } else if(charset == Charset.forName("Shift_JIS")) {
+            // Same as for UTF-8
+            // http://www.herongyang.com/Unicode/JIS-Shift-JIS-Encoding.html
+            byteDecrement = 1;
+        } else if(charset == Charset.forName("UTF-16BE") || charset == 
Charset.forName("UTF-16LE")) {
+            // UTF-16 new line sequences are not allowed as second tuple of 
four byte sequences, however byte order has to be specified
+            byteDecrement = 2;
+        } else if(charset == Charset.forName("UTF-16")) {
+            throw new UnsupportedEncodingException("For UTF-16, you need to 
specify the byte order (use UTF-16BE or UTF-16LE)");
+        } else {
+            throw new UnsupportedEncodingException("Encoding "+encoding+" is 
not supported yet (feel free to submit a patch)");
+        }
+        // NOTE: The new line sequences are matched in the order given, so it 
is important that \r\n is BEFORE \n
+        newLineSequences = new byte[][] { "\r\n".getBytes(encoding), 
"\n".getBytes(encoding), "\r".getBytes(encoding) };
+
+        avoidNewlineSplitBufferSize = newLineSequences[0].length;
+
+    }
+
+    /**
+     * Returns the lines of the file from bottom to top.
+     *
+     * @return the next line or null if the start of the file is reached
+     * @throws IOException
+     */
+    public String readLine() throws IOException {
+
+        String line = currentFilePart.readLine();
+        while (line == null) {
+            currentFilePart = currentFilePart.rollOver();
+            if (currentFilePart != null) {
+                line = currentFilePart.readLine();
+            } else {
+                // no more fileparts: we're done, leave line set to null
+                break;
+            }
+        }
+
+        // aligned behaviour wiht BufferedReader that doesn't return a last, 
emtpy line
+        if("".equals(line) && !trailingNewlineOfFileSkipped) {
+            trailingNewlineOfFileSkipped = true;
+            line = readLine();
+        }
+
+        return line;
+    }
+
+    /**
+     * Closes underlying resources.
+     */
+    public void close() throws IOException {
+        randomAccessFile.close();
+    }
+
+    private class FilePart {
+        private final long no;
+        private final byte[] data;
+
+        private byte[] leftOver;
+
+        private int currentLastBytePos;
+
+        private FilePart(final long no, final int length, final byte[] 
leftOverOfLastFilePart) throws IOException {
+            this.no = no;
+            int dataLength = length + (leftOverOfLastFilePart != null ? 
leftOverOfLastFilePart.length : 0);
+            this.data = new byte[dataLength];
+            final long off = (no - 1) * blockSize;
+
+            // read data
+            if (no > 0 /* file not empty */) {
+                randomAccessFile.seek(off);
+                final int countRead = randomAccessFile.read(data, 0, length);
+                if (countRead != length) {
+                    throw new IllegalStateException("Count of requested bytes 
and actually read bytes don't match");
+                }
+            }
+            // copy left over part into data arr
+            if (leftOverOfLastFilePart != null) {
+                System.arraycopy(leftOverOfLastFilePart, 0, data, length, 
leftOverOfLastFilePart.length);
+            }
+            this.currentLastBytePos = data.length - 1;
+            this.leftOver = null;
+        }
+
+        private FilePart rollOver() throws IOException {
+
+            if (currentLastBytePos > -1) {
+                throw new IllegalStateException("Current currentLastCharPos 
unexpectedly positive... "
+                        + "last readLine() should have returned something! 
currentLastCharPos=" + currentLastBytePos);
+            }
+
+            if (no > 1) {
+                return new FilePart(no - 1, blockSize, leftOver);
+            } else {
+                // NO 1 was the last FilePart, we're finished
+                if (leftOver != null) {
+                    throw new IllegalStateException("Unexpected leftover of 
the last block: leftOverOfThisFilePart="
+                            + new String(leftOver, encoding));
+                }
+                return null;
+            }
+        }
+
+        private String readLine() throws IOException {
+
+            String line = null;
+            int newLineMatchByteCount;
+
+            boolean isLastFilePart = (no == 1);
+
+            int i = currentLastBytePos;
+            while (i > -1) {
+
+                if (!isLastFilePart && i < avoidNewlineSplitBufferSize) {
+                    // avoidNewlineSplitBuffer: for all except the last file 
part we
+                    // take a few bytes to the next file part to avoid 
splitting of newlines
+                    createLeftOver();
+                    break; // skip last few bytes and leave it to the next 
file part
+                }
+
+                // --- check for newline ---
+                if ((newLineMatchByteCount = getNewLineMatchByteCount(data, 
i)) > 0 /* found newline */) {
+                    final int lineStart = i + 1;
+                    int lineLengthBytes = currentLastBytePos - lineStart + 1;
+
+                    if (lineLengthBytes < 0) {
+                        throw new IllegalStateException("Unexpected negative 
line length="+lineLengthBytes);
+                    }
+                    byte[] lineData = new byte[lineLengthBytes];
+                    System.arraycopy(data, lineStart, lineData, 0, 
lineLengthBytes);
+
+                    line = new String(lineData, encoding);
+
+                    currentLastBytePos = i - newLineMatchByteCount;
+                    break; // found line
+                }
+
+                // --- move cursor ---
+                i -= byteDecrement;
+
+                // --- end of file part handling ---
+                if (i < 0) {
+                    createLeftOver();
+                    break; // end of file part
+                }
+            }
+
+            // --- last file part handling ---
+            if (isLastFilePart && leftOver != null) {
+                // there will be no line break anymore, this is the first line 
of the file
+                line = new String(leftOver, encoding);
+                leftOver = null;
+            }
+
+            return line;
+        }
+
+        private void createLeftOver() {
+            int lineLengthBytes = currentLastBytePos + 1;
+            if (lineLengthBytes > 0) {
+                // create left over for next block
+                leftOver = new byte[lineLengthBytes];
+                System.arraycopy(data, 0, leftOver, 0, lineLengthBytes);
+            } else {
+                leftOver = null;
+            }
+            currentLastBytePos = -1;
+        }
+
+        private int getNewLineMatchByteCount(byte[] data, int i) {
+            for (byte[] newLineSequence : newLineSequences) {
+                boolean match = true;
+                for (int j = newLineSequence.length - 1; j >= 0; j--) {
+                    int k = i + j - (newLineSequence.length - 1);
+                    match &= k >= 0 && data[k] == newLineSequence[j];
+                }
+                if (match) {
+                    return newLineSequence.length;
+                }
+            }
+            return 0;
+        }
+    }
 
 }
\ No newline at end of file

Modified: 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamBlockSize.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamBlockSize.java?rev=1228548&r1=1228547&r2=1228548&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamBlockSize.java
 (original)
+++ 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamBlockSize.java
 Sat Jan  7 01:49:45 2012
@@ -36,155 +36,157 @@ import org.junit.runners.Parameterized.P
 @RunWith(Parameterized.class)
 public class ReversedLinesFileReaderTestParamBlockSize {
 
-       private static final String UTF_8 = "UTF-8";
-       private static final String ISO_8859_1 = "ISO-8859-1";
-       
+    private static final String UTF_8 = "UTF-8";
+    private static final String ISO_8859_1 = "ISO-8859-1";
+
     @SuppressWarnings("boxing")
     @Parameters // small and uneven block sizes are not used in reality but 
are good to show that the algorithm is solid
     public static Collection<Integer[]> blockSizes() {
             return Arrays.asList(new Integer[][] { {1}, {3}, {8}, {256}, 
{4096} });
     }
-       
+
     private ReversedLinesFileReader reversedLinesFileReader;
     private int testParamBlockSize;
 
     public ReversedLinesFileReaderTestParamBlockSize(Integer 
testWithBlockSize) {
-       testParamBlockSize = testWithBlockSize.intValue();
+        testParamBlockSize = testWithBlockSize.intValue();
+    }
+
+    // Strings are escaped in constants to avoid java source encoding issues 
(source file enc is UTF-8):
+
+    // "A Test Line. Special chars: ÄäÜüÖöß 
Ãáéíïçñ ©µ¥£±²®"
+    private static final String TEST_LINE = "A Test Line. Special chars: 
\u00C4\u00E4\u00DC\u00FC\u00D6\u00F6\u00DF 
\u00C3\u00E1\u00E9\u00ED\u00EF\u00E7\u00F1\u00C2 
\u00A9\u00B5\u00A5\u00A3\u00B1\u00B2\u00AE";
+    // Hiragana letters: �����
+    private static final String TEST_LINE_SHIFT_JIS1 = "Hiragana letters: 
\u3041\u3042\u3043\u3044\u3045";
+    // Kanji letters: 明輸�京
+    private static final String TEST_LINE_SHIFT_JIS2 = "Kanji letters: 
\u660E\u8F38\u5B50\u4EAC";
+
+
+
+    @After
+    public void closeReader() {
+        try {
+            reversedLinesFileReader.close();
+        } catch(Exception e) {
+            // ignore
+        }
+    }
+
+    @Test
+    public void testIsoFileDefaults() throws URISyntaxException, IOException {
+        File testFileIso = new 
File(this.getClass().getResource("/test-file-iso8859-1.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileIso, 
testParamBlockSize, ISO_8859_1);
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
+    }
+
+    @Test
+    public void testUTF8FileWindowsBreaks() throws URISyntaxException, 
IOException {
+        File testFileIso = new 
File(this.getClass().getResource("/test-file-utf8-win-linebr.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileIso, 
testParamBlockSize, UTF_8);
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
+    }
+    @Test
+    public void testUTF8FileCRBreaks() throws URISyntaxException, IOException {
+        File testFileIso = new 
File(this.getClass().getResource("/test-file-utf8-cr-only.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileIso, 
testParamBlockSize, UTF_8);
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
+    }
+
+    @Test
+    public void testUTF8File() throws URISyntaxException, IOException {
+        File testFileIso = new 
File(this.getClass().getResource("/test-file-utf8.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileIso, 
testParamBlockSize, UTF_8);
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
+    }
+
+    @Test
+    public void testEmptyFile() throws URISyntaxException, IOException {
+        File testFileEmpty = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileEmpty, 
testParamBlockSize, UTF_8);
+        assertNull(reversedLinesFileReader.readLine());
+    }
+
+    @Test
+    public void testUTF16BEFile() throws URISyntaxException, IOException {
+        File testFileUTF16BE = new 
File(this.getClass().getResource("/test-file-utf16be.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileUTF16BE, 
testParamBlockSize, "UTF-16BE");
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
     }
 
-       // Strings are escaped in constants to avoid java source encoding 
issues (source file enc is UTF-8):
-       
-       // "A Test Line. Special chars: ÄäÜüÖöß 
Ãáéíïçñ ©µ¥£±²®"
-       private static final String TEST_LINE = "A Test Line. Special chars: 
\u00C4\u00E4\u00DC\u00FC\u00D6\u00F6\u00DF 
\u00C3\u00E1\u00E9\u00ED\u00EF\u00E7\u00F1\u00C2 
\u00A9\u00B5\u00A5\u00A3\u00B1\u00B2\u00AE";
-       // Hiragana letters: �����
-       private static final String TEST_LINE_SHIFT_JIS1 = "Hiragana letters: 
\u3041\u3042\u3043\u3044\u3045";
-       // Kanji letters: 明輸�京
-       private static final String TEST_LINE_SHIFT_JIS2 = "Kanji letters: 
\u660E\u8F38\u5B50\u4EAC";
-       
-       @After
-       public void closeReader() {
-               try {
-                       reversedLinesFileReader.close();
-               } catch(Exception e) {
-                       // ignore
-               }
-       }
-       
-       @Test
-       public void testIsoFileDefaults() throws URISyntaxException, 
IOException {
-               File testFileIso = new 
File(this.getClass().getResource("/test-file-iso8859-1.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileIso, testParamBlockSize, ISO_8859_1);
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }       
-
-       @Test
-       public void testUTF8FileWindowsBreaks() throws URISyntaxException, 
IOException {
-               File testFileIso = new 
File(this.getClass().getResource("/test-file-utf8-win-linebr.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileIso, testParamBlockSize, UTF_8);
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }
-       @Test
-       public void testUTF8FileCRBreaks() throws URISyntaxException, 
IOException {
-               File testFileIso = new 
File(this.getClass().getResource("/test-file-utf8-cr-only.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileIso, testParamBlockSize, UTF_8);
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }       
-
-       @Test
-       public void testUTF8File() throws URISyntaxException, IOException {
-               File testFileIso = new 
File(this.getClass().getResource("/test-file-utf8.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileIso, testParamBlockSize, UTF_8);
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }
-
-       @Test
-       public void testEmptyFile() throws URISyntaxException, IOException {
-               File testFileEmpty = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileEmpty, testParamBlockSize, UTF_8);
-               assertNull(reversedLinesFileReader.readLine());
-       }       
-       
-       @Test
-       public void testUTF16BEFile() throws URISyntaxException, IOException {
-               File testFileUTF16BE = new 
File(this.getClass().getResource("/test-file-utf16be.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileUTF16BE, testParamBlockSize, "UTF-16BE");
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }
-       
-       @Test
-       public void testUTF16LEFile() throws URISyntaxException, IOException {
-               File testFileUTF16LE = new 
File(this.getClass().getResource("/test-file-utf16le.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileUTF16LE, testParamBlockSize, "UTF-16LE");
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }       
-       
-       @Test
-       public void testShiftJISFile() throws URISyntaxException, IOException {
-               File testFileShiftJIS = new 
File(this.getClass().getResource("/test-file-shiftjis.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileShiftJIS, testParamBlockSize, "Shift_JIS");
-               assertEqualsAndNoLineBreaks(TEST_LINE_SHIFT_JIS2, 
reversedLinesFileReader.readLine());
-               assertEqualsAndNoLineBreaks(TEST_LINE_SHIFT_JIS1, 
reversedLinesFileReader.readLine());
-       }       
-       
-       @Test // this test is run 3x for same block size as we want to test 
with 10
-       public void testFileSizeIsExactMultipleOfBlockSize() throws 
URISyntaxException, IOException {
-               int blockSize = 10;
-               File testFile20Bytes = new 
File(this.getClass().getResource("/test-file-20byteslength.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFile20Bytes, blockSize, ISO_8859_1);
-               String testLine = "123456789";
-               assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
-               assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
-       }       
-
-       @Test
-       public void 
testUTF8FileWindowsBreaksSmallBlockSize2VerifyBlockSpanningNewLines() throws 
URISyntaxException, IOException {
-               File testFileUtf8 = new 
File(this.getClass().getResource("/test-file-utf8-win-linebr.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileUtf8, testParamBlockSize, UTF_8);
-               assertFileWithShrinkingTestLines(reversedLinesFileReader);
-       }
-       
-       @Test
-       public void 
testIsoFileManyWindowsBreaksSmallBlockSize2VerifyBlockSpanningNewLines() throws 
URISyntaxException, IOException {
-               File testFileIso = new 
File(this.getClass().getResource("/test-file-iso8859-1-shortlines-win-linebr.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileIso, testParamBlockSize, ISO_8859_1);
-               
-               for(int i=3;i>0;i--) {
-                       for(int j=1;j<=3;j++) {
-                               assertEqualsAndNoLineBreaks("", 
reversedLinesFileReader.readLine());
-                       }       
-                       assertEqualsAndNoLineBreaks(""+i, 
reversedLinesFileReader.readLine());
-               }
-       }       
-       
-       @Test(expected=UnsupportedEncodingException.class)
-       public void testUnsupportedEncodingUTF16() throws URISyntaxException, 
IOException {
-               File testFileEmpty = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
-               new ReversedLinesFileReader(testFileEmpty, testParamBlockSize, 
"UTF-16");
-       }
-       
-       @Test(expected=UnsupportedEncodingException.class)
-       public void testUnsupportedEncodingBig5() throws URISyntaxException, 
IOException {
-               File testFileEncodingBig5 = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
-               new ReversedLinesFileReader(testFileEncodingBig5, 
testParamBlockSize, "Big5");
-       }       
-       
-       private void assertFileWithShrinkingTestLines(ReversedLinesFileReader 
reversedLinesFileReader) throws IOException {
-               String line = null;
-               int lineCount = 0;
-               while ((line = reversedLinesFileReader.readLine()) != null) {
-                       lineCount++;
-                       assertEqualsAndNoLineBreaks("Line "+lineCount+" is not 
matching", TEST_LINE.substring(0, lineCount), line);
-               }
-       }
-       
-       static void assertEqualsAndNoLineBreaks(String msg, String expected, 
String actual) {
-               if(actual!=null) {
-                       assertFalse("Line contains \\n: line="+actual, 
actual.contains("\n"));
-                       assertFalse("Line contains \\r: line="+actual, 
actual.contains("\r"));
-               }
-               assertEquals(msg, expected, actual);
-       }
-       static void assertEqualsAndNoLineBreaks(String expected, String actual) 
{
-               assertEqualsAndNoLineBreaks(null, expected, actual);
-       }
+    @Test
+    public void testUTF16LEFile() throws URISyntaxException, IOException {
+        File testFileUTF16LE = new 
File(this.getClass().getResource("/test-file-utf16le.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileUTF16LE, 
testParamBlockSize, "UTF-16LE");
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
+    }
+
+    @Test
+    public void testShiftJISFile() throws URISyntaxException, IOException {
+        File testFileShiftJIS = new 
File(this.getClass().getResource("/test-file-shiftjis.bin").toURI());
+        reversedLinesFileReader = new 
ReversedLinesFileReader(testFileShiftJIS, testParamBlockSize, "Shift_JIS");
+        assertEqualsAndNoLineBreaks(TEST_LINE_SHIFT_JIS2, 
reversedLinesFileReader.readLine());
+        assertEqualsAndNoLineBreaks(TEST_LINE_SHIFT_JIS1, 
reversedLinesFileReader.readLine());
+    }
+
+    @Test // this test is run 3x for same block size as we want to test with 10
+    public void testFileSizeIsExactMultipleOfBlockSize() throws 
URISyntaxException, IOException {
+        int blockSize = 10;
+        File testFile20Bytes = new 
File(this.getClass().getResource("/test-file-20byteslength.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFile20Bytes, 
blockSize, ISO_8859_1);
+        String testLine = "123456789";
+        assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
+        assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
+    }
+
+    @Test
+    public void 
testUTF8FileWindowsBreaksSmallBlockSize2VerifyBlockSpanningNewLines() throws 
URISyntaxException, IOException {
+        File testFileUtf8 = new 
File(this.getClass().getResource("/test-file-utf8-win-linebr.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileUtf8, 
testParamBlockSize, UTF_8);
+        assertFileWithShrinkingTestLines(reversedLinesFileReader);
+    }
+
+    @Test
+    public void 
testIsoFileManyWindowsBreaksSmallBlockSize2VerifyBlockSpanningNewLines() throws 
URISyntaxException, IOException {
+        File testFileIso = new 
File(this.getClass().getResource("/test-file-iso8859-1-shortlines-win-linebr.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileIso, 
testParamBlockSize, ISO_8859_1);
+
+        for(int i=3;i>0;i--) {
+            for(int j=1;j<=3;j++) {
+                assertEqualsAndNoLineBreaks("", 
reversedLinesFileReader.readLine());
+            }
+            assertEqualsAndNoLineBreaks(""+i, 
reversedLinesFileReader.readLine());
+        }
+    }
+
+    @Test(expected=UnsupportedEncodingException.class)
+    public void testUnsupportedEncodingUTF16() throws URISyntaxException, 
IOException {
+        File testFileEmpty = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
+        new ReversedLinesFileReader(testFileEmpty, testParamBlockSize, 
"UTF-16");
+    }
+
+    @Test(expected=UnsupportedEncodingException.class)
+    public void testUnsupportedEncodingBig5() throws URISyntaxException, 
IOException {
+        File testFileEncodingBig5 = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
+        new ReversedLinesFileReader(testFileEncodingBig5, testParamBlockSize, 
"Big5");
+    }
+
+    private void assertFileWithShrinkingTestLines(ReversedLinesFileReader 
reversedLinesFileReader) throws IOException {
+        String line = null;
+        int lineCount = 0;
+        while ((line = reversedLinesFileReader.readLine()) != null) {
+            lineCount++;
+            assertEqualsAndNoLineBreaks("Line "+lineCount+" is not matching", 
TEST_LINE.substring(0, lineCount), line);
+        }
+    }
+
+    static void assertEqualsAndNoLineBreaks(String msg, String expected, 
String actual) {
+        if(actual!=null) {
+            assertFalse("Line contains \\n: line="+actual, 
actual.contains("\n"));
+            assertFalse("Line contains \\r: line="+actual, 
actual.contains("\r"));
+        }
+        assertEquals(msg, expected, actual);
+    }
+    static void assertEqualsAndNoLineBreaks(String expected, String actual) {
+        assertEqualsAndNoLineBreaks(null, expected, actual);
+    }
 }

Modified: 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamFile.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamFile.java?rev=1228548&r1=1228547&r2=1228548&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamFile.java
 (original)
+++ 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestParamFile.java
 Sat Jan  7 01:49:45 2012
@@ -45,22 +45,22 @@ public class ReversedLinesFileReaderTest
     @Parameters
     public static Collection<Object[]> blockSizes() {
             return Arrays.asList(new Object[][] {
-                       {"test-file-20byteslength.bin", "ISO_8859_1", null},
-                       {"test-file-iso8859-1-shortlines-win-linebr.bin", 
"ISO_8859_1", null},
-                       {"test-file-iso8859-1.bin", "ISO_8859_1", null},
-                       {"test-file-shiftjis.bin", "Shift_JIS", null},
-                       {"test-file-utf16be.bin", "UTF-16BE", null},
-                       {"test-file-utf16le.bin", "UTF-16LE", null},
-                       {"test-file-utf8-cr-only.bin", "UTF-8", null},
-                       {"test-file-utf8-win-linebr.bin", "UTF-8", null},
+                    {"test-file-20byteslength.bin", "ISO_8859_1", null},
+                    {"test-file-iso8859-1-shortlines-win-linebr.bin", 
"ISO_8859_1", null},
+                    {"test-file-iso8859-1.bin", "ISO_8859_1", null},
+                    {"test-file-shiftjis.bin", "Shift_JIS", null},
+                    {"test-file-utf16be.bin", "UTF-16BE", null},
+                    {"test-file-utf16le.bin", "UTF-16LE", null},
+                    {"test-file-utf8-cr-only.bin", "UTF-8", null},
+                    {"test-file-utf8-win-linebr.bin", "UTF-8", null},
                     {"test-file-utf8-win-linebr.bin", "UTF-8", 
Integer.valueOf(1)},
                     {"test-file-utf8-win-linebr.bin", "UTF-8", 
Integer.valueOf(2)},
                     {"test-file-utf8-win-linebr.bin", "UTF-8", 
Integer.valueOf(3)},
                     {"test-file-utf8-win-linebr.bin", "UTF-8", 
Integer.valueOf(4)},
-                       {"test-file-utf8.bin", "UTF-8", null},
+                    {"test-file-utf8.bin", "UTF-8", null},
             });
     }
-       
+
     private ReversedLinesFileReader reversedLinesFileReader;
     private BufferedReader bufferedReader;
 
@@ -69,48 +69,48 @@ public class ReversedLinesFileReaderTest
     private final int buffSize;
 
     public ReversedLinesFileReaderTestParamFile(String fileName, String 
encoding, Integer buffsize) {
-       this.fileName = fileName;
-       this.encoding = encoding;
-       this.buffSize = buffsize == null ? 4096 : buffsize.intValue();
+        this.fileName = fileName;
+        this.encoding = encoding;
+        this.buffSize = buffsize == null ? 4096 : buffsize.intValue();
+    }
+
+    @Test
+    public void testDataIntegrityWithBufferedReader() throws 
URISyntaxException, IOException {
+        File testFileIso = new 
File(this.getClass().getResource("/"+fileName).toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFileIso, 
buffSize, encoding);
+
+        Stack<String> lineStack = new Stack<String>();
+
+        bufferedReader = new BufferedReader(new InputStreamReader(new 
FileInputStream(testFileIso), encoding));
+        String line = null;
+
+        // read all lines in normal order
+        while((line = bufferedReader.readLine())!=null) {
+            lineStack.push(line);
+        }
+
+        // read in reverse order and compare with lines from stack
+        while((line = reversedLinesFileReader.readLine())!=null) {
+            String lineFromBufferedReader = lineStack.pop();
+            assertEquals(lineFromBufferedReader, line);
+        }
+
+    }
+
+    @After
+    public void closeReader() {
+        try {
+            bufferedReader.close();
+        } catch(Exception e) {
+            // ignore
+        }
+        try {
+            reversedLinesFileReader.close();
+        } catch(Exception e) {
+            // ignore
+        }
     }
 
-       @Test
-       public void testDataIntegrityWithBufferedReader() throws 
URISyntaxException, IOException {
-               File testFileIso = new 
File(this.getClass().getResource("/"+fileName).toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFileIso, buffSize, encoding);
-               
-               Stack<String> lineStack = new Stack<String>();
-               
-               bufferedReader = new BufferedReader(new InputStreamReader(new 
FileInputStream(testFileIso), encoding));
-               String line = null;
-               
-               // read all lines in normal order
-               while((line = bufferedReader.readLine())!=null) {
-                       lineStack.push(line);
-               }
-               
-               // read in reverse order and compare with lines from stack
-               while((line = reversedLinesFileReader.readLine())!=null) {
-                       String lineFromBufferedReader = lineStack.pop();
-                       assertEquals(lineFromBufferedReader, line);
-               }               
-               
-       }       
-
-       @After
-       public void closeReader() {
-               try {
-                       bufferedReader.close();
-               } catch(Exception e) {
-                       // ignore
-               }               
-               try {
-                       reversedLinesFileReader.close();
-               } catch(Exception e) {
-                       // ignore
-               }
-       }
-       
 
 
 }

Modified: 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestSimple.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestSimple.java?rev=1228548&r1=1228547&r2=1228548&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestSimple.java
 (original)
+++ 
commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReversedLinesFileReaderTestSimple.java
 Sat Jan  7 01:49:45 2012
@@ -28,40 +28,40 @@ import org.junit.Test;
 
 
 public class ReversedLinesFileReaderTestSimple {
-       
+
     private ReversedLinesFileReader reversedLinesFileReader;
 
-       @After
-       public void closeReader() {
-               try {
-                       reversedLinesFileReader.close();
-               } catch(Exception e) {
-                       // ignore
-               }
-       }
-       
-       @Test
-       public void testFileSizeIsExactMultipleOfBlockSize() throws 
URISyntaxException, IOException {
-               int blockSize = 10;
-               File testFile20Bytes = new 
File(this.getClass().getResource("/test-file-20byteslength.bin").toURI());
-               reversedLinesFileReader = new 
ReversedLinesFileReader(testFile20Bytes, blockSize, "ISO-8859-1");
-               String testLine = "123456789";
-               assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
-               assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
-       }       
-       
-       @Test(expected=UnsupportedEncodingException.class)
-       public void testUnsupportedEncodingUTF16() throws URISyntaxException, 
IOException {
-               File testFileEmpty = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
-               new ReversedLinesFileReader(testFileEmpty, 4096, "UTF-16");
-       }
-       
-       @Test(expected=UnsupportedEncodingException.class)
-       public void testUnsupportedEncodingBig5() throws URISyntaxException, 
IOException {
-               File testFileEncodingBig5 = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
-               new ReversedLinesFileReader(testFileEncodingBig5, 4096, "Big5");
-       }       
-       
+    @After
+    public void closeReader() {
+        try {
+            reversedLinesFileReader.close();
+        } catch(Exception e) {
+            // ignore
+        }
+    }
+
+    @Test
+    public void testFileSizeIsExactMultipleOfBlockSize() throws 
URISyntaxException, IOException {
+        int blockSize = 10;
+        File testFile20Bytes = new 
File(this.getClass().getResource("/test-file-20byteslength.bin").toURI());
+        reversedLinesFileReader = new ReversedLinesFileReader(testFile20Bytes, 
blockSize, "ISO-8859-1");
+        String testLine = "123456789";
+        assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
+        assertEqualsAndNoLineBreaks(testLine, 
reversedLinesFileReader.readLine());
+    }
+
+    @Test(expected=UnsupportedEncodingException.class)
+    public void testUnsupportedEncodingUTF16() throws URISyntaxException, 
IOException {
+        File testFileEmpty = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
+        new ReversedLinesFileReader(testFileEmpty, 4096, "UTF-16");
+    }
+
+    @Test(expected=UnsupportedEncodingException.class)
+    public void testUnsupportedEncodingBig5() throws URISyntaxException, 
IOException {
+        File testFileEncodingBig5 = new 
File(this.getClass().getResource("/test-file-empty.bin").toURI());
+        new ReversedLinesFileReader(testFileEncodingBig5, 4096, "Big5");
+    }
+
 
 
 }


Reply via email to