Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/impl/treeeditor/DefaultTreeEditorTest.java @ 144:0854f9a9e81d
change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
author | one |
---|---|
date | Sun, 16 Nov 2014 06:40:48 +0900 |
parents | 74723b26ad96 |
children | 8a0aa8fc137c |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.impl.treeeditor; import java.nio.ByteBuffer; import java.util.Iterator; import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.tests.util.TestUtil; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import junit.framework.Assert; import junit.framework.TestCase; public class DefaultTreeEditorTest extends TestCase { public DefaultTreeEditor instance() { DefaultTraverser traverser = new DefaultTraverser(); return new DefaultTreeEditor(traverser); } public void testEdittingDoesNotEffectToOtherTree() { TreeNode root = TestUtil.createMockTree(3); DefaultTreeEditor editor = new DefaultTreeEditor(new DefaultTraverser()); DefaultNodePath path = new DefaultNodePath().add(0).add(2); TreeNode oldRoot = root; DefaultTreeEditor currentEditor = editor; String key = "path"; TreeNode currentRoot = root; for(DefaultNodePath part : path.inits()){ ByteBuffer value = ByteBuffer.wrap(part.toString().getBytes()); PutAttribute putAttribute = new PutAttribute(key,value); Either<Error,LoggingNode> either = currentEditor.edit(currentRoot,part,putAttribute); if(either.isA()){ Assert.fail(); } currentRoot = either.b().getWrap(); } TreeNode newRoot = currentRoot; DefaultTraverser traverser = new DefaultTraverser(); for(DefaultNodePath part : path.inits()){ System.out.println(part.toString()); Either<Error,Traversal> either = traverser.traverse(newRoot,new DefaultEvaluator(part)); if(either.isA()){ Assert.fail(); } TreeNode target = either.b().destination(); String expected = part.toString(); Iterator<String> actualIterator = target.getAttributes().getString(key); Assert.assertTrue(actualIterator.hasNext()); Assert.assertEquals(expected,actualIterator.next()); } for(DefaultNodePath part : path.inits()){ Either<Error,Traversal> either = traverser.traverse(oldRoot,new DefaultEvaluator(part)); if(either.isA()){ Assert.fail(); } TreeNode target = either.b().destination(); System.out.println(part.toString()); List<ByteBuffer> actualList = target.getAttributes().get(key); Assert.assertTrue(actualList.isEmpty()); } } public void testEdit() { DefaultTreeEditor instance = instance(); DefaultTreeNode node = new DefaultTreeNode(); DefaultNodePath path = new DefaultNodePath(); Either<Error,LoggingNode> either = instance.edit(node,path,new AppendChildAt(0)); if(either.isA()){ Assert.fail(); } TreeNode newRoot = either.b().getWrap(); Assert.assertEquals(1,newRoot.getChildren().size()); } }