Mercurial > hg > Members > tatsuki > bench > jungle-core
comparison src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/query/SearchQueryTest.java @ 122:b006861cb795
add SearchQueryTest
author | one |
---|---|
date | Mon, 06 Oct 2014 22:42:03 +0900 |
parents | |
children | 75ba2f2d6ea3 |
comparison
equal
deleted
inserted
replaced
120:f783a27eed24 | 122:b006861cb795 |
---|---|
1 package jp.ac.u_ryukyu.ie.cr.tatsuki.query; | |
2 | |
3 import java.nio.ByteBuffer; | |
4 import java.security.KeyStore.Entry.Attribute; | |
5 import java.util.Iterator; | |
6 | |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; | |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; | |
22 | |
23 import org.junit.Assert; | |
24 import org.junit.Test; | |
25 | |
26 public class SearchQueryTest { | |
27 | |
28 @Test | |
29 public void SearchQueryTest() { | |
30 Jungle jungle = new DefaultJungle(null, "hogehoge",new DefaultTreeEditor(new DefaultTraverser())); | |
31 jungle.createNewTree("tree"); | |
32 JungleTree tree = jungle.getTreeByName("tree"); | |
33 createTree(tree); | |
34 Iterator<Pair<TreeNode, NodePath>> searchNode = search(tree ,"<-1,0,1>",key); | |
35 while (searchNode.hasNext()){ | |
36 Assert.assertTrue(compare(searchNode.next().left(),"<-1,0,1>")); | |
37 } | |
38 } | |
39 | |
40 public Iterator<Pair<TreeNode, NodePath>> search(JungleTree tree ,String searchAttribute,String key){ | |
41 InterfaceTraverser ifTraverser = tree.getTraverser(); | |
42 return ifTraverser.find( | |
43 (TreeNode node) -> { | |
44 ByteBuffer attribute = node.getAttributes().get(key); | |
45 if(attribute != null){ | |
46 byte[] byteAttribute = attribute.array(); | |
47 String str = new String(byteAttribute); | |
48 System.out.println("attribute = " + str); | |
49 return str.equals(searchAttribute); | |
50 } | |
51 return false; | |
52 } | |
53 ); | |
54 } | |
55 | |
56 public boolean compare(TreeNode compareNode, String compareAttribute) { | |
57 String labName = compareNode.getAttributes().getString(key); | |
58 if (labName.equals(compareAttribute)) | |
59 return true; | |
60 return false; | |
61 } | |
62 | |
63 public static String key = "KEY"; | |
64 public static DefaultTreeNode factory = new DefaultTreeNode(); | |
65 | |
66 public void createTree(JungleTree tree) { | |
67 NodePath root = new DefaultNodePath(); | |
68 createChildren(tree, root, 0); | |
69 | |
70 for (int x = 0; x < 2; x++) { | |
71 createChildren(tree, root.add(0), x); | |
72 for (int y = 0; y < 2; y++) { | |
73 createChildren(tree, root.add(0).add(x), y); | |
74 } | |
75 } | |
76 | |
77 } | |
78 | |
79 public void createChildren(JungleTree tree, NodePath root, int num) { | |
80 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成 | |
81 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root,num); // 新しく入れるところへのパス | |
82 if (either.isA()) { | |
83 Assert.fail(); | |
84 } | |
85 editor = either.b(); | |
86 either = editor.success(); | |
87 if (either.isA()) { | |
88 Assert.fail(); | |
89 } | |
90 NodePath childPath = root.add(num); | |
91 editor = tree.getTreeEditor(); | |
92 NodePath attribute = root.add(num); | |
93 System.out.println(attribute.toString()); | |
94 either = editor.putAttribute(childPath, key,ByteBuffer.wrap(attribute.toString().getBytes())); | |
95 if (either.isA()) { | |
96 Assert.fail(); | |
97 } | |
98 editor = either.b(); | |
99 either = editor.success(); | |
100 } | |
101 } |