diff src/test/java/jp/ac/u_ryukyu/ie/cr/JungleTest.java @ 0:44465893e8b8

first Commit
author Kazuma
date Wed, 30 Nov 2016 01:47:55 +0900
parents
children cd5f2ba0f894
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/JungleTest.java	Wed Nov 30 01:47:55 2016 +0900
@@ -0,0 +1,117 @@
+package jp.ac.u_ryukyu.ie.cr;
+
+import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle;
+import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
+import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree;
+import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.jungle.data.list.DefaultNode;
+import jp.ac.u_ryukyu.ie.cr.jungle.data.treemap.Node;
+import jp.ac.u_ryukyu.ie.cr.jungle.persistent.NullJournal;
+import jp.ac.u_ryukyu.ie.cr.jungle.store.NodePath;
+import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath;
+import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode;
+import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNodeAttributes;
+import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode;
+import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
+import jp.ac.u_ryukyu.ie.cr.jungle.traverser.InterfaceTraverser;
+import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
+import junit.framework.Assert;
+import org.junit.Test;
+
+import java.nio.ByteBuffer;
+import java.security.Key;
+import java.util.Iterator;
+
+/**
+ * Created by e135768K on 2016/11/29.
+ */
+public class JungleTest {
+
+    public static Jungle jungle;
+    public static DefaultNodePath root = new DefaultNodePath();
+    @Test
+    public void GetTest () {
+        jungle = new DefaultJungle(new NullJournal(), "Labo", new DefaultTreeEditor(new DefaultTraverser()));
+        jungle.createNewTree("User");
+        JungleTree tree = jungle.getTreeByName("User");
+        // Insert
+        JungleTreeEditor editor = tree.getTreeEditor();
+
+        editor = put(editor, root, "Name", "Kono");
+        editor = put(editor, root, "Age", "40");
+        editor = put(editor, root, "Type", "Teacher");
+
+        editor = put(editor, root, 0, "Name", "Takeda");
+        editor = put(editor, root, 0, "Age", "20");
+        editor = put(editor, root, 0, "Type", "Student");
+
+        editor = put(editor, root, 1, "Name", "Miyagi");
+        editor = put(editor, root, 1, "Age", "22");
+        editor = put(editor, root, 1, "Type", "Student");
+
+        editor = put(editor, root, 2, "Name", "Higashionna");
+        editor = put(editor, root, 2, "Age", "20");
+        editor = put(editor, root, 2, "Type", "Student");
+
+        Either<Error, JungleTreeEditor> either = editor.success();
+        if (either.isA())
+            Assert.fail();
+
+        tree = jungle.getTreeByName("User");
+
+        // Find
+        InterfaceTraverser traverser = tree.getTraverser(false);
+        Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> {
+            String value = node.getAttributes().getString("Name");
+            if (value == null)
+                return false;
+            if (value.equals("Takeda"))
+                return true;
+            return false;
+        }, "Type", "Student");
+
+        while (iterator.hasNext()){
+            System.out.println(iterator.next().getAttributes().getString("Name"));
+        }
+        // Get
+//        ByteBuffer kono_age = get("User", root, "Shinji");
+//        ByteBuffer kazuma_age = get("User", root.add(0), "Kazuma");
+//        ByteBuffer mitsuki_age = get("User", root.add(1), "Mitsuki");
+//        ByteBuffer takui_age = get("User", root.add(2), "Takui");
+    }
+
+    public JungleTreeEditor put(JungleTreeEditor editor, NodePath path, int n, String key, String value) {
+
+        Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, n);
+        if (either.isA())
+            Assert.fail();
+        editor = either.b();
+
+        either = editor.putAttribute(path.add(n), key, ByteBuffer.wrap(value.getBytes()));
+        if (either.isA())
+            Assert.fail();
+        editor = either.b();
+        return editor;
+    }
+
+    public JungleTreeEditor put(JungleTreeEditor editor, NodePath path, String key, String value) {
+
+        Either<Error, JungleTreeEditor> either = editor.putAttribute(path, key, ByteBuffer.wrap(value.getBytes()));
+        if (either.isA())
+            Assert.fail();
+        editor = either.b();
+        return editor;
+    }
+
+    public ByteBuffer get (String treeName, NodePath path, String key) {
+        JungleTree tree = jungle.getTreeByName(treeName);
+        Either<Error, TreeNode> e = tree.getNodeOfPath(path);
+        if (e.isA())
+            Assert.fail();
+        TreeNode node = e.b();
+        return node.getAttributes().get(key);
+    }
+
+}