Rename bt_ctf_X -> bt_X, maintain backward compat. for pre-2.0 CTF writer
[babeltrace.git] / tests / lib / test_cc_prio_map.c
CommitLineData
0e4a4192
PP
1/*
2 * test_cc_prio_map.c
3 *
4 * Copyright 2017 - Philippe Proulx <pproulx@efficios.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; under version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
9d408fca 20#include <babeltrace/ref.h>
0e4a4192
PP
21#include <babeltrace/graph/clock-class-priority-map.h>
22#include <babeltrace/ctf-ir/clock-class.h>
23#include <assert.h>
24
25#include "tap/tap.h"
26
a03dd9f3 27#define NR_TESTS 21
0e4a4192
PP
28
29static void test_clock_class_priority_map(void)
30{
31 struct bt_clock_class_priority_map *cc_prio_map;
7b5d7f76 32 struct bt_clock_class_priority_map *cc_prio_map_copy;
50842bdc
PP
33 struct bt_clock_class *cc1;
34 struct bt_clock_class *cc2;
35 struct bt_clock_class *cc3;
36 struct bt_clock_class *cc;
0e4a4192
PP
37 uint64_t prio;
38 int ret;
39
40 cc_prio_map = bt_clock_class_priority_map_create();
41 ok(cc_prio_map, "bt_clock_class_priority_map_create() succeeds");
50842bdc 42 cc1 = bt_clock_class_create("cc1", 1);
0e4a4192 43 assert(cc1);
50842bdc 44 cc2 = bt_clock_class_create("cc2", 2);
0e4a4192 45 assert(cc2);
50842bdc 46 cc3 = bt_clock_class_create("cc3", 3);
0e4a4192
PP
47 assert(cc3);
48 ok(!bt_clock_class_priority_map_get_highest_priority_clock_class(NULL),
49 "bt_clock_class_priority_map_get_highest_priority_clock_class() handles NULL");
50 ok(bt_clock_class_priority_map_get_clock_class_priority(NULL, cc1, &prio) < 0,
51 "bt_clock_class_priority_map_get_highest_priority_clock_class() handles NULL (CC priority map)");
52 ok(bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map, NULL, &prio) < 0,
53 "bt_clock_class_priority_map_get_highest_priority_clock_class() handles NULL (clock class)");
54 ok(bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map, cc1, NULL) < 0,
55 "bt_clock_class_priority_map_get_highest_priority_clock_class() handles NULL (priority)");
56 ok(!bt_clock_class_priority_map_get_highest_priority_clock_class(cc_prio_map),
57 "bt_clock_class_priority_map_get_highest_priority_clock_class() returns NULL when there's no clock classes");
58 ret = bt_clock_class_priority_map_add_clock_class(cc_prio_map, cc2, 75);
59 assert(ret == 0);
60 cc = bt_clock_class_priority_map_get_highest_priority_clock_class(cc_prio_map);
61 ok(cc == cc2,
62 "bt_clock_class_priority_map_get_highest_priority_clock_class() returns the expected clock class (1)");
63 BT_PUT(cc);
64 ret = bt_clock_class_priority_map_add_clock_class(cc_prio_map, cc1, 1001);
65 assert(ret == 0);
66 cc = bt_clock_class_priority_map_get_highest_priority_clock_class(cc_prio_map);
67 ok(cc == cc2,
68 "bt_clock_class_priority_map_get_highest_priority_clock_class() returns the expected clock class (2)");
69 BT_PUT(cc);
70 ret = bt_clock_class_priority_map_add_clock_class(cc_prio_map, cc3, 11);
71 assert(ret == 0);
72 cc = bt_clock_class_priority_map_get_highest_priority_clock_class(cc_prio_map);
73 ok(cc == cc3,
74 "bt_clock_class_priority_map_get_highest_priority_clock_class() returns the expected clock class (3)");
75 BT_PUT(cc);
76 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map, cc1, &prio);
77 ok(ret == 0, "bt_clock_class_priority_map_get_clock_class_priority() succeeds");
78 ok(prio == 1001,
79 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (1)");
80 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map, cc2, &prio);
81 assert(ret == 0);
82 ok(prio == 75,
83 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (2)");
84 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map, cc3, &prio);
85 assert(ret == 0);
86 ok(prio == 11,
87 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (3)");
7b5d7f76
PP
88 cc_prio_map_copy = bt_clock_class_priority_map_copy(cc_prio_map);
89 ok(cc_prio_map_copy, "bt_clock_class_priority_map_copy() succeeds");
90 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map_copy, cc1, &prio);
91 assert(ret == 0);
92 ok(prio == 1001,
93 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (1, copy)");
94 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map_copy, cc2, &prio);
95 assert(ret == 0);
96 ok(prio == 75,
97 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (2, copy)");
98 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map_copy, cc3, &prio);
99 assert(ret == 0);
100 ok(prio == 11,
101 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (3, copy)");
102 cc = bt_clock_class_priority_map_get_highest_priority_clock_class(cc_prio_map_copy);
103 ok(cc == cc3,
a03dd9f3
PP
104 "bt_clock_class_priority_map_get_highest_priority_clock_class() returns the expected clock class (copy)");
105 BT_PUT(cc);
106 ret = bt_clock_class_priority_map_add_clock_class(cc_prio_map_copy, cc3, 253);
107 ok(ret == 0, "bt_clock_class_priority_map_add_clock_class() succeeds for an existing clock class");
108 ret = bt_clock_class_priority_map_get_clock_class_priority(cc_prio_map_copy, cc3, &prio);
109 assert(ret == 0);
110 ok(prio == 253,
111 "bt_clock_class_priority_map_get_clock_class_priority() returns the expected priority (updated, copy)");
112 cc = bt_clock_class_priority_map_get_highest_priority_clock_class(cc_prio_map_copy);
113 ok(cc == cc2,
114 "bt_clock_class_priority_map_get_highest_priority_clock_class() returns the expected clock class (updated, copy)");
0e4a4192 115 BT_PUT(cc);
7b5d7f76 116
0e4a4192
PP
117 BT_PUT(cc3);
118 BT_PUT(cc2);
119 BT_PUT(cc1);
120 BT_PUT(cc_prio_map);
7b5d7f76 121 BT_PUT(cc_prio_map_copy);
0e4a4192
PP
122}
123
124int main(int argc, char **argv)
125{
126 plan_tests(NR_TESTS);
127 test_clock_class_priority_map();
128 return exit_status();
129}
This page took 0.035461 seconds and 4 git commands to generate.