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 }