You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2011/12/12 15:21:41 UTC

svn commit: r1213253 - in /jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem: ./ MemoryNodeTest.java

Author: thomasm
Date: Mon Dec 12 14:21:41 2011
New Revision: 1213253

URL: http://svn.apache.org/viewvc?rev=1213253&view=rev
Log:
Additional test.

Added:
    jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem/
    jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem/MemoryNodeTest.java

Added: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem/MemoryNodeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem/MemoryNodeTest.java?rev=1213253&view=auto
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem/MemoryNodeTest.java (added)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/mem/MemoryNodeTest.java Mon Dec 12 14:21:41 2011
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.mk.mem;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+/**
+ * Test in-memory node objects.
+ */
+public class MemoryNodeTest {
+
+    @Test
+    public void addChildNodes() {
+        NodeMap map = new NodeMap();
+
+        map.setMaxMemoryChildren(2);
+        map.setDescendantInlineCount(-1);
+
+        NodeImpl n = new NodeImpl(map, 0);
+        Assert.assertEquals("{}", n.asString());
+        n.setId(NodeId.get(255));
+        Assert.assertEquals("nff={}", n.asString());
+        n.setPath("/test");
+        Assert.assertEquals("nff={}/* /test */", n.toString());
+        n = n.createClone(10);
+        Assert.assertEquals("{}", n.asString());
+        NodeImpl a = new NodeImpl(map, 0);
+        map.addNode(a);
+        NodeImpl b = new NodeImpl(map, 0);
+        map.addNode(b);
+        NodeImpl c = new NodeImpl(map, 0);
+        map.addNode(c);
+        NodeImpl d = new NodeImpl(map, 0);
+        map.addNode(d);
+        n = n.cloneAndAddChildNode("a", false, null, a, 11);
+        n = n.cloneAndSetProperty("x", "1", 12);
+        n.setId(NodeId.get(3));
+        Assert.assertEquals("n3={\"x\":1,\"a\":n1}", n.asString());
+        NodeImpl n2 = NodeImpl.fromString(map, n.asString());
+        Assert.assertEquals("n3={\"x\":1,\"a\":n1}", n2.asString());
+
+        n = new NodeImpl(map, 0);
+        n = n.cloneAndAddChildNode("a", false, null, a, 1);
+        Assert.assertEquals("{\"a\":n1}", n.asString());
+        n = n.cloneAndAddChildNode("b", false, null, b, 2);
+        Assert.assertEquals("{\"a\":n1,\"b\":n2}", n.asString());
+        n = n.cloneAndAddChildNode("c", false, null, c, 3);
+        Assert.assertEquals("{\"a\":n1,\"b\":n2,\"c\":n3}", n.asString());
+        n = n.cloneAndAddChildNode("d", false, null, d, 4);
+        Assert.assertEquals("{\":children\":n5,\":names\":\"63\",\":children\":n6,\":names\":\"64\",\":childCount\":4}",
+                n.asString());
+        n2 = NodeImpl.fromString(map, n.asString());
+        Assert.assertEquals("{\":children\":n5,\":names\":\"63\",\":children\":n6,\":names\":\"64\",\":childCount\":4}",
+                n2.asString());
+        Assert.assertTrue(n2.exists("a"));
+        Assert.assertTrue(n2.exists("b"));
+        Assert.assertTrue(n2.exists("c"));
+        Assert.assertTrue(n2.exists("d"));
+
+    }
+
+    @Test
+    public void inlineChildNodes() {
+        NodeMap map = new NodeMap();
+        map.setDescendantCount(true);
+        map.setDescendantInlineCount(3);
+
+        NodeImpl n = new NodeImpl(map, 0);
+        Assert.assertEquals("{}", n.asString());
+        NodeImpl a = new NodeImpl(map, 0);
+        a.setProperty("name", "\"a\"");
+        map.addNode(a);
+        NodeImpl b = new NodeImpl(map, 0);
+        b.setProperty("name", "\"b\"");
+        map.addNode(b);
+        NodeImpl c = new NodeImpl(map, 0);
+        c.setProperty("name", "\"c\"");
+        map.addNode(c);
+        NodeImpl d = new NodeImpl(map, 0);
+        d.setProperty("name", "\"d\"");
+        map.addNode(d);
+        n = n.cloneAndAddChildNode("a", false, null, a, 11);
+        n = n.cloneAndSetProperty("x", "1", 12);
+        n.setId(NodeId.get(3));
+        Assert.assertEquals("n3={\"x\":1,\"a\":{\"name\":\"a\"}}", n.asString());
+        NodeImpl n2 = NodeImpl.fromString(map, n.asString());
+        Assert.assertEquals("n3={\"x\":1,\"a\":{\"name\":\"a\"}}", n2.asString());
+
+        n = new NodeImpl(map, 0);
+        n = n.cloneAndAddChildNode("a", false, null, a, 1);
+        Assert.assertEquals("{\"a\":{\"name\":\"a\"}}", n.asString());
+        n = n.cloneAndAddChildNode("b", false, null, b, 2);
+        String ab = "{\"a\":{\"name\":\"a\"},\"b\":{\"name\":\"b\"}}";
+        Assert.assertEquals(ab, n.asString());
+        n = n.cloneAndAddChildNode("c", false, null, c, 3);
+        String abc = "{\"a\":{\"name\":\"a\"},\"b\":{\"name\":\"b\"},\"c\":{\"name\":\"c\"}}";
+        Assert.assertEquals(abc, n.asString());
+        Assert.assertEquals(3, n.getDescendantCount());
+        Assert.assertEquals(3, n.getDescendantInlineCount());
+        n2 = NodeImpl.fromString(map, n.asString());
+        Assert.assertTrue(n2.exists("a"));
+        Assert.assertTrue(n2.exists("b"));
+        Assert.assertTrue(n2.exists("c"));
+        Assert.assertEquals(3, n2.getDescendantCount());
+        Assert.assertEquals(3, n2.getDescendantInlineCount());
+
+        NodeImpl root = new NodeImpl(map, 0);
+        root = root.cloneAndAddChildNode("test", false, null, n2, 1);
+        Assert.assertEquals("{\":descendantCount\":4,\"test\":n1}", root.asString());
+        Assert.assertEquals(0, root.getDescendantInlineCount());
+
+        n2 = n2.cloneAndRemoveChildNode("c", 4);
+        root = new NodeImpl(map, 0);
+        root = root.cloneAndAddChildNode("test", false, null, n2, 1);
+        Assert.assertEquals("{\":descendantCount\":3,\"test\":" + ab + "}", root.asString());
+
+    }
+
+}