You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sebb <se...@gmail.com> on 2012/03/14 13:45:16 UTC

Re: svn commit: r1300516 - in /commons/proper/csv/trunk/src: main/java/org/apache/commons/csv/UnicodeUnescapeReader.java test/java/org/apache/commons/csv/CharBufferTest.java test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java

On 14 March 2012 12:01,  <eb...@apache.org> wrote:
> Author: ebourg
> Date: Wed Mar 14 12:01:47 2012
> New Revision: 1300516
>
> URL: http://svn.apache.org/viewvc?rev=1300516&view=rev
> Log:
> Improved test coverage
>
> Modified:
>    commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>    commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CharBufferTest.java
>    commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
>
> Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
> URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java?rev=1300516&r1=1300515&r2=1300516&view=diff
> ==============================================================================
> --- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java (original)
> +++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java Wed Mar 14 12:01:47 2012
> @@ -50,12 +50,7 @@ class UnicodeUnescapeReader extends Read
>
>             if (c == '\\') {
>                 int l = reader.read(sequence);
> -                if (l == sequence.length
> -                        && 'u' == sequence[0]
> -                        && isHexadecimal(sequence[1])
> -                        && isHexadecimal(sequence[2])
> -                        && isHexadecimal(sequence[3])
> -                        && isHexadecimal(sequence[4])) {
> +                if (l == sequence.length && isUnicodeSequence(sequence)) {
>                     // unicode escape found
>                     c = Integer.parseInt(new String(sequence, 1, 4), 16);
>
> @@ -71,7 +66,15 @@ class UnicodeUnescapeReader extends Read
>
>         return count;
>     }
> -
> +
> +    private boolean isUnicodeSequence(char[] sequence) {
> +        return 'u' == sequence[0]
> +                && isHexadecimal(sequence[1])
> +                && isHexadecimal(sequence[2])
> +                && isHexadecimal(sequence[3])
> +                && isHexadecimal(sequence[4]);
> +    }

What if the sequence is not exactly 5 characters long?

> +
>     private boolean isHexadecimal(char c) {
>         return ('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || ('A' <= c && c <= 'F');
>     }
>
> Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CharBufferTest.java
> URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CharBufferTest.java?rev=1300516&r1=1300515&r2=1300516&view=diff
> ==============================================================================
> --- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CharBufferTest.java (original)
> +++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CharBufferTest.java Wed Mar 14 12:01:47 2012
> @@ -164,4 +164,16 @@ public class CharBufferTest extends Test
>         buffer.ensureCapacity(8);
>         assertTrue(buffer.capacity() >= 8);
>     }
> +
> +    public void testTrim() throws Exception {
> +        CharBuffer buffer = new CharBuffer();
> +        buffer.append("          ");
> +        buffer.trimTrailingWhitespace();
> +        assertEquals(0, buffer.length());
> +
> +        buffer = new CharBuffer();
> +        buffer.append("Hello World!    ");
> +        buffer.trimTrailingWhitespace();
> +        assertEquals("Hello World!", buffer.toString());
> +    }
>  }
>
> Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java
> URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java?rev=1300516&r1=1300515&r2=1300516&view=diff
> ==============================================================================
> --- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java (original)
> +++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java Wed Mar 14 12:01:47 2012
> @@ -14,6 +14,7 @@
>  * See the License for the specific language governing permissions and
>  * limitations under the License.
>  */
> +
>  package org.apache.commons.csv;
>
>  import java.io.StringReader;
> @@ -21,15 +22,19 @@ import java.util.Arrays;
>
>  import junit.framework.TestCase;
>
> -/**
> - * ExtendedBufferedReaderTest
> - */
>  public class ExtendedBufferedReaderTest extends TestCase {
>
> -    public void testReadLookahead1() throws Exception {
> +    public void testEmptyInput() throws Exception {
> +        ExtendedBufferedReader br = getBufferedReader("");
> +        assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.read());
> +        assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.lookAhead());
> +        assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.readAgain());
> +        assertNull(br.readLine());
> +        assertEquals(0, br.read(new char[10], 0, 0));
> +    }
>
> -        assertEquals(ExtendedBufferedReader.END_OF_STREAM, getEBR("").read());
> -        ExtendedBufferedReader br = getEBR("1\n2\r3\n");
> +    public void testReadLookahead1() throws Exception {
> +        ExtendedBufferedReader br = getBufferedReader("1\n2\r3\n");
>         assertEquals('1', br.lookAhead());
>         assertEquals(ExtendedBufferedReader.UNDEFINED, br.readAgain());
>         assertEquals('1', br.read());
> @@ -82,12 +87,8 @@ public class ExtendedBufferedReaderTest
>     public void testReadLookahead2() throws Exception {
>         char[] ref = new char[5];
>         char[] res = new char[5];
> -
> -        ExtendedBufferedReader br = getEBR("");
> -        assertEquals(0, br.read(res, 0, 0));
> -        assertTrue(Arrays.equals(res, ref));
> -
> -        br = getEBR("abcdefg");
> +
> +        ExtendedBufferedReader br = getBufferedReader("abcdefg");
>         ref[0] = 'a';
>         ref[1] = 'b';
>         ref[2] = 'c';
> @@ -100,18 +101,17 @@ public class ExtendedBufferedReaderTest
>         assertEquals(1, br.read(res, 4, 1));
>         assertTrue(Arrays.equals(res, ref));
>         assertEquals('d', br.readAgain());
> -
>     }
>
>     public void testReadLine() throws Exception {
> -        ExtendedBufferedReader br = getEBR("");
> +        ExtendedBufferedReader br = getBufferedReader("");
>         assertTrue(br.readLine() == null);
>
> -        br = getEBR("\n");
> +        br = getBufferedReader("\n");
>         assertTrue(br.readLine().equals(""));
>         assertTrue(br.readLine() == null);
>
> -        br = getEBR("foo\n\nhello");
> +        br = getBufferedReader("foo\n\nhello");
>         assertEquals(0, br.getLineNumber());
>         assertTrue(br.readLine().equals("foo"));
>         assertEquals(1, br.getLineNumber());
> @@ -122,7 +122,7 @@ public class ExtendedBufferedReaderTest
>         assertTrue(br.readLine() == null);
>         assertEquals(3, br.getLineNumber());
>
> -        br = getEBR("foo\n\nhello");
> +        br = getBufferedReader("foo\n\nhello");
>         assertEquals('f', br.read());
>         assertEquals('o', br.lookAhead());
>         assertTrue(br.readLine().equals("oo"));
> @@ -136,7 +136,7 @@ public class ExtendedBufferedReaderTest
>         assertEquals(3, br.getLineNumber());
>
>
> -        br = getEBR("foo\rbaar\r\nfoo");
> +        br = getBufferedReader("foo\rbaar\r\nfoo");
>         assertTrue(br.readLine().equals("foo"));
>         assertEquals('b', br.lookAhead());
>         assertTrue(br.readLine().equals("baar"));
> @@ -145,7 +145,7 @@ public class ExtendedBufferedReaderTest
>         assertTrue(br.readLine() == null);
>     }
>
> -    private ExtendedBufferedReader getEBR(String s) {
> +    private ExtendedBufferedReader getBufferedReader(String s) {
>         return new ExtendedBufferedReader(new StringReader(s));
>     }
>  }
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1300516 - in /commons/proper/csv/trunk/src: main/java/org/apache/commons/csv/UnicodeUnescapeReader.java test/java/org/apache/commons/csv/CharBufferTest.java test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java

Posted by Emmanuel Bourg <eb...@apache.org>.
Le 14/03/2012 13:45, sebb a écrit :

> What if the sequence is not exactly 5 characters long?

Nothing because it never happens :)


Emmanuel Bourg