view src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/impl/differencialnode/DifferencialTreeNodeChildrenTest.java @ 365:f69f4be12612 default tip

fix
author suruga
date Fri, 09 Feb 2018 19:48:22 +0900
parents 2a0cb1f0ba4e
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);

    }
}