237
|
1 package jp.ac.u_ryukyu.ie.cr.jungle.impl.node;
|
|
2
|
|
3
|
|
4 import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle;
|
|
5 import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
|
263
|
6 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
|
|
7 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath;
|
265
|
8 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
|
|
9 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.DefaultTreeNode;
|
263
|
10 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
|
237
|
11 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
|
|
12 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.InterfaceTraverser;
|
263
|
13 import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
|
|
14 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
|
237
|
15 import junit.framework.Assert;
|
|
16 import org.junit.Test;
|
|
17
|
|
18 import java.nio.ByteBuffer;
|
|
19 import java.util.Iterator;
|
|
20
|
|
21 public class GetNodePath {
|
|
22 @Test
|
|
23 public void getNodePathTest(){
|
263
|
24 Jungle jungle = new DefaultJungle(null, "hogehoge",new DefaultTraverser());
|
237
|
25 jungle.createNewTree("tree");
|
|
26 JungleTree tree = jungle.getTreeByName("tree");
|
263
|
27 JungleTreeEditor editor = tree.getJungleTreeEditor();
|
237
|
28
|
|
29 editor = createTree(editor,0,3,new DefaultNodePath());
|
|
30
|
|
31 editor.success();
|
|
32 InterfaceTraverser traverser = tree.getTraverser(true);
|
|
33
|
|
34 Iterator<TreeNode> iterator = traverser.find((TreeNode node) -> { // no index find
|
|
35 String value = node.getAttributes().getString(key);
|
|
36 if (value == null)
|
|
37 return false;
|
|
38 if (value.equals("<-1,2,0>"))
|
|
39 return true;
|
|
40 return false;
|
|
41 });
|
|
42
|
|
43 Assert.assertTrue(iterator.hasNext());
|
|
44 TreeNode node = iterator.next();
|
|
45 NodePath path = tree.getNodePath(node);
|
|
46 String pathtring = path.toString();
|
|
47 Assert.assertEquals("<-1,2,0>",pathtring);
|
|
48 }
|
|
49
|
|
50 public static String key = "KEY";
|
|
51 public static String indexKey = "INDEXKEY";
|
|
52 public static DefaultTreeNode factory = new DefaultTreeNode();
|
|
53
|
|
54 public JungleTreeEditor createTree(JungleTreeEditor editor, int _curY, int _maxHeight, NodePath path) {
|
|
55
|
|
56 if (_curY == _maxHeight) {
|
|
57 return editor;
|
|
58 }
|
|
59 for (int i = 0; i < 3; i++) {
|
|
60
|
|
61 Either<jp.ac.u_ryukyu.ie.cr.jungle.util.Error, JungleTreeEditor> either = editor.addNewChildAt(path, i);
|
|
62 if (either.isA())
|
|
63 Assert.fail();
|
|
64 editor = either.b();
|
|
65 String value = path.add(i).toString();
|
|
66 either = editor.putAttribute(path.add(i), key, ByteBuffer.wrap(value.getBytes()));
|
|
67 if (either.isA())
|
|
68 Assert.fail();
|
|
69 editor = either.b();
|
|
70 String value2 = value + "+ index";
|
|
71 either = editor.putAttribute(path.add(i), indexKey, ByteBuffer.wrap(value2.getBytes()));
|
|
72 if (either.isA())
|
|
73 Assert.fail();
|
|
74 editor = either.b();
|
|
75 editor = createTree(editor, _curY + 1, _maxHeight, path.add(i));
|
|
76 }
|
|
77 return editor;
|
|
78 }
|
|
79 }
|