view src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/treeeditor/Difference/MultiDifferencialJngleTreeEditorTest.java @ 308:201cc75a9984

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

package jp.ac.u_ryukyu.ie.cr.jungle.core.treeeditor.Difference;

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.store.nodepath.NodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
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 org.junit.Assert;
import org.junit.Test;

/**
 * デバッガで確かめる
 * 手順
 * Thread 1 を JungleTreeEditorの        TransactionManager newTxManager = either.b();の部分で止める
 * そしてThread 2で TreeContextのAppendedNode
 */
public class MultiDifferencialJngleTreeEditorTest {
    @Test
    public void MultiDifferencialJngleTreeEditorTests() throws InterruptedException {
        Jungle jungle = new DefaultJungle(null, "hogehoge");
        JungleTree tree = jungle.createNewDifferenceTree("df");
        Thread t1 = new EditorThread(tree);
        Thread t2 = new EditorThread(tree);
        t1.start();
        t2.start();
        System.out.println("start");
        t1.join();
        t2.join();

    }

    private class EditorThread extends Thread {
        JungleTree tree;
        EditorThread(JungleTree tree) {
        this.tree = tree;
        }

        @Override
        public void run(){
            Either<Error, JungleTreeEditor> either2;
            System.out.println(getName() + "thread");
            do {
                JungleTreeEditor editor = tree.getJungleTreeEditor();
                NodePath path = new DefaultNodePath();
                Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, 0);
                Assert.assertFalse(either.isA());
                JungleTreeEditor editor2 = either.b();
                either2 = editor2.success();
                System.out.println(getName() + "success");
            } while(either2.isA());
        }
    }
}