Mercurial > hg > Members > kazuma > jungle-ormapper
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); + } + +}