~vanvugt/mir/log-level

« back to all changes in this revision

Viewing changes to tests/integration-tests/client/test_mirsurface.cpp

  • Committer: Daniel van Vugt
  • Date: 2015-01-23 03:08:41 UTC
  • mfrom: (2201.2.50 development-branch)
  • Revision ID: daniel.van.vugt@canonical.com-20150123030841-zn39cao9um2o9x0p
Merge latest trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
79
79
    return arg.type == mir_surface_type_menu;
80
80
}
81
81
 
 
82
MATCHER(IsATooltip, "")
 
83
{
 
84
    return arg.type == mir_surface_type_tip;
 
85
}
 
86
 
 
87
MATCHER(IsADialog, "")
 
88
{
 
89
    return arg.type == mir_surface_type_dialog;
 
90
}
 
91
 
82
92
MATCHER_P(HasParent, parent, "")
83
93
{
84
94
    return arg.parent_id.is_set() && arg.parent_id.value().as_value() == parent->id();
85
95
}
86
96
 
87
 
MATCHER_P(MatchesAttachment, rect, "")
88
 
{
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, "")
 
98
{
 
99
    return arg.parent_id.is_set() == false;
 
100
}
 
101
 
 
102
MATCHER_P(MatchesAuxRect, rect, "")
 
103
{
 
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;
94
109
}
95
110
 
96
111
MATCHER_P(MatchesEdge, edge, "")
170
185
 
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,
175
190
            edge),
176
191
        spec_deleter
179
194
    ASSERT_THAT(menu_spec, NotNull());
180
195
 
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());
184
199
}
 
200
 
 
201
TEST_F(ClientMirSurface, as_tooltip_sends_correct_params)
 
202
{
 
203
    EXPECT_CALL(*mock_surface_coordinator, add_surface(_,_));
 
204
    auto parent = create_surface(&spec);
 
205
    ASSERT_THAT(parent.get(), IsValid());
 
206
 
 
207
    MirRectangle target_zone_rect{100, 200, 300, 400};
 
208
 
 
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),
 
213
        spec_deleter
 
214
    };
 
215
 
 
216
    ASSERT_THAT(tooltip_spec, NotNull());
 
217
 
 
218
    EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsATooltip(),
 
219
        HasParent(parent.get()), MatchesAuxRect(target_zone_rect)),_));
 
220
    create_surface(tooltip_spec.get());
 
221
}
 
222
 
 
223
TEST_F(ClientMirSurface, as_dialog_sends_correct_params)
 
224
{
 
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),
 
228
        spec_deleter
 
229
    };
 
230
 
 
231
    ASSERT_THAT(dialog_spec, NotNull());
 
232
 
 
233
    EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsADialog(),
 
234
        NoParentSet()),_));
 
235
    create_surface(dialog_spec.get());
 
236
}
 
237
 
 
238
TEST_F(ClientMirSurface, as_modal_dialog_sends_correct_params)
 
239
{
 
240
    EXPECT_CALL(*mock_surface_coordinator, add_surface(_,_));
 
241
    auto parent = create_surface(&spec);
 
242
    ASSERT_THAT(parent.get(), IsValid());
 
243
 
 
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()),
 
248
        spec_deleter
 
249
    };
 
250
 
 
251
    ASSERT_THAT(dialog_spec, NotNull());
 
252
 
 
253
    EXPECT_CALL(*mock_surface_coordinator, add_surface(AllOf(IsADialog(),
 
254
        HasParent(parent.get())),_));
 
255
    create_surface(dialog_spec.get());
 
256
}