You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by st...@apache.org on 2012/04/25 18:30:03 UTC
svn commit: r1330400 - in
/jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test:
AbstractMicroKernelIT.java MicroKernelIT.java
Author: stefan
Date: Wed Apr 25 16:30:02 2012
New Revision: 1330400
URL: http://svn.apache.org/viewvc?rev=1330400&view=rev
Log:
OAK-12: Implement a test suite for the MicroKernel (WIP)
Modified:
jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/AbstractMicroKernelIT.java
jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
Modified: jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/AbstractMicroKernelIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/AbstractMicroKernelIT.java?rev=1330400&r1=1330399&r2=1330400&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/AbstractMicroKernelIT.java (original)
+++ jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/AbstractMicroKernelIT.java Wed Apr 25 16:30:02 2012
@@ -26,10 +26,12 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.junit.After;
import org.junit.Before;
+import org.junit.ComparisonFailure;
import org.junit.runners.Parameterized.Parameters;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
/**
* Abstract base class for {@link MicroKernel} integration tests.
@@ -123,6 +125,7 @@ public abstract class AbstractMicroKerne
fixture.tearDownCluster(mks);
}
+ //--------------------------------< utility methods for parsing json data >
/**
* Returns a {@code JSONParser} instance for parsing JSON format data.
* This method returns a cached instance.
@@ -140,7 +143,6 @@ public abstract class AbstractMicroKerne
return parser;
}
- //--------------------------------< utility methods for parsing json data >
/**
* Parses the provided string into a {@code JSONObject}.
*
@@ -176,4 +178,89 @@ public abstract class AbstractMicroKerne
throw new AssertionError("not a valid JSON array: " + e.getMessage());
}
}
+
+ protected void assertPropertyValue(JSONObject obj, String relPath, Double expected)
+ throws AssertionError {
+ Object val = resolveValue(obj, relPath);
+ assertNotNull("not found: " + relPath, val);
+
+ assertEquals(expected, val);
+ }
+
+ protected void assertPropertyValue(JSONObject obj, String relPath, Long expected)
+ throws AssertionError {
+ Object val = resolveValue(obj, relPath);
+ assertNotNull("not found: " + relPath, val);
+
+ assertEquals(expected, val);
+ }
+
+ protected void assertPropertyValue(JSONObject obj, String relPath, Boolean expected)
+ throws AssertionError {
+ Object val = resolveValue(obj, relPath);
+ assertNotNull("not found: " + relPath, val);
+
+ assertEquals(expected, val);
+ }
+
+ protected void assertPropertyValue(JSONObject obj, String relPath, String expected)
+ throws AssertionError {
+ Object val = resolveValue(obj, relPath);
+ assertNotNull("not found: " + relPath, val);
+
+ assertEquals(expected, val);
+ }
+
+ protected void assertPropertyValue(JSONObject obj, String relPath, Object[] expected)
+ throws AssertionError {
+ JSONArray array = resolveArrayValue(obj, relPath);
+ assertNotNull("not found: " + relPath, array);
+
+ assertEquals(expected.length, array.size());
+
+ // JSON numeric types: Double, Long
+ // convert types as necessary for comparison using equals method
+ for (int i = 0; i < array.size(); i++) {
+ Object o1 = expected[i];
+ Object o2 = array.get(i);
+ if (o1 instanceof Number && o2 instanceof Number) {
+ if (o1 instanceof Integer) {
+ o1 = new Long((Integer) o1);
+ } else if (o1 instanceof Short) {
+ o1 = new Long((Short) o1);
+ } else if (o1 instanceof Float) {
+ o1 = new Double((Float) o1);
+ }
+ }
+ assertEquals(o1, o2);
+ }
+ }
+
+ protected JSONObject resolveObjectValue(JSONObject obj, String relPath) {
+ Object val = resolveValue(obj, relPath);
+ if (val instanceof JSONObject) {
+ return (JSONObject) val;
+ }
+ throw new AssertionError("failed to resolve JSONObject value at " + relPath + ": " + val);
+ }
+
+ protected JSONArray resolveArrayValue(JSONObject obj, String relPath) {
+ Object val = resolveValue(obj, relPath);
+ if (val instanceof JSONArray) {
+ return (JSONArray) val;
+ }
+ throw new AssertionError("failed to resolve JSONArray value at " + relPath + ": " + val);
+ }
+
+ protected Object resolveValue(JSONObject obj, String relPath) {
+ String names[] = relPath.split("/");
+ Object val = obj;
+ for (String name : names) {
+ if (! (val instanceof JSONObject)) {
+ throw new AssertionError("not found: " + relPath);
+ }
+ val = ((JSONObject) val).get(name);
+ }
+ return val;
+ }
}
Modified: jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java?rev=1330400&r1=1330399&r2=1330400&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java (original)
+++ jackrabbit/oak/trunk/oak-it/mk/src/main/java/org/apache/jackrabbit/mk/test/MicroKernelIT.java Wed Apr 25 16:30:02 2012
@@ -42,6 +42,7 @@ public class MicroKernelIT extends Abstr
"\"stringProp\":\"stringVal\"," +
"\"intProp\":42," +
"\"floatProp\":42.2," +
+ "\"booleanProp\": true," +
"\"multiIntProp\":[1,2,3]}", null, "");
}
@@ -68,8 +69,13 @@ public class MicroKernelIT extends Abstr
public void getNodes() {
String head = mk.getHeadRevision();
- JSONObject jsonObj = parseJSONObject(mk.getNodes("/test", head, 0, 0, -1, null));
- assertTrue(jsonObj.containsKey("stringProp"));
+ // verify initial content
+ JSONObject obj = parseJSONObject(mk.getNodes("/", head, 1, 0, -1, null));
+ assertPropertyValue(obj, "test/stringProp", "stringVal");
+ assertPropertyValue(obj, "test/intProp", 42L);
+ assertPropertyValue(obj, "test/floatProp", 42.2);
+ assertPropertyValue(obj, "test/booleanProp", true);
+ assertPropertyValue(obj, "test/multiIntProp", new Object[]{1,2,3});
}
@Test
@@ -141,8 +147,8 @@ public class MicroKernelIT extends Abstr
head = mk.commit("/",
"+\"fuu\" : {} \n" +
"^\"fuu/bar\" : 42", head, "");
- String n = mk.getNodes("/fuu", head);
- assertEquals("{\"bar\":42,\":childNodeCount\":0}", n);
+ JSONObject jsonObj = parseJSONObject(mk.getNodes("/fuu", head));
+ assertEquals(42l, jsonObj.get("bar"));
}
@Test