view src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/tree/DefaultTree/DefaultJungleTreeTest.java @ 308:201cc75a9984

change Red Black Tree Edit Path Extends
author tatsuki
date Thu, 26 Jan 2017 15:23:25 +0900
parents f69b2a5a821d
children 2a0cb1f0ba4e
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.tree.DefaultTree;

import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle;
import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error;
import junit.framework.Assert;
import junit.framework.TestCase;

import java.nio.ByteBuffer;

public class DefaultJungleTreeTest extends TestCase {
  public Jungle instance() {
    Jungle j = new DefaultJungle(null, "hogehoge");
    return j;
  }

  public static final String key = "KEY";
  public static final ByteBuffer value = ByteBuffer.wrap(key.getBytes());

  public void testSampleTest() {
    Jungle j = instance();
    j.createNewTree("tree");
    JungleTree tree = j.getTreeByName("tree");
    Assert.assertEquals(0, tree.revision());
    JungleTreeEditor editor1 = tree.getJungleTreeEditor();
    JungleTreeEditor editor2 = tree.getJungleTreeEditor();

    DefaultNodePath root = new DefaultNodePath();

    Either<Error, JungleTreeEditor> either = editor1.putAttribute(root, key, value);
    if (either.isA()) {
      Assert.fail();
    }
    editor1 = either.b();
    editor1.success();

    // check the value ;
    TreeNode node = tree.getRootNode();
    ByteBuffer v = node.getAttributes().get(key);
    Assert.assertEquals(0, v.compareTo(value));
    Assert.assertEquals(1, tree.revision());
    // editor2 must fail transction
    either = editor2.putAttribute(root, key, value);
    if (either.isA()) {
      Assert.fail();
    }
    editor2 = either.b();
    Either<Error, JungleTreeEditor> r = editor2.success();
    Assert.assertTrue(r.isA());
  }

  public void testIsolation() {

  }
}