1 | /* |
2 | * Copyright © 2014 Jonas Ådahl |
3 | * |
4 | * Permission is hereby granted, free of charge, to any person obtaining |
5 | * a copy of this software and associated documentation files (the |
6 | * "Software"), to deal in the Software without restriction, including |
7 | * without limitation the rights to use, copy, modify, merge, publish, |
8 | * distribute, sublicense, and/or sell copies of the Software, and to |
9 | * permit persons to whom the Software is furnished to do so, subject to |
10 | * the following conditions: |
11 | * |
12 | * The above copyright notice and this permission notice (including the |
13 | * next paragraph) shall be included in all copies or substantial |
14 | * portions of the Software. |
15 | * |
16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
17 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
18 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
19 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
20 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
21 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
22 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
23 | * SOFTWARE. |
24 | */ |
25 | |
26 | #include <assert.h> |
27 | |
28 | #include "wayland-client.h" |
29 | #include "wayland-private.h" |
30 | #include "wayland-server.h" |
31 | #include "test-runner.h" |
32 | |
33 | TEST(message_version) |
34 | { |
35 | unsigned int i; |
36 | const struct { |
37 | const struct wl_message *message; |
38 | int expected_version; |
39 | } messages[] = { |
40 | { &wl_pointer_interface.events[WL_POINTER_ENTER], 1 }, |
41 | { &wl_surface_interface.events[WL_SURFACE_ENTER], 1 }, |
42 | { &wl_pointer_interface.methods[WL_POINTER_SET_CURSOR], 1 }, |
43 | { &wl_pointer_interface.methods[WL_POINTER_RELEASE], 3 }, |
44 | { &wl_surface_interface.methods[WL_SURFACE_DESTROY], 1 }, |
45 | { &wl_surface_interface.methods[WL_SURFACE_SET_BUFFER_TRANSFORM], 2 }, |
46 | { &wl_surface_interface.methods[WL_SURFACE_SET_BUFFER_SCALE], 3 }, |
47 | }; |
48 | |
49 | for (i = 0; i < ARRAY_LENGTH(messages); ++i) { |
50 | assert(wl_message_get_since(messages[i].message) == |
51 | messages[i].expected_version); |
52 | } |
53 | } |
54 | |
55 | TEST(message_count_arrays) |
56 | { |
57 | unsigned int i; |
58 | struct wl_message fake_messages[] = { |
59 | { "empty" , "" , NULL }, |
60 | { "non_present" , "iufsonh" , NULL }, |
61 | { "leading" , "aiufsonh" , NULL}, |
62 | { "trailing" , "iufsonha" , NULL }, |
63 | { "middle" , "iufasonh" , NULL }, |
64 | { "multiple" , "aaiufaasonhaa" , NULL }, |
65 | { "leading_version" , "2aaiufaasonhaa" , NULL }, |
66 | { "among_nullables" , "iufsa?oa?nah" , NULL }, |
67 | { "nullable" , "?aiufs?a?onh?a" , NULL }, |
68 | { "all_mixed" , "2?aiufas?oa?na" , NULL }, |
69 | }; |
70 | const struct { |
71 | const struct wl_message *message; |
72 | int expected_array_count; |
73 | } messages[] = { |
74 | { &wl_pointer_interface.events[WL_POINTER_ENTER], 0 }, |
75 | { &wl_keyboard_interface.events[WL_KEYBOARD_ENTER], 1 }, |
76 | { &fake_messages[0], 0 }, |
77 | { &fake_messages[1], 0 }, |
78 | { &fake_messages[2], 1 }, |
79 | { &fake_messages[3], 1 }, |
80 | { &fake_messages[4], 1 }, |
81 | { &fake_messages[5], 6 }, |
82 | { &fake_messages[6], 6 }, |
83 | { &fake_messages[7], 3 }, |
84 | { &fake_messages[8], 3 }, |
85 | { &fake_messages[9], 4 }, |
86 | }; |
87 | |
88 | for (i = 0; i < ARRAY_LENGTH(messages); ++i) { |
89 | assert(wl_message_count_arrays(messages[i].message) == |
90 | messages[i].expected_array_count); |
91 | } |
92 | } |
93 | |