コード例 #1
0
int main () {
    g_type_init();

    plan(34);

    BinaryTree *root = binary_tree_new("data", g_strdup("root"));
    ok (IS_BINARY_TREE(root), "isa BinaryTree");

    ok (!binary_tree_has_left(root), "no left node yet");
    ok (!binary_tree_has_right(root), "no right node yet");
    ok (!binary_tree_has_parent(root), "no parent for root node");

    /* left node  */
    BinaryTree *left = binary_tree_get_left(root);
    ok (IS_BINARY_TREE(left), "isa BinaryTree");

    ok (binary_tree_get_left(root) == left, "got the same node (and it is %p)", left);
    ok (binary_tree_has_left(root), "we have a left node now");

    ok (binary_tree_has_parent(left), "left has a parent");
    ok (binary_tree_get_parent(left) == root, "left's parent is the root");

    ok (!binary_tree_has_left(left), "left has no left node yet");
    ok (!binary_tree_has_right(left), "left has no right node yet");

    ok (!binary_tree_get_data(left), "left has no data");

    lives_ok ({binary_tree_set_data(left, g_strdup("left"));}, "assign to left's data");
コード例 #2
0
ファイル: test_libs_binary_tree.c プロジェクト: BruceYi/okl4
END_TEST

START_TEST(test_binary_tree_insert)
{
    struct bin_tree *bin_tree;
    int data[4], i;

    for (i = 0; i < 4; i++)
        data[i] = i;

    bin_tree = binary_tree_new();

    fail_unless(binary_tree_insert(bin_tree, "foo", &data[1]) == 0,
                "Couldn't insert foo");
    fail_unless(binary_tree_insert(bin_tree, "bar", &data[2]) == 0,
                "Couldn't insert bar");
    fail_unless(binary_tree_insert(bin_tree, "baz", &data[3]) == 0,
                "Couldn't insert baz");

    fail_unless(*((int *)binary_tree_lookup(bin_tree, "foo")) == 1,
                "Didn't lookup right value");
    fail_unless(*((int *)binary_tree_lookup(bin_tree, "bar")) == 2,
                "Didn't lookup right value");
    fail_unless(*((int *)binary_tree_lookup(bin_tree, "baz")) == 3,
                "Didn't lookup right value");

}
コード例 #3
0
ファイル: test_libs_binary_tree.c プロジェクト: BruceYi/okl4
END_TEST

START_TEST(test_binary_tree_insert_duplicate)
{
    struct bin_tree *bin_tree;
    int data = 1;

    bin_tree = binary_tree_new();

    fail_unless(binary_tree_insert(bin_tree, "foo", &data) == 0,
                "Couldn't insert foo");
    fail_unless(binary_tree_insert(bin_tree, "foo", &data) != 0,
                "Could insert foo, shouldn't be able to");
}
コード例 #4
0
ファイル: test_libs_binary_tree.c プロジェクト: BruceYi/okl4
static struct bin_tree *
setup_balanced_tree(void)
{
    struct bin_tree *bin_tree;
    static int data[16];
    int i;

    for (i = 0; i < 16; i++)
        data[i] = i;

    bin_tree = binary_tree_new();
    fail_unless(binary_tree_insert(bin_tree, "h", &data[8]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "d", &data[4]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "l", &data[12]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "b", &data[2]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "f", &data[6]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "j", &data[10]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "n", &data[14]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "a", &data[1]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "c", &data[3]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "e", &data[5]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "g", &data[7]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "i", &data[9]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "k", &data[11]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "m", &data[13]) == 0,
                "Couldn't insert");
    fail_unless(binary_tree_insert(bin_tree, "o", &data[15]) == 0,
                "Couldn't insert");

    return bin_tree;
}
コード例 #5
0
ファイル: fast_hash.c プロジェクト: shaded-enmity/prt
int fasthash_builder_new(FastHashBuilder **out_builder) {
  FastHashBuilder *fhb;
  int r;
  assert(out_builder);

  fhb = NEW0(FastHashBuilder);
  if (!fhb)
    return -ENOMEM;

  r = binary_tree_new(pointer_compare, &fhb->tree);
  if (r < 0) {
    free((void *)fhb);
    return r;
  }

  *out_builder = fhb;

  return 0;
}
コード例 #6
0
ファイル: test.c プロジェクト: xilon-jul/blazeX
BinaryTree create_btree(){
	BinaryTree t = binary_tree_new("a");
	binary_tree_add_node(&t->root, "b", BINARY_TREE_NODE_SIDE_LEFT);
	binary_tree_add_node(&t->root, "c", BINARY_TREE_NODE_SIDE_RIGHT);
	return t;
}