On Mon, Aug 08, 2016 at 10:10:52AM +0200, Olivier Fourdan wrote: > Test if the global filter is effectively filtering out the global when > the filter returns false. > > Signed-off-by: Olivier Fourdan <[email protected]>
1-3 looks good to me and are Reviewed-by: Jonas Ådahl <[email protected]> One nit below. Also could be good to test the illegal bind, i.e. a client that binds a non-advertised by existing global. > --- > v3: split out as its own commit > > tests/display-test.c | 58 > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 58 insertions(+) > > diff --git a/tests/display-test.c b/tests/display-test.c > index 17956db..3679772 100644 > --- a/tests/display-test.c > +++ b/tests/display-test.c > @@ -125,6 +125,7 @@ struct handler_info { > struct wl_seat *seat; > uint32_t bind_version; > bool use_unversioned; > + bool has_data_offer; > }; > > static void > @@ -145,6 +146,8 @@ registry_handle_globals(void *data, struct wl_registry > *registry, > hi->seat = wl_registry_bind(registry, id, > &wl_seat_interface, ver); > assert(hi->seat); > + } else if (strcmp(intf, "wl_data_offer") == 0) { > + hi->has_data_offer = true; > } > } > > @@ -926,3 +929,58 @@ TEST(error_on_destroyed_object) > display_resume(d); > display_destroy(d); > } > + > +static bool > +global_filter(const struct wl_client *client, > + const struct wl_global *global, > + void *data) > +{ > + /* Hide the wl_data_offer interface */ > + if (wl_global_get_interface(global) == &wl_data_offer_interface) > + return false; > + > + /* Show all the others */ > + return true; > +} > + > +static void > +bind_data_offer(struct wl_client *client, void *data, > + uint32_t vers, uint32_t id) > +{ > + struct display *d = data; > + struct client_info *ci; > + struct wl_resource *res; > + > + ci = find_client_info(d, client); > + assert(ci); > + > + res = wl_resource_create(client, &wl_data_offer_interface, vers, id); > + assert(res); > +} > + > +TEST(filter) > +{ > + struct handler_info hi; > + struct display *d; > + struct wl_global *g1, *g2; > + > + d = display_create(); > + > + g1 = wl_global_create(d->wl_display, &wl_seat_interface, > + 1, d, bind_seat); > + g2 = wl_global_create(d->wl_display, &wl_data_offer_interface, > + 1, d, bind_data_offer); > + wl_display_set_filter_global(d->wl_display, global_filter, NULL); > + > + hi.has_data_offer = false; > + client_create(d, seat_version, &hi); > + assert(hi.seat != NULL); > + assert(hi.has_data_offer != true); I guess this could just as well be "== false". Jonas > + > + display_run(d); > + > + wl_global_destroy(g1); > + wl_global_destroy(g2); > + > + display_destroy(d); > +} > -- > 2.7.4 > _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
