]> pd.if.org Git - nbds/blob - test/txn_test.c
work in progress
[nbds] / test / txn_test.c
1 #include <stdio.h>
2 #include "CuTest.h"
3
4 #include "common.h"
5 #include "runtime.h"
6 #include "txn.h"
7 #include "map.h"
8 #include "hashtable.h"
9
10 #define ASSERT_EQUAL(x, y) CuAssertIntEquals(tc, x, y)
11
12 void test1 (CuTest* tc) {
13     map_t *map = map_alloc(&MAP_IMPL_HT, NULL);
14     txn_t *t1 = txn_begin(map);
15     txn_t *t2 = txn_begin(map);
16     map_key_t k1 = (map_key_t)1;
17     txn_map_set(t1, k1, 2);
18     txn_map_set(t1, k1, 3);
19     ASSERT_EQUAL( DOES_NOT_EXIST, txn_map_get(t2, k1) );
20     txn_map_set(t2, k1, 4);
21     ASSERT_EQUAL( 3, txn_map_get(t1, k1) );
22     ASSERT_EQUAL( 4, txn_map_get(t2, k1) );
23     ASSERT_EQUAL( TXN_VALIDATED, txn_commit(t2));
24     ASSERT_EQUAL( TXN_ABORTED,   txn_commit(t1));
25 }
26
27 int main (void) {
28     nbd_thread_init();
29     lwt_set_trace_level("x3h3");
30
31     CuString *output = CuStringNew();
32     CuSuite* suite = CuSuiteNew();
33     SUITE_ADD_TEST(suite, test1);
34     CuSuiteRun(suite);
35     CuSuiteDetails(suite, output);
36     printf("%s\n", output->buffer);
37
38     return 0;
39 }