You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2009/05/28 14:34:48 UTC
svn commit: r779583 - in /jackrabbit/trunk: jackrabbit-core/
jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/
jackrabbit-spi2jcr/
Author: reschke
Date: Thu May 28 12:34:48 2009
New Revision: 779583
URL: http://svn.apache.org/viewvc?rev=779583&view=rev
Log:
JCR-2056: add test cases (some cause failures, excluded for now)
Modified:
jackrabbit/trunk/jackrabbit-core/pom.xml
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BinaryPropertyTest.java
jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetValueBinaryTest.java
jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml
Modified: jackrabbit/trunk/jackrabbit-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/pom.xml?rev=779583&r1=779582&r2=779583&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-core/pom.xml Thu May 28 12:34:48 2009
@@ -88,6 +88,8 @@
<name>known.issues</name>
<value>
org.apache.jackrabbit.core.xml.DocumentViewTest#testMultiValue
+ org.apache.jackrabbit.test.api.BinaryPropertyTest#testRandomAccess
+ org.apache.jackrabbit.test.api.SetValueBinaryTest#testBinaryParentJcr2
org.apache.jackrabbit.test.api.ShareableNodeTest#testSharedNodePath
org.apache.jackrabbit.test.api.version.VersionHistoryTest#testInitialNumberOfLinearVersions
org.apache.jackrabbit.test.api.version.VersionHistoryTest#testInitiallyGetAllLinearVersionsContainsTheRootAndTheBaseVersion
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BinaryPropertyTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BinaryPropertyTest.java?rev=779583&r1=779582&r2=779583&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BinaryPropertyTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/BinaryPropertyTest.java Thu May 28 12:34:48 2009
@@ -18,12 +18,15 @@
import org.apache.jackrabbit.test.NotExecutableException;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+
+import javax.jcr.Binary;
import javax.jcr.PropertyType;
-import javax.jcr.Value;
import javax.jcr.RepositoryException;
+import javax.jcr.Value;
import javax.jcr.ValueFormatException;
-import java.io.InputStream;
-import java.io.IOException;
/**
* Tests a binary property. If the workspace does not contain a node with a
@@ -89,6 +92,38 @@
}
/**
+ * Tests that when Binary.getStream() is called a second time a new stream
+ * object is returned.
+ */
+ public void testSameStreamJcr2() throws RepositoryException, IOException {
+ Value val = PropertyUtil.getValue(prop);
+ Binary bin = val.getBinary();
+ InputStream in = bin.getStream();
+ InputStream in2 = bin.getStream();
+ try {
+ assertNotSame("Value.getStream() called on a new value " +
+ "object should return a different Stream object.", in, in2);
+ //check if both streams can be read independently but contain the same bytes
+ int n,n2;
+ while ((n = in.read()) != -1) {
+ n2 = in2.read();
+ assertEquals("streams from the same binary object should have identical content", n, n2);
+ }
+ assertEquals("streams from the same binary object should have identical content", -1, in2.read());
+ } finally {
+ // cleaning up
+ try {
+ in.close();
+ } catch (IOException ignore) {}
+ if (in2 != in) {
+ try {
+ in2.close();
+ } catch (IOException ignore) {}
+ }
+ }
+ }
+
+ /**
* Tests the failure of calling Property.getStream() on a multivalue
* property.
*/
@@ -110,6 +145,22 @@
}
/**
+ * Tests the failure of calling Property.getBinary() on a multivalue
+ * property.
+ */
+ public void testMultiValueJcr2() throws RepositoryException, IOException {
+ if (multiple) {
+ try {
+ prop.getBinary();
+ fail("Calling getStream() on a multivalue property " +
+ "should throw a ValueFormatException.");
+ } catch (ValueFormatException vfe) {
+ // ok
+ }
+ }
+ }
+
+ /**
* Tests that Property.getStream() delivers the same as Value.getStream().
* We check this by reading each byte of the two streams and assuring that
* they are equal.
@@ -145,6 +196,35 @@
}
/**
+ * Tests that Value.getStream() delivers the same as Value.getBinary.getStream().
+ * We check this by reading each byte of the two streams and assuring that
+ * they are equal.
+ */
+ public void testValueJcr2() throws IOException, RepositoryException {
+ Value val = PropertyUtil.getValue(prop);
+ InputStream in = val.getStream();
+ InputStream in2 = val.getBinary().getStream();
+ try {
+ int b = in.read();
+ while (b != -1) {
+ int b2 = in2.read();
+ assertEquals("Value.getStream() and Value.getBinary().getStream() " +
+ "return different values.", b, b2);
+ b = in.read();
+ }
+ assertEquals("Value.getStream() and Value.getBinary().getStream() " +
+ "return different values.", -1, in2.read());
+ } finally {
+ try {
+ in.close();
+ } catch (IOException ignore) {}
+ try {
+ in2.close();
+ } catch (IOException ignore) {}
+ }
+ }
+
+ /**
* Tests conversion from Binary type to Boolean type. This is done via
* String conversion.
*/
@@ -295,6 +375,19 @@
}
/**
+ * Tests the Binary.getSize() method.
+ */
+ public void testGetLengthJcr2() throws RepositoryException {
+ Value val = PropertyUtil.getValue(prop);
+ long length = val.getBinary().getSize();
+ long bytes = PropertyUtil.countBytes(prop.getValue());
+ if (bytes != -1) {
+ assertEquals("Binary.getSize() returns wrong number of bytes.",
+ bytes, length);
+ }
+ }
+
+ /**
* Tests the Property.getLengths() method. The test is successful, if either
* -1 is returned
*/
@@ -319,4 +412,51 @@
}
}
}
+
+ /**
+ * Tests the Binary.read() method.
+ */
+ public void testRandomAccess() throws RepositoryException, IOException {
+ Value val = PropertyUtil.getValue(prop);
+ Binary bin = val.getBinary();
+ byte[] buf = new byte[0x1000];
+
+ //verify that reading behind EOF returns -1
+ assertEquals("reading behind EOF must return -1", -1, bin.read(buf, bin.getSize()));
+
+ //read content using Binary.read()
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ for (int cnt, pos = 0; (cnt = bin.read(buf, pos)) > 0; pos += cnt) {
+ out.write(buf, 0, cnt);
+ }
+ byte[] content = out.toByteArray();
+ assertEquals("unexpected content length", bin.getSize(), content.length);
+
+ //verify against stream
+ InputStream in = val.getStream();
+ try {
+ int k = 0;
+ for (int b; (b = in.read()) != -1; k++) {
+ assertEquals("Value.getStream().read() and Value.getBinary().read() " +
+ "return different values.", b, content[k]);
+ }
+ assertEquals("unexpected content length", k, content.length);
+ } finally {
+ try {
+ in.close();
+ } catch (IOException ignore) {}
+ }
+
+ //verify random access
+ buf = new byte[1];
+ assertTrue("unexpected result of Value.getBinary.read()", -1 != bin.read(buf, 0));
+ assertEquals("unexpected result of Value.getBinary.read()", content[0], buf[0]);
+ if (content.length > 0) {
+ assertTrue("unexpected result of Value.getBinary.read()", -1 != bin.read(buf, content.length - 1));
+ assertEquals("unexpected result of Value.getBinary.read()", content[content.length - 1], buf[0]);
+ assertTrue("unexpected result of Value.getBinary.read()", -1 != bin.read(buf, 0));
+ assertEquals("unexpected result of Value.getBinary.read()", content[0], buf[0]);
+ }
+ }
+
}
\ No newline at end of file
Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetValueBinaryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetValueBinaryTest.java?rev=779583&r1=779582&r2=779583&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetValueBinaryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/SetValueBinaryTest.java Thu May 28 12:34:48 2009
@@ -19,14 +19,16 @@
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
-import javax.jcr.Property;
-import javax.jcr.Value;
-import javax.jcr.RepositoryException;
-import javax.jcr.Node;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
+import javax.jcr.Binary;
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+
/**
* Tests the various {@link Property#setValue(Value)} methods.
* <p>
@@ -113,6 +115,21 @@
}
/**
+ * Test the persistence of a property modified with an BinaryValue parameter
+ * and saved from the Session
+ */
+ public void testBinarySessionJcr2() throws RepositoryException, IOException {
+ property1.setValue(value);
+ superuser.save();
+ InputStream in = property1.getValue().getBinary().getStream();
+ try {
+ compareStream(data, in);
+ } finally {
+ in.close();
+ }
+ }
+
+ /**
* Test the persistence of a property modified with an input stream
* parameter and saved from the parent Node
*/
@@ -133,6 +150,23 @@
}
/**
+ * Test the persistence of a property modified with an input stream
+ * parameter and saved from the parent Node
+ */
+ public void testBinaryParentJcr2() throws RepositoryException, IOException {
+ Binary bin = value.getBinary();
+ property1.setValue(bin);
+ node.save();
+ bin = property1.getValue().getBinary();
+ InputStream in = bin.getStream();
+ try {
+ compareStream(data, in);
+ } finally {
+ in.close();
+ }
+ }
+
+ /**
* Test the deletion of a property by assigning it a null value, saved from
* the Session
*/
Modified: jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml?rev=779583&r1=779582&r2=779583&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-spi2jcr/pom.xml Thu May 28 12:34:48 2009
@@ -70,6 +70,12 @@
org.apache.jackrabbit.jcr2spi.name.NamespaceRegistryTest#testReRegisteredNamespaceVisibility
org.apache.jackrabbit.jcr2spi.name.NamespaceRegistryTest#testRegisteredNamespaceVisibility
org.apache.jackrabbit.value.BinaryValueTest#testBinaryValueEquals
+ org.apache.jackrabbit.test.api.BinaryPropertyTest#testSameStreamJcr2
+ org.apache.jackrabbit.test.api.BinaryPropertyTest#testValueJcr2
+ org.apache.jackrabbit.test.api.BinaryPropertyTest#testGetLengthJcr2
+ org.apache.jackrabbit.test.api.BinaryPropertyTest#testRandomAccess
+ org.apache.jackrabbit.test.api.SetValueBinaryTest#testBinarySessionJcr2
+ org.apache.jackrabbit.test.api.SetValueBinaryTest#testBinaryParentJcr2
org.apache.jackrabbit.test.api.lock.LockManagerTest
org.apache.jackrabbit.test.api.observation.GetDateTest
org.apache.jackrabbit.test.api.observation.GetIdentifierTest