You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2014/10/14 20:34:50 UTC
[03/39] Batch Parser
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