]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - fres/contract/tests/transaction.c
268c5bb60ffee5b2fb42c73097d6f3168525217e
[frescor/frsh.git] / fres / contract / tests / transaction.c
1 #include <fres_transaction.h>
2 #include <error.h>
3 #include <errno.h>
4 #include <wvtest.h>
5
6 void cmp(struct fres_contract *c1, struct fres_contract *c2, const char *msg)
7 {
8         int ret;
9         if (!WVPASS((ret = strcmp(fres_contract_get_label(c1)->label,
10                                   fres_contract_get_label(c2)->label)) == 0))
11                 error(1, 0, "%s: label cmp failed %d", msg, ret);
12         
13         if (!WVPASS((ret = memcmp(fres_contract_get_resource(c1),
14                                   fres_contract_get_resource(c2),
15                                   sizeof(fres_block_resource))) == 0))
16                 error(1, 0, "%s: resource cmp failed %d", msg, ret);
17         
18         if (!WVPASS((ret = memcmp(fres_contract_get_basic(c1),
19                                   fres_contract_get_basic(c2),
20                                   sizeof(fres_block_basic))) == 0))
21                 error(1, 0, "%s: basic cmp failed %d", msg, ret);
22         
23         if (!WVPASS((ret = memcmp(fres_contract_get_timing_reqs(c1),
24                                   fres_contract_get_timing_reqs(c2),
25                                   sizeof(fres_block_timing_reqs))) == 0))
26                 error(1, 0, "%s: timing_reqs cmp failed %d", msg, ret);
27         
28         /*ret = memcmp(fres_contract_get_csects(c1),
29                      fres_contract_get_csects(c2),
30                      sizeof(fres_block_csects));
31         if (ret) error(1, 0, "%s: critical_sects cmp failed %d", msg, ret);*/
32 }
33
34 WVTEST_MAIN("transaction manipulation")
35 {
36         fres_transaction_t *t1, *t2;
37         struct fres_contract *c;
38
39         WVPASS(t1 = fres_transaction_new());
40         WVPASS(fres_transaction_num_contracts(t1) == 0);
41         WVFAIL(fres_transaction_get_contract(t1, 0));
42         WVPASS(c = fres_contract_new());
43         WVPASS(fres_transaction_add_contract(t1, c) > 0);
44         WVPASS(fres_transaction_num_contracts(t1) == 1);
45         WVPASS(fres_transaction_get_contract(t1, 0) == c);
46
47         WVPASS(t2 = fres_transaction_duplicate(t1));
48         WVPASS(fres_transaction_num_contracts(t2) == 1);
49         WVPASS(fres_transaction_get_contract(t2, 0) != NULL);
50         WVPASS(fres_transaction_get_contract(t2, 0) != c);
51
52         fres_transaction_destroy(t1);
53 }