GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 86 / 0 / 86
Functions: 100.0% 8 / 0 / 8
Branches: 57.8% 37 / 0 / 64

tests/viewport.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 2 test_viewport_zoom_level_min (void)
8 {
9 4 g_autoptr(ShumateViewport) viewport = NULL;
10
11 2 viewport = shumate_viewport_new ();
12
1/2
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_min_zoom_level (viewport), ==, 0);
13
14 2 shumate_viewport_set_max_zoom_level (viewport, 20);
15 2 shumate_viewport_set_zoom_level (viewport, 5);
16
17 2 shumate_viewport_set_min_zoom_level (viewport, 10);
18
1/2
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_min_zoom_level (viewport), ==, 10);
19
20 /* Increasing the minimum zoom level must increase the current zoom level too */
21
1/2
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 10);
22
23 /* But decreasing it may not */
24 2 shumate_viewport_set_zoom_level (viewport, 10);
25 2 shumate_viewport_set_min_zoom_level (viewport, 0);
26
2/4
✗ Branch 18 → 19 not taken.
✓ Branch 18 → 20 taken 2 times.
✓ Branch 20 → 21 taken 2 times.
✗ Branch 20 → 22 not taken.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 10);
27 2 }
28
29 static void
30 2 test_viewport_zoom_level_max (void)
31 {
32 4 g_autoptr(ShumateViewport) viewport = NULL;
33
34 2 viewport = shumate_viewport_new ();
35
1/2
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 20);
36
37 2 shumate_viewport_set_max_zoom_level (viewport, 17);
38
1/2
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 17);
39
40 /* Setting the maximum zoom level must update the current zoom level too */
41 2 shumate_viewport_set_zoom_level (viewport, 15);
42 2 shumate_viewport_set_max_zoom_level (viewport, 10);
43
2/4
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 2 times.
✓ Branch 15 → 16 taken 2 times.
✗ Branch 15 → 17 not taken.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 10);
44 2 }
45
46 static void
47 2 test_viewport_zoom_level_clamp (void)
48 {
49 4 g_autoptr(ShumateViewport) viewport = NULL;
50
51 2 viewport = shumate_viewport_new ();
52
1/2
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_min_zoom_level (viewport), ==, 0);
53
1/2
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 20);
54
55 /* Can't set min zoom level > max zoom level */
56 2 g_test_expect_message ("shumate",
57 G_LOG_LEVEL_CRITICAL,
58 "shumate_viewport_set_min_zoom_level: assertion 'min_zoom_level <= self->max_zoom_level' failed");
59
60 2 shumate_viewport_set_min_zoom_level (viewport, 21);
61 2 g_test_assert_expected_messages ();
62
1/2
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_min_zoom_level (viewport), ==, 0);
63
64 2 shumate_viewport_set_min_zoom_level (viewport, 5);
65 2 shumate_viewport_set_max_zoom_level (viewport, 15);
66
67 /* Equally, can't set max zoom level < min zoom level */
68 2 g_test_expect_message ("shumate",
69 G_LOG_LEVEL_CRITICAL,
70 "shumate_viewport_set_max_zoom_level: assertion 'max_zoom_level >= self->min_zoom_level' failed");
71
72 2 shumate_viewport_set_max_zoom_level (viewport, 0);
73 2 g_test_assert_expected_messages ();
74
1/2
✗ Branch 21 → 22 not taken.
✓ Branch 21 → 23 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 15);
75
76 /* shumate_viewport_set_min_zoom_level() must have updated the current zoom level */
77
1/2
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 5);
78
79 2 shumate_viewport_set_zoom_level (viewport, 10);
80
1/2
✗ Branch 28 → 29 not taken.
✓ Branch 28 → 30 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 10);
81
82 /* Zoom level below the minimum must clamp */
83 2 shumate_viewport_set_zoom_level (viewport, 0);
84
1/2
✗ Branch 32 → 33 not taken.
✓ Branch 32 → 34 taken 2 times.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 5);
85
86 /* Zoom level above the maximum must clamp too */
87 2 shumate_viewport_set_zoom_level (viewport, 20);
88
2/4
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 2 times.
✓ Branch 38 → 39 taken 2 times.
✗ Branch 38 → 40 not taken.
2 g_assert_cmpuint (shumate_viewport_get_zoom_level (viewport), ==, 15);
89 2 }
90
91 static guint max_zoom_level_notify_counter = 0;
92 static guint min_zoom_level_notify_counter = 0;
93 static guint zoom_level_notify_counter = 0;
94
95 static void
96 12 on_max_zoom_level_changed_cb (ShumateViewport *viewport,
97 GParamSpec *pspec,
98 gpointer user_data)
99 {
100 12 max_zoom_level_notify_counter++;
101 12 }
102
103 static void
104 10 on_min_zoom_level_changed_cb (ShumateViewport *viewport,
105 GParamSpec *pspec,
106 gpointer user_data)
107 {
108 10 min_zoom_level_notify_counter++;
109 10 }
110
111 static void
112 10 on_zoom_level_changed_cb (ShumateViewport *viewport,
113 GParamSpec *pspec,
114 gpointer user_data)
115 {
116 10 zoom_level_notify_counter++;
117 10 }
118
119 static void
120 2 test_viewport_zoom_level_notify (void)
121 {
122 4 g_autoptr(ShumateViewport) viewport = NULL;
123 2 guint i;
124
125 2 viewport = g_object_connect (shumate_viewport_new (),
126 "signal::notify::max-zoom-level", on_max_zoom_level_changed_cb, NULL,
127 "signal::notify::min-zoom-level", on_min_zoom_level_changed_cb, NULL,
128 "signal::notify::zoom-level", on_zoom_level_changed_cb, NULL,
129 NULL);
130
131 /* Max zoom level */
132
2/2
✓ Branch 7 → 5 taken 10 times.
✓ Branch 7 → 8 taken 2 times.
14 for (i = 10; i > 5; i--)
133 10 shumate_viewport_set_max_zoom_level (viewport, i);
134
1/2
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 2 times.
2 g_assert_cmpuint (max_zoom_level_notify_counter, ==, 5);
135
136 /* Only the first should emit notify::max-zoom-level */
137
2/2
✓ Branch 13 → 11 taken 10 times.
✓ Branch 13 → 14 taken 2 times.
12 for (i = 0; i < 5; i++)
138 10 shumate_viewport_set_max_zoom_level (viewport, 15);
139
1/2
✗ Branch 14 → 15 not taken.
✓ Branch 14 → 16 taken 2 times.
2 g_assert_cmpuint (max_zoom_level_notify_counter, ==, 6);
140
141
142 /* Zoom level */
143
2/2
✓ Branch 19 → 17 taken 10 times.
✓ Branch 19 → 20 taken 2 times.
12 for (i = 14; i >= 10; i--)
144 10 shumate_viewport_set_zoom_level (viewport, i);
145
1/2
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 2 times.
2 g_assert_cmpuint (zoom_level_notify_counter, ==, 5);
146
147 2 for (i = 0; i > 5; i--)
148 shumate_viewport_set_zoom_level (viewport, 10);
149
1/2
✗ Branch 22 → 23 not taken.
✓ Branch 22 → 24 taken 2 times.
2 g_assert_cmpuint (zoom_level_notify_counter, ==, 5);
150
151 /* Min zoom level */
152
2/2
✓ Branch 27 → 25 taken 10 times.
✓ Branch 27 → 28 taken 2 times.
12 for (i = 0; i < 5; i++)
153 10 shumate_viewport_set_min_zoom_level (viewport, i);
154
1/2
✗ Branch 28 → 29 not taken.
✓ Branch 28 → 30 taken 2 times.
2 g_assert_cmpuint (min_zoom_level_notify_counter, ==, 4);
155
156 /* Only the first should emit notify::min-zoom-level */
157
2/2
✓ Branch 33 → 31 taken 10 times.
✓ Branch 33 → 34 taken 2 times.
12 for (i = 0; i < 5; i++)
158 10 shumate_viewport_set_min_zoom_level (viewport, 5);
159
1/2
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 2 times.
2 g_assert_cmpuint (min_zoom_level_notify_counter, ==, 5);
160
161
1/2
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 2 times.
2 g_assert_cmpuint (max_zoom_level_notify_counter, ==, 6);
162
2/4
✗ Branch 38 → 39 not taken.
✓ Branch 38 → 40 taken 2 times.
✓ Branch 40 → 41 taken 2 times.
✗ Branch 40 → 42 not taken.
2 g_assert_cmpuint (zoom_level_notify_counter, ==, 5);
163 2 }
164
165 int
166 2 main (int argc, char *argv[])
167 {
168 2 g_test_init (&argc, &argv, NULL);
169
170 2 g_test_add_func ("/viewport/zoom-level/min", test_viewport_zoom_level_min);
171 2 g_test_add_func ("/viewport/zoom-level/max", test_viewport_zoom_level_max);
172 2 g_test_add_func ("/viewport/zoom-level/clamp", test_viewport_zoom_level_clamp);
173 2 g_test_add_func ("/viewport/zoom-level/notify", test_viewport_zoom_level_notify);
174
175 2 return g_test_run ();
176 }
177