79
79
return arg.type == mir_surface_type_menu;
82
MATCHER(IsATooltip, "")
84
return arg.type == mir_surface_type_tip;
87
MATCHER(IsADialog, "")
89
return arg.type == mir_surface_type_dialog;
82
92
MATCHER_P(HasParent, parent, "")
84
94
return arg.parent_id.is_set() && arg.parent_id.value().as_value() == parent->id();
87
MATCHER_P(MatchesAttachment, rect, "")
89
return arg.attachment_rect.is_set() &&
90
arg.attachment_rect.value().top_left.x.as_int() == rect.left &&
91
arg.attachment_rect.value().top_left.y.as_int() == rect.top &&
92
arg.attachment_rect.value().size.width.as_uint32_t() == rect.width &&
93
arg.attachment_rect.value().size.height.as_uint32_t() == rect.height;
97
MATCHER(NoParentSet, "")
99
return arg.parent_id.is_set() == false;
102
MATCHER_P(MatchesAuxRect, rect, "")
104
return arg.aux_rect.is_set() &&
105
arg.aux_rect.value().top_left.x.as_int() == rect.left &&
106
arg.aux_rect.value().top_left.y.as_int() == rect.top &&
107
arg.aux_rect.value().size.width.as_uint32_t() == rect.width &&
108
arg.aux_rect.value().size.height.as_uint32_t() == rect.height;
96
111
MATCHER_P(MatchesEdge, edge, "")
171
186
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
172
187
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> menu_spec{
173
mir_connection_create_spec_for_menu_surface(connection, 640, 480,
188
mir_connection_create_spec_for_menu(connection, 640, 480,
174
189
mir_pixel_format_abgr_8888, parent.get(), &attachment_rect,
179
194
ASSERT_THAT(menu_spec, NotNull());
181
196
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsAMenu(),
182
HasParent(parent.get()), MatchesAttachment(attachment_rect), MatchesEdge(edge)),_));
197
HasParent(parent.get()), MatchesAuxRect(attachment_rect), MatchesEdge(edge)),_));
183
198
create_surface(menu_spec.get());
201
TEST_F(ClientMirSurface, as_tooltip_sends_correct_params)
203
EXPECT_CALL(*mock_surface_coordinator, add_surface(_,_));
204
auto parent = create_surface(&spec);
205
ASSERT_THAT(parent.get(), IsValid());
207
MirRectangle target_zone_rect{100, 200, 300, 400};
209
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
210
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> tooltip_spec{
211
mir_connection_create_spec_for_tooltip(connection, 640, 480,
212
mir_pixel_format_abgr_8888, parent.get(), &target_zone_rect),
216
ASSERT_THAT(tooltip_spec, NotNull());
218
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsATooltip(),
219
HasParent(parent.get()), MatchesAuxRect(target_zone_rect)),_));
220
create_surface(tooltip_spec.get());
223
TEST_F(ClientMirSurface, as_dialog_sends_correct_params)
225
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
226
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> dialog_spec{
227
mir_connection_create_spec_for_dialog(connection, 640, 480, mir_pixel_format_abgr_8888),
231
ASSERT_THAT(dialog_spec, NotNull());
233
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsADialog(),
235
create_surface(dialog_spec.get());
238
TEST_F(ClientMirSurface, as_modal_dialog_sends_correct_params)
240
EXPECT_CALL(*mock_surface_coordinator, add_surface(_,_));
241
auto parent = create_surface(&spec);
242
ASSERT_THAT(parent.get(), IsValid());
244
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
245
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> dialog_spec{
246
mir_connection_create_spec_for_modal_dialog(connection, 640, 480,
247
mir_pixel_format_abgr_8888, parent.get()),
251
ASSERT_THAT(dialog_spec, NotNull());
253
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsADialog(),
254
HasParent(parent.get())),_));
255
create_surface(dialog_spec.get());