view src/parallel_execution/test/rb_tree_test1.cbc @ 983:d855932884b7

add put remove for test
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Thu, 28 Oct 2021 14:02:34 +0900
parents 449a78f0cddd
children 793b21a8ea12
line wrap: on
line source

#include <stdio.h>
#include "../../context.h"
#interface "Tree.h"

__code createRBTreeTest(struct Tree* tree) {
    printf("---create\n");
    Gearef(context, Tree)->tree = tree;
    goto putDataTest1();
}

// 手書きstub
__code createRBTreeTest_stub(struct Context* context) {
    printf("---create stub\n");
	Tree* tree = createRedBlackTree(context);
    goto createRBTreeTest(context, tree);
}

__code putDataTest1(struct Tree* tree) {
    printf("---put1\n");
    Node* node = new Node();
    node->key = 0;
    Queue* queue = createSynchronizedQueue(context);
    node->value = queue;
    // tree->putの場所がわかれば良い...
    goto tree->put(node, putDataTest2);
}

// 手書きstub
__code putDataTest1_stub(struct Context* context) {
    printf("---put1 stub\n");
	Tree* tree = (struct Tree*)Gearef(context, Tree)->tree;
	goto putDataTest1(context, tree);
}

__code putDataTest2(struct Tree* tree) {
    printf("---put2\n");
    Node* node = new Node();
    node->key = 1;
    Queue* queue = createSynchronizedQueue(context);
    node->value = queue;
    goto tree->put(node, removeDataTest);
}

// 手書きstub
__code putDataTest2_stub(struct Context* context) {
    printf("---put2 stub\n");
	Tree* tree = (struct Tree*)Gearef(context, Tree)->tree;
	goto putDataTest2(context, tree);
}

__code removeDataTest(struct Tree* tree) {
    printf("---remove\n");
    Node* node = new Node();
    node->key = 1;
    Queue* queue = createSynchronizedQueue(context);
    node->value = queue;
    goto tree->remove(node, printResult);
}

// 手書きstub
__code removeDataTest_stub(struct Context* context) {
    printf("---remove stub\n");
	Tree* tree = (struct Tree*)Gearef(context, Tree)->tree;
	goto removeDataTest(context, tree);
}

// 動作未確認
__code printResult(struct Tree* tree) {
    printf("---result\n");
    struct Node* node = &(tree->tree)->Node;
    if (node == NULL) {
        printf("NULL");
    } else {
        printf("key = %d (", node->key);
        printTree1((union Data*)(node->right));
        printf("), (");
        printTree1((union Data*)(node->left));
        printf(")");
    }
    printf("\n");
    goto exit_code(context);
}

// 手書きstub
__code printResult_stub(struct Context* context) {
    printf("---result stub\n");
    Tree* tree = (struct Tree*)Gearef(context, Tree)->tree;
	goto printResult(context, tree);
}

int main(int argc, char const* argv[]) {
    goto createRBTreeTest();
}