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

first Commit
author Kazuma
date Wed, 30 Nov 2016 01:47:55 +0900
parents
children
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/jungle/traverse/InterfaceTraverserTest.java	Wed Nov 30 01:47:55 2016 +0900
@@ -0,0 +1,143 @@
+package jp.ac.u_ryukyu.ie.cr.jungle.traverse;
+
+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.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.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.util.Iterator;
+
+/**
+ * Created by e115731 on 15/08/11.
+ */
+public class InterfaceTraverserTest {
+    public static int encount = 101;
+    public static double sum = 0d;
+    @Test
+    public void InterfaseTraverserTest() {
+        for (int i = 0; i < encount; i++) {
+            int start = (int) System.nanoTime();
+            Jungle jungle = new DefaultJungle(new NullJournal(), "hoge", new DefaultTreeEditor(new DefaultTraverser()));
+            jungle.createNewTree("TestTree");
+            JungleTree tree = jungle.getTreeByName("TestTree");
+            JungleTreeEditor editor = tree.getTreeEditor();
+            editor = createTree(editor, 0, 3, new DefaultNodePath());
+            Either<Error, JungleTreeEditor> either = editor.success();
+            if (either.isA())
+                Assert.fail();
+            int end = (int) System.nanoTime();
+            if(i != 0) {
+                sum += (end - start) / 1000000f;
+
+                System.out.println("Time sum : " + ((end - start) / 1000000f) + "ms");
+            }
+            // System.out.println("Time : " + (end - start) / 1000000f + "ms");
+        }
+        System.out.println("Sum Time : " + sum / (encount -1) + "ms");
+//        InterfaceTraverser traverser = tree.getTraverser(true);
+//
+//        {
+//            Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> { // no index find
+//                String value = node.getAttributes().getString(key);
+//                if (value == null)
+//                    return false;
+//                if (value.equals("<1,1,-1>"))
+//                    return true;
+//                return false;
+//            }, null, null);
+//
+//            Assert.assertTrue(iterator.hasNext());
+//            TreeNode node = iterator.next();
+//            String value = node.getAttributes().getString("KEY");
+//            Assert.assertEquals("<1,1,-1>", value);
+//        }
+//
+//        {
+//            Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> { // no index find
+//                String value = node.getAttributes().getString(key);
+//                if (value == null)
+//                    return false;
+//                if (value.equals("no exist value"))
+//                    return true;
+//                return false;
+//            }, null, null);
+//
+//            Assert.assertFalse(iterator.hasNext());
+//        }
+//
+//        {
+//            Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> { // use index find
+//                String value = node.getAttributes().getString(key);
+//                if (value == null)
+//                    return false;
+//                if (value.equals("<1,1,-1>"))
+//                    return true;
+//                return false;
+//            }, indexKey, "<1,1,-1>+ index");
+//
+//            Assert.assertTrue(iterator.hasNext());
+//            TreeNode node = iterator.next();
+//            String value = node.getAttributes().getString("KEY");
+//            Assert.assertEquals("<1,1,-1>", value);
+//        }
+//
+//        {
+//            Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> { // use index find
+//                String value = node.getAttributes().getString(key);
+//                if (value == null)
+//                    return false;
+//                if (value.equals("<1,1,-1>"))
+//                    return true;
+//                return false;
+//            }, indexKey, "no exist index value");
+//
+//            Assert.assertFalse(iterator.hasNext());
+//        }
+
+    }
+
+    public static String key = "KEY";
+    public static String indexKey = "INDEXKEY";
+    public static DefaultTreeNode factory = new DefaultTreeNode();
+    public static ByteBuffer value = ByteBuffer.wrap(key.getBytes());
+
+    public JungleTreeEditor createTree(JungleTreeEditor editor, int _curY, int _maxHeight, NodePath path) {
+
+        if (_curY == _maxHeight) {
+            return editor;
+        }
+        for (int i = 0; i < 3; i++) {
+
+            Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, i);
+            if (either.isA())
+                Assert.fail();
+            editor = either.b();
+            // String value = path.add(i).toString();
+            either = editor.putAttribute(path.add(i), key, value);
+            if (either.isA())
+                Assert.fail();
+            editor = either.b();
+            // String value2 = value + "+ index";
+            either = editor.putAttribute(path.add(i), indexKey, value);
+            if (either.isA())
+                Assert.fail();
+            editor = either.b();
+            editor = createTree(editor, _curY + 1, _maxHeight, path.add(i));
+        }
+        return editor;
+    }
+
+}