Repository: olingo-odata2 Updated Branches: refs/heads/master 14c6dd5be -> e7e44471c
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BufferedReaderIncludingLineEndingsTest.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BufferedReaderIncludingLineEndingsTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BufferedReaderIncludingLineEndingsTest.java new file mode 100644 index 0000000..bd3607a --- /dev/null +++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BufferedReaderIncludingLineEndingsTest.java @@ -0,0 +1,452 @@ +package org.apache.olingo.odata2.core.batch; + +import static org.junit.Assert.*; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.util.List; + +import org.apache.olingo.odata2.core.batch.v2.BufferedReaderIncludingLineEndings; +import org.junit.Test; + +public class BufferedReaderIncludingLineEndingsTest { + + private static final String TEXT_COMBINED = "Test\r" + + "Test2\r\n" + + "Test3\n" + + "Test4\r" + + "\r" + + "\r\n" + + "\r\n" + + "Test5\n" + + "Test6\r\n" + + "Test7\n" + + "\n"; + + private static final String TEXT_SMALL = "Test\r" + + "123"; + private static final String TEXT_EMPTY = ""; + + @Test + public void testSimpleText() throws IOException { + final String TEXT = "Test"; + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals(TEXT, reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testNoText() throws IOException { + final String TEXT = ""; + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testNoBytes() throws IOException { + BufferedReaderIncludingLineEndings reader = + new BufferedReaderIncludingLineEndings(new InputStreamReader(new ByteArrayInputStream(new byte[0]))); + + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testCRLF() throws IOException { + final String TEXT = "Test\r\n" + + "Test2"; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals("Test\r\n", reader.readLine()); + assertEquals("Test2", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testLF() throws IOException { + final String TEXT = "Test\n" + + "Test2"; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals("Test\n", reader.readLine()); + assertEquals("Test2", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testCR() throws IOException { + final String TEXT = "Test\r" + + "Test2"; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals("Test\r", reader.readLine()); + assertEquals("Test2", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testCombined() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_COMBINED); + + assertEquals("Test\r", reader.readLine()); + assertEquals("Test2\r\n", reader.readLine()); + assertEquals("Test3\n", reader.readLine()); + assertEquals("Test4\r", reader.readLine()); + assertEquals("\r", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertEquals("Test5\n", reader.readLine()); + assertEquals("Test6\r\n", reader.readLine()); + assertEquals("Test7\n", reader.readLine()); + assertEquals("\n", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testCombinedBufferSizeTwo() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_COMBINED, 2); + + assertEquals("Test\r", reader.readLine()); + assertEquals("Test2\r\n", reader.readLine()); + assertEquals("Test3\n", reader.readLine()); + assertEquals("Test4\r", reader.readLine()); + assertEquals("\r", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertEquals("Test5\n", reader.readLine()); + assertEquals("Test6\r\n", reader.readLine()); + assertEquals("Test7\n", reader.readLine()); + assertEquals("\n", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testCombinedBufferSizeOne() throws IOException { + final String TEXT = "Test\r" + + "Test2\r\n" + + "Test3\n" + + "Test4\r" + + "\r" + + "\r\n" + + "\r\n" + + "Test5\n" + + "Test6\r\n" + + "Test7\n" + + "\r\n"; + + BufferedReaderIncludingLineEndings reader = create(TEXT, 1); + + assertEquals("Test\r", reader.readLine()); + assertEquals("Test2\r\n", reader.readLine()); + assertEquals("Test3\n", reader.readLine()); + assertEquals("Test4\r", reader.readLine()); + assertEquals("\r", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertEquals("Test5\n", reader.readLine()); + assertEquals("Test6\r\n", reader.readLine()); + assertEquals("Test7\n", reader.readLine()); + assertEquals("\r\n", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + + reader.close(); + } + + @Test + public void testDoubleLF() throws IOException { + final String TEXT = "Test\r" + + "\r"; + + BufferedReaderIncludingLineEndings reader = create(TEXT, 1); + + assertEquals("Test\r", reader.readLine()); + assertEquals("\r", reader.readLine()); + reader.close(); + } + + @Test + public void testSkipSimple() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_SMALL); + + assertEquals(5, reader.skip(5)); // Test\r + assertEquals("123", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testSkipBufferOne() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_SMALL, 1); + + assertEquals(5, reader.skip(5)); // Test\r + assertEquals("123", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testReadThanSkip() throws IOException { + final String TEXT = "Test\r" + + "\r" + + "123"; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals("Test\r", reader.readLine()); + assertEquals(1, reader.skip(1)); // Test\r + assertEquals("123", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testReadMoreBufferCapacityThanCharacterAvailable() throws IOException { + final String TEXT = "Foo"; + char[] buffer = new char[20]; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + assertEquals(3, reader.read(buffer, 0, 20)); + assertEquals(-1, reader.read(buffer, 0, 20)); + reader.close(); + + BufferedReaderIncludingLineEndings readerBufferOne = create(TEXT, 1); + assertEquals(3, readerBufferOne.read(buffer, 0, 20)); + assertEquals(-1, readerBufferOne.read(buffer, 0, 20)); + readerBufferOne.close(); + } + + @Test + public void testSkipZero() throws IOException { + final String TEXT = "Test\r" + + "123\r\n"; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals(0, reader.skip(0)); // Test\r + assertEquals("Test\r", reader.readLine()); + assertEquals("123\r\n", reader.readLine()); + assertNull(reader.readLine()); + assertNull(reader.readLine()); + reader.close(); + } + + @Test + public void testSkipToMuch() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_SMALL); + + assertEquals(8, reader.skip(10)); // Test\r + assertEquals(null, reader.readLine()); + reader.close(); + } + + @Test + public void testReadBufferOne() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_SMALL, 1); + + assertEquals('T', reader.read()); + assertEquals('e', reader.read()); + assertEquals('s', reader.read()); + assertEquals('t', reader.read()); + assertEquals('\r', reader.read()); + assertEquals('1', reader.read()); + assertEquals('2', reader.read()); + assertEquals('3', reader.read()); + assertEquals(-1, reader.read()); + assertEquals(-1, reader.read()); + } + + @Test + public void testReadZeroBytes() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_SMALL, 1); + + char[] buffer = new char[3]; + assertEquals(0, reader.read(buffer, 0, 0)); + assertEquals('T', reader.read()); + assertEquals(0, reader.read(buffer, 0, 0)); + assertEquals("est\r", reader.readLine()); + assertEquals("123", reader.readLine()); + + reader.close(); + } + + @Test + public void testRead() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_SMALL); + + assertEquals('T', reader.read()); + assertEquals('e', reader.read()); + assertEquals('s', reader.read()); + assertEquals('t', reader.read()); + assertEquals('\r', reader.read()); + assertEquals('1', reader.read()); + assertEquals('2', reader.read()); + assertEquals('3', reader.read()); + assertEquals(-1, reader.read()); + assertEquals(-1, reader.read()); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testFailReadBufferAndOffsetBiggerThanBuffer() throws IOException { + BufferedReaderIncludingLineEndings reader = create(""); + + final char[] buffer = new char[3]; + reader.read(buffer, 1, 3); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testFailLengthNegative() throws IOException { + final char[] buffer = new char[3]; + BufferedReaderIncludingLineEndings reader = create("123"); + + reader.read(buffer, 1, -2); + reader.close(); + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testFailOffsetNegative() throws IOException { + final char[] buffer = new char[3]; + BufferedReaderIncludingLineEndings reader = create("123"); + + reader.read(buffer, -1, 2); + reader.close(); + } + + @Test + public void testReadAndReadLine() throws IOException { + final String TEXT = "Test\r" + + "bar\n" + + "123\r\n" + + "foo"; + + BufferedReaderIncludingLineEndings reader = create(TEXT); + + assertEquals('T', reader.read()); + assertEquals('e', reader.read()); + assertEquals('s', reader.read()); + assertEquals('t', reader.read()); + assertEquals("\r", reader.readLine()); + assertEquals("bar\n", reader.readLine()); + assertEquals('1', reader.read()); + assertEquals('2', reader.read()); + assertEquals("3\r\n", reader.readLine()); + assertEquals("foo", reader.readLine()); + assertEquals(null, reader.readLine()); + assertEquals(-1, reader.read()); + } + + @Test(expected = IllegalArgumentException.class) + public void testSkipNegative() throws IOException { + BufferedReaderIncludingLineEndings reader = create("123"); + reader.skip(-1); + } + + @Test(expected = IllegalArgumentException.class) + public void testFailBufferSizeZero() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_EMPTY, 0); + reader.close(); + } + + @Test(expected = NullPointerException.class) + public void testInputStreamIsNull() throws IOException { + // Same behaviour like BufferedReader + BufferedReaderIncludingLineEndings reader = new BufferedReaderIncludingLineEndings(null); + reader.close(); + } + + @Test(expected = IllegalArgumentException.class) + public void testFailBufferSizeNegative() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_EMPTY, -1); + reader.close(); + } + + @Test + public void testMarkSupoorted() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_EMPTY); + + assertEquals(false, reader.markSupported()); + reader.close(); + } + + @Test(expected = IOException.class) + public void testFailMark() throws IOException { + BufferedReaderIncludingLineEndings reader = create("123"); + + reader.mark(1); + } + + @Test(expected = IOException.class) + public void testFailReset() throws IOException { + BufferedReaderIncludingLineEndings reader = create("123"); + + reader.reset(); + } + + @Test + public void testReady() throws IOException { + BufferedReaderIncludingLineEndings reader = create("123\r123"); + assertEquals(false, reader.ready()); + assertEquals("123\r", reader.readLine()); + assertEquals(true, reader.ready()); + assertEquals("123", reader.readLine()); + assertEquals(false, reader.ready()); + + reader.close(); + } + + @Test + public void testToList() throws IOException { + BufferedReaderIncludingLineEndings reader = create(TEXT_COMBINED); + List<String> stringList = reader.toList(); + + assertEquals(11, stringList.size()); + assertEquals("Test\r", stringList.get(0)); + assertEquals("Test2\r\n", stringList.get(1)); + assertEquals("Test3\n", stringList.get(2)); + assertEquals("Test4\r", stringList.get(3)); + assertEquals("\r", stringList.get(4)); + assertEquals("\r\n", stringList.get(5)); + assertEquals("\r\n", stringList.get(6)); + assertEquals("Test5\n", stringList.get(7)); + assertEquals("Test6\r\n", stringList.get(8)); + assertEquals("Test7\n", stringList.get(9)); + assertEquals("\n", stringList.get(10)); + reader.close(); + } + + private BufferedReaderIncludingLineEndings create(final String inputString) throws UnsupportedEncodingException { + return new BufferedReaderIncludingLineEndings(new InputStreamReader(new ByteArrayInputStream(inputString + .getBytes("UTF-8")))); + } + + private BufferedReaderIncludingLineEndings create(final String inputString, int bufferSize) + throws UnsupportedEncodingException { + return new BufferedReaderIncludingLineEndings(new InputStreamReader(new ByteArrayInputStream(inputString + .getBytes("UTF-8"))), bufferSize); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-core/src/test/resources/batchWithPost.batch ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/test/resources/batchWithPost.batch b/odata2-lib/odata-core/src/test/resources/batchWithPost.batch index 2fd509f..b7038e9 100644 --- a/odata2-lib/odata-core/src/test/resources/batchWithPost.batch +++ b/odata2-lib/odata-core/src/test/resources/batchWithPost.batch @@ -14,6 +14,7 @@ Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd --changeset_f980-1cb6-94dd Content-Type: application/http Content-Transfer-Encoding: binary +Content-ID: changeRequest1 PUT Employees('2')/EmployeeName HTTP/1.1 Content-Length: 100000 http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientBatchTest.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientBatchTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientBatchTest.java index 0e1075f..91c5f0d 100644 --- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientBatchTest.java +++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientBatchTest.java @@ -44,8 +44,10 @@ import org.apache.olingo.odata2.api.ep.EntityProvider; import org.apache.olingo.odata2.fit.ref.AbstractRefTest; import org.apache.olingo.odata2.testutil.helper.StringHelper; import org.apache.olingo.odata2.testutil.server.ServletType; +import org.junit.Ignore; import org.junit.Test; +@Ignore public class ClientBatchTest extends AbstractRefTest { public ClientBatchTest(final ServletType servletType) { super(servletType); http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientDeltaResponseTest.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientDeltaResponseTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientDeltaResponseTest.java index f2d0c4b..cedd92a 100644 --- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientDeltaResponseTest.java +++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/client/ClientDeltaResponseTest.java @@ -51,8 +51,10 @@ import org.apache.olingo.odata2.ref.edm.ScenarioEdmProvider; import org.apache.olingo.odata2.testutil.fit.AbstractFitTest; import org.apache.olingo.odata2.testutil.server.ServletType; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; +@Ignore public class ClientDeltaResponseTest extends AbstractFitTest { public ClientDeltaResponseTest(final ServletType servletType) { http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-fit/src/test/resources/batchWithContentId.batch ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-fit/src/test/resources/batchWithContentId.batch b/odata2-lib/odata-fit/src/test/resources/batchWithContentId.batch index 8fb0fa1..f58742e 100644 --- a/odata2-lib/odata-fit/src/test/resources/batchWithContentId.batch +++ b/odata2-lib/odata-fit/src/test/resources/batchWithContentId.batch @@ -17,6 +17,7 @@ Loml/s/2aje2bUNbJcpOZhijEEOfIcSPMrtqgm0xZWu20Vpo46S20sNLSs4NihYGtHuV6EAUVFEREBER --changeset_7638-3d26-8efd Content-Type: application/http Content-Transfer-Encoding: binary +Content-Id: 2 PUT $newEmployee/EmployeeName HTTP/1.1 Content-Length: 100 @@ -30,6 +31,7 @@ Content-Id: 2 --changeset_7638-3d26-8efd Content-Type: application/http Content-Transfer-Encoding: binary +Content-Id: 3 PUT $newEmployee/Age HTTP/1.1 Content-Length: 100 http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-fit/src/test/resources/batchWithContentIdPart2.batch ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-fit/src/test/resources/batchWithContentIdPart2.batch b/odata2-lib/odata-fit/src/test/resources/batchWithContentIdPart2.batch index b7cd3be..0a9ae53 100644 --- a/odata2-lib/odata-fit/src/test/resources/batchWithContentIdPart2.batch +++ b/odata2-lib/odata-fit/src/test/resources/batchWithContentIdPart2.batch @@ -14,10 +14,11 @@ Content-Type: multipart/mixed; boundary=changeset_824f-ce08-1e9d --changeset_824f-ce08-1e9d Content-Type: application/http Content-Transfer-Encoding: binary +Content-ID: employee POST Employees HTTP/1.1 -Content-Type: application/octet-stream Content-ID: employee +Content-Type: application/octet-stream Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1 MaxDataServiceVersion: 2.0 @@ -25,12 +26,13 @@ MaxDataServiceVersion: 2.0 --changeset_824f-ce08-1e9d Content-Type: application/http Content-Transfer-Encoding: binary +Content-Id: AAA PUT $employee/EmployeeName HTTP/1.1 Content-Length: 100000 -Content-Id: AAA Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1 DataServiceVersion: 1.0 +Content-Id: AAA Content-Type: application/json;odata=verbose MaxDataServiceVersion: 2.0 http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6eca235e/odata2-lib/odata-fit/src/test/resources/changeset.batch ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-fit/src/test/resources/changeset.batch b/odata2-lib/odata-fit/src/test/resources/changeset.batch index 3b21367..31b2694 100644 --- a/odata2-lib/odata-fit/src/test/resources/changeset.batch +++ b/odata2-lib/odata-fit/src/test/resources/changeset.batch @@ -13,6 +13,7 @@ Content-Type: multipart/mixed; boundary=changeset_105a-d600-0156 --changeset_105a-d600-0156 Content-Type: application/http Content-Transfer-Encoding: binary +Content-ID: putRequest PUT Employees('2')/EmployeeName HTTP/1.1 Content-Length: 100000 @@ -28,6 +29,7 @@ MaxDataServiceVersion: 2.0 --batch_123 Content-Type: application/http Content-Transfer-Encoding: binary +Content-ID: getRequest GET Employees('2')/EmployeeName HTTP/1.1 Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1
