view 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 source

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;
    }

}