GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 97 / 0 / 97
Functions: 100.0% 6 / 0 / 6
Branches: 51.5% 34 / 0 / 66

tests/marker-layer.c
Line Branch Exec Source
1 #undef G_DISABLE_ASSERT
2
3 #include <gtk/gtk.h>
4 #include <shumate/shumate.h>
5
6 static void
7 1 test_marker_layer_new (void)
8 {
9 1 ShumateMarkerLayer *marker_layer;
10 1 ShumateViewport *viewport;
11
12 1 viewport = shumate_viewport_new ();
13 1 marker_layer = shumate_marker_layer_new (viewport);
14
1/2
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 1 time.
1 g_assert_nonnull (marker_layer);
15
1/2
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 1 time.
1 g_assert_true (SHUMATE_IS_MARKER_LAYER (marker_layer));
16
17 1 g_object_unref (viewport);
18 1 }
19
20 static void
21 1 test_marker_layer_add_marker (void)
22 {
23 1 ShumateMarkerLayer *marker_layer;
24 1 ShumateViewport *viewport;
25 1 ShumateMarker *point;
26
27 1 viewport = shumate_viewport_new ();
28 1 marker_layer = shumate_marker_layer_new (viewport);
29
30 1 point = shumate_point_new ();
31
1/2
✗ Branch 6 → 7 not taken.
✓ Branch 6 → 8 taken 1 time.
1 g_assert_null (gtk_widget_get_parent (GTK_WIDGET (point)));
32
33 1 shumate_marker_layer_add_marker (marker_layer, point);
34
1/2
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 1 time.
1 g_assert_true (gtk_widget_get_parent (GTK_WIDGET (point)) == GTK_WIDGET (marker_layer));
35
36 1 g_object_unref (viewport);
37 1 }
38
39 static void
40 1 test_marker_layer_remove_marker (void)
41 {
42 1 ShumateMarkerLayer *marker_layer;
43 1 ShumateViewport *viewport;
44 1 ShumateMarker *point;
45
46 1 viewport = shumate_viewport_new ();
47 1 marker_layer = shumate_marker_layer_new (viewport);
48
49 1 point = shumate_point_new ();
50 1 shumate_marker_layer_add_marker (marker_layer, point);
51
1/2
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 1 time.
1 g_assert_true (gtk_widget_get_parent (GTK_WIDGET (point)) == GTK_WIDGET (marker_layer));
52
53 // Add a ref here so that point isn't completely destroyed before checking
54 1 g_object_ref_sink (point);
55
56 1 shumate_marker_layer_remove_marker (marker_layer, point);
57
1/2
✗ Branch 12 → 13 not taken.
✓ Branch 12 → 14 taken 1 time.
1 g_assert_null (gtk_widget_get_parent (GTK_WIDGET (point)));
58
59 1 g_object_unref (point);
60
61 1 g_object_unref (viewport);
62 1 }
63
64 static void
65 1 test_marker_layer_remove_all_markers (void)
66 {
67 1 ShumateMarkerLayer *marker_layer;
68 1 ShumateViewport *viewport;
69 1 int i;
70
71 1 viewport = shumate_viewport_new ();
72 1 marker_layer = shumate_marker_layer_new (viewport);
73
74
2/2
✓ Branch 11 → 5 taken 100 times.
✓ Branch 11 → 12 taken 1 time.
102 for (i = 0; i < 100; i++)
75 {
76 100 ShumateMarker *point;
77
78 100 point = shumate_point_new ();
79 100 shumate_marker_layer_add_marker (marker_layer, point);
80
1/2
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 100 times.
100 g_assert_true (gtk_widget_get_parent (GTK_WIDGET (point)) == GTK_WIDGET (marker_layer));
81 }
82
83 1 shumate_marker_layer_remove_all (marker_layer);
84
1/2
✗ Branch 14 → 15 not taken.
✓ Branch 14 → 16 taken 1 time.
1 g_assert_null (gtk_widget_get_first_child (GTK_WIDGET (marker_layer)));
85
86 1 g_object_unref (viewport);
87 1 }
88
89 static void
90 1 test_marker_layer_selection (void)
91 {
92 1 g_autoptr(ShumateViewport) viewport = shumate_viewport_new ();
93
1/2
✓ Branch 83 → 84 taken 1 time.
✗ Branch 83 → 85 not taken.
2 g_autoptr(ShumateMarkerLayer) layer = shumate_marker_layer_new (viewport);
94 1 ShumateMarker *marker1 = shumate_point_new ();
95 1 ShumateMarker *marker2 = shumate_point_new ();
96
97 1 g_object_ref_sink (layer);
98
99 1 shumate_marker_layer_add_marker (layer, marker1);
100 1 shumate_marker_layer_add_marker (layer, marker2);
101
102
1/2
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 1 time.
1 g_assert_true (shumate_marker_get_selectable (marker1));
103
104 /* Test that no marker is selected initially */
105
1/2
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 1 time.
1 g_assert_null (shumate_marker_layer_get_selected (layer));
106
107 /* Default selection mode is NONE, so make sure nothing can be selected */
108
1/2
✗ Branch 16 → 17 not taken.
✓ Branch 16 → 18 taken 1 time.
1 g_assert_cmpint (shumate_marker_layer_get_selection_mode (layer), ==, GTK_SELECTION_NONE);
109
1/2
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 1 time.
1 g_assert_false (shumate_marker_layer_select_marker (layer, marker1));
110
1/2
✗ Branch 22 → 23 not taken.
✓ Branch 22 → 24 taken 1 time.
1 g_assert_null (shumate_marker_layer_get_selected (layer));
111
112 /* Now test selection mode GTK_SELECTION_SINGLE */
113 1 shumate_marker_layer_set_selection_mode (layer, GTK_SELECTION_SINGLE);
114
115 /* Test that selecting a marker works */
116
1/2
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 28 taken 1 time.
1 g_assert_true (shumate_marker_layer_select_marker (layer, marker1));
117
1/2
✗ Branch 29 → 30 not taken.
✓ Branch 29 → 31 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker1));
118
119 /* Test that selecting a marker deselects other markers */
120
1/2
✗ Branch 32 → 33 not taken.
✓ Branch 32 → 34 taken 1 time.
1 g_assert_true (shumate_marker_layer_select_marker (layer, marker2));
121
1/2
✗ Branch 35 → 36 not taken.
✓ Branch 35 → 37 taken 1 time.
1 g_assert_false (shumate_marker_is_selected (marker1));
122
1/2
✗ Branch 38 → 39 not taken.
✓ Branch 38 → 40 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker2));
123
124 /* Now test selection mode GTK_SELECTION_MULTIPLE */
125 1 shumate_marker_layer_set_selection_mode (layer, GTK_SELECTION_MULTIPLE);
126
127 /* Test that marker2 is still selected */
128
1/2
✗ Branch 42 → 43 not taken.
✓ Branch 42 → 44 taken 1 time.
1 g_assert_false (shumate_marker_is_selected (marker1));
129
1/2
✗ Branch 45 → 46 not taken.
✓ Branch 45 → 47 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker2));
130
131 /* Test that selecting marker1 doesn't deselect marker2 */
132
1/2
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 1 time.
1 g_assert_true (shumate_marker_layer_select_marker (layer, marker1));
133
1/2
✗ Branch 51 → 52 not taken.
✓ Branch 51 → 53 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker1));
134
1/2
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 56 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker2));
135
136 /* Test that switching back to GTK_SELECTION_NONE deselects everything */
137 1 shumate_marker_layer_set_selection_mode (layer, GTK_SELECTION_NONE);
138
1/2
✗ Branch 58 → 59 not taken.
✓ Branch 58 → 60 taken 1 time.
1 g_assert_null (shumate_marker_layer_get_selected (layer));
139
140 /* Test that you can't select anything in GTK_SELECTION_NONE mode */
141
1/2
✗ Branch 61 → 62 not taken.
✓ Branch 61 → 63 taken 1 time.
1 g_assert_false (shumate_marker_layer_select_marker (layer, marker1));
142
1/2
✗ Branch 64 → 65 not taken.
✓ Branch 64 → 66 taken 1 time.
1 g_assert_false (shumate_marker_is_selected (marker1));
143
144 /* Test select_all and unselect_all */
145 1 shumate_marker_layer_set_selection_mode (layer, GTK_SELECTION_MULTIPLE);
146
147 1 shumate_marker_layer_select_all_markers (layer);
148
1/2
✗ Branch 69 → 70 not taken.
✓ Branch 69 → 71 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker1));
149
1/2
✗ Branch 72 → 73 not taken.
✓ Branch 72 → 74 taken 1 time.
1 g_assert_true (shumate_marker_is_selected (marker2));
150
151 1 shumate_marker_layer_unselect_all_markers (layer);
152
1/2
✗ Branch 76 → 77 not taken.
✓ Branch 76 → 78 taken 1 time.
1 g_assert_false (shumate_marker_is_selected (marker1));
153
2/4
✗ Branch 79 → 80 not taken.
✓ Branch 79 → 81 taken 1 time.
✓ Branch 81 → 82 taken 1 time.
✗ Branch 81 → 83 not taken.
1 g_assert_false (shumate_marker_is_selected (marker2));
154 1 }
155
156 int
157 1 main (int argc, char *argv[])
158 {
159 1 g_test_init (&argc, &argv, NULL);
160 1 gtk_init ();
161
162 1 g_test_add_func ("/marker-layer/new", test_marker_layer_new);
163 1 g_test_add_func ("/marker-layer/add-marker", test_marker_layer_add_marker);
164 1 g_test_add_func ("/marker-layer/remove-marker", test_marker_layer_remove_marker);
165 1 g_test_add_func ("/marker-layer/remove-all-markers", test_marker_layer_remove_all_markers);
166 1 g_test_add_func ("/marker-layer/selection", test_marker_layer_selection);
167
168 1 return g_test_run ();
169 }
170