Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverse/BruteForceTraverserTest.java @ 102:3d88bad21bc4
refactoring 9-11
author | one |
---|---|
date | Thu, 11 Sep 2014 18:02:26 +0900 |
parents | c297f0015d9e |
children | 5b7e45464bb8 |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverse; import java.nio.ByteBuffer; import java.util.Iterator; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.SearchQuery; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.UpdateQuery; import junit.framework.TestCase; import org.junit.Assert; import org.junit.Test; public abstract class BruteForceTraverserTest extends TestCase{ public abstract InterfaceTraverser instance(TreeNode node); @Test public void testSearch() { int maxHeight = 3; Pair<TreeNode, NodePath> test = null; TreeNode root = createTree(0,0,maxHeight,new DefaultNodePath()); InterfaceTraverser traverser = instance(root); Iterator<Pair<TreeNode, NodePath>> itNode = traverser.find(new SearchQuery("KEY","<-1,0,0>")); for(;itNode.hasNext(); ){ test = itNode.next(); } String str = new String(test.left().getAttributes().get("KEY").array()); Assert.assertEquals(str,"<-1,0,0>"); } @Test public void testUpdate() { int maxHeight = 3; Pair<TreeNode, NodePath> test = null; TreeNode root = createTree(0,0,maxHeight,new DefaultNodePath()); InterfaceTraverser traverser = instance(root); JungleTreeEditor editor = traverser.update(new UpdateQuery("KEY", "<-1,0,0>", "tatsuki")); traverser.set(editor.getRoot()); Iterator<Pair<TreeNode, NodePath>> checkNode = traverser.find(new SearchQuery("KEY","tatsuki")); for(;checkNode.hasNext(); ){ test = checkNode.next(); } String str = new String(test.left().getAttributes().get("KEY").array()); Assert.assertEquals(str,"tatsuki"); } public static String key = "KEY"; public static ByteBuffer value = ByteBuffer.wrap(key.getBytes()); public static DefaultTreeNode factory = new DefaultTreeNode(); public static TreeNode createTree(int _curX,int _curY,int _maxHeight,NodePath _address) { System.out.println(_address.toString()); TreeNode parent = factory.createNewNode(); Either<Error,TreeNode> either = parent.getAttributes().put(key,ByteBuffer.wrap(_address.toString().getBytes())); if(either.isA()){ Assert.fail(); } parent = either.b(); if(_curY == _maxHeight){ return parent; } for(int i = 0;i < _curY + 1;i ++){ TreeNode ch = createTree(i,_curY + 1,_maxHeight,_address.add(i)); either = parent.getChildren().addNewChildAt(i,ch); if(either.isA()){ Assert.fail(); } parent = either.b(); } return parent; } }