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, "")
150
164
ASSERT_THAT(surf.get(), IsValid());
151
165
spec.parent = surf.get();
153
// The second time around we don't care if the surface gets created,
154
// but we'd like to validate that the server received the output id specified
155
int const arbitrary_output_id = 3000;
156
spec.output_id = arbitrary_output_id;
158
167
EXPECT_CALL(*mock_surface_coordinator, add_surface(MatchesOptional(&spec),_));
159
168
create_surface(&spec);
171
180
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
172
181
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> menu_spec{
173
mir_connection_create_spec_for_menu_surface(connection, 640, 480,
182
mir_connection_create_spec_for_menu(connection, 640, 480,
174
183
mir_pixel_format_abgr_8888, parent.get(), &attachment_rect,
179
188
ASSERT_THAT(menu_spec, NotNull());
181
190
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsAMenu(),
182
HasParent(parent.get()), MatchesAttachment(attachment_rect), MatchesEdge(edge)),_));
191
HasParent(parent.get()), MatchesAuxRect(attachment_rect), MatchesEdge(edge)),_));
183
192
create_surface(menu_spec.get());
195
TEST_F(ClientMirSurface, as_tooltip_sends_correct_params)
197
EXPECT_CALL(*mock_surface_coordinator, add_surface(_,_));
198
auto parent = create_surface(&spec);
199
ASSERT_THAT(parent.get(), IsValid());
201
MirRectangle target_zone_rect{100, 200, 300, 400};
203
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
204
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> tooltip_spec{
205
mir_connection_create_spec_for_tooltip(connection, 640, 480,
206
mir_pixel_format_abgr_8888, parent.get(), &target_zone_rect),
210
ASSERT_THAT(tooltip_spec, NotNull());
212
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsATooltip(),
213
HasParent(parent.get()), MatchesAuxRect(target_zone_rect)),_));
214
create_surface(tooltip_spec.get());
217
TEST_F(ClientMirSurface, as_dialog_sends_correct_params)
219
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
220
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> dialog_spec{
221
mir_connection_create_spec_for_dialog(connection, 640, 480, mir_pixel_format_abgr_8888),
225
ASSERT_THAT(dialog_spec, NotNull());
227
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsADialog(),
229
create_surface(dialog_spec.get());
232
TEST_F(ClientMirSurface, as_modal_dialog_sends_correct_params)
234
EXPECT_CALL(*mock_surface_coordinator, add_surface(_,_));
235
auto parent = create_surface(&spec);
236
ASSERT_THAT(parent.get(), IsValid());
238
auto spec_deleter = [](MirSurfaceSpec* spec) {mir_surface_spec_release(spec);};
239
std::unique_ptr<MirSurfaceSpec, decltype(spec_deleter)> dialog_spec{
240
mir_connection_create_spec_for_modal_dialog(connection, 640, 480,
241
mir_pixel_format_abgr_8888, parent.get()),
245
ASSERT_THAT(dialog_spec, NotNull());
247
EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsADialog(),
248
HasParent(parent.get())),_));
249
create_surface(dialog_spec.get());