view src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/differencialnode/DifferencialTreeNodeChildrenTest.java @ 329:2a0cb1f0ba4e

rename Error package
author kono
date Sat, 08 Jul 2017 21:05:55 +0900
parents f69b2a5a821d
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.impl.differencialnode;

import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Differencial.DifferencialTreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNodeChildren;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
import org.junit.Assert;
import org.junit.Test;


public class DifferencialTreeNodeChildrenTest {
    @Test
    public void DifferencialTreeNodeChildrenTests() {
        TreeNode node = new DifferencialTreeNode();
        TreeNodeChildren children = node.getChildren();
        Either<Error, TreeNode> either = children.addNewChildAt(0, new DifferencialTreeNode()); //Nodeの追加
        Assert.assertFalse(either.isA());
        TreeNode newNode = either.b();
        Assert.assertEquals(node, newNode);

        either = children.addNewChildAt(3, new DifferencialTreeNode());//追加できない場所へのNodeの追加
        Assert.assertTrue(either.isA());

        TreeNode child = children.at(0).b();
        either = children.addNewChildAt(0, new DifferencialTreeNode());//Nodeの割り込み挿入
        Assert.assertFalse(either.isA());
        TreeNode child2 = children.at(1).b();
        Assert.assertEquals(child, child2);

        either = children.moveChild(0,"up");//0番目の子ノードを上に動かす(失敗する
        Assert.assertTrue(either.isA());

        children = node.getChildren();
        child = children.at(1).b();
        either = children.moveChild(1,"up");//0番目の子ノードを上に動かす(失敗する
        Assert.assertFalse(either.isA());
        child2 = children.at(0).b();
        Assert.assertEquals(child,child2);

        either = children.moveChild(1,"down");//1番目の子ノードを下に動かす(失敗する
        Assert.assertTrue(either.isA());

        child = children.at(0).b();
        either = children.moveChild(0,"down");//0番目の子ノードを上に動かす(失敗する
        Assert.assertFalse(either.isA());
        child2 = children.at(1).b();
        Assert.assertEquals(child,child2);

        int expectSize = 2;
        int size = children.size();
        Assert.assertEquals(expectSize,size);

        children = node.getChildren();
        either = children.deleteChildAt(4);//存在しないノードを削除
        Assert.assertTrue(either.isA());

        children = node.getChildren();
        child = children.at(0).b();
        either = children.deleteChildAt(0);//ノードを削除
        Assert.assertFalse(either.isA());

        for (TreeNode n : node.getChildren()) { //childrenの1番目のノードは削除したので存在しない
            Assert.assertNotEquals(n,child);
        }

        expectSize = 1;
        size = children.size();
        Assert.assertEquals(expectSize,size);

    }
}