~mir-team/mir/trunk

« back to all changes in this revision

Viewing changes to tests/acceptance-tests/test_client_library.cpp

  • Committer: Tarmac
  • Author(s): Daniel van Vugt
  • Date: 2013-03-22 03:33:00 UTC
  • mfrom: (440.1.138 surface-types)
  • Revision ID: tarmac-20130322033300-qj6cjcvsqhl4mpaw
Add support for surface types (client API, protocol and server).

This work will also form the foundation of supporting surface states.

Approved by PS Jenkins bot, Alan Griffiths, Robert Ancell.

Show diffs side-by-side

added added

removed removed

Lines of Context:
205
205
    launch_client_process(client_config);
206
206
}
207
207
 
 
208
TEST_F(DefaultDisplayServerTestFixture, surface_types)
 
209
{
 
210
    struct ClientConfig : ClientConfigCommon
 
211
    {
 
212
        void exec()
 
213
        {
 
214
 
 
215
            mir_wait_for(mir_connect(mir_test_socket, __PRETTY_FUNCTION__, connection_callback, this));
 
216
 
 
217
            ASSERT_TRUE(connection != NULL);
 
218
            EXPECT_TRUE(mir_connection_is_valid(connection));
 
219
            EXPECT_STREQ(mir_connection_get_error_message(connection), "");
 
220
 
 
221
            MirSurfaceParameters const request_params =
 
222
            {
 
223
                __PRETTY_FUNCTION__,
 
224
                640, 480,
 
225
                mir_pixel_format_abgr_8888,
 
226
                mir_buffer_usage_hardware
 
227
            };
 
228
 
 
229
            mir_wait_for(mir_surface_create(connection, &request_params, create_surface_callback, this));
 
230
 
 
231
            ASSERT_TRUE(surface != NULL);
 
232
            EXPECT_TRUE(mir_surface_is_valid(surface));
 
233
            EXPECT_STREQ(mir_surface_get_error_message(surface), "");
 
234
 
 
235
            EXPECT_EQ(mir_surface_type_normal,
 
236
                      mir_surface_get_type(surface));
 
237
 
 
238
            mir_wait_for(mir_surface_set_type(surface,
 
239
                                              mir_surface_type_freestyle));
 
240
            EXPECT_EQ(mir_surface_type_freestyle,
 
241
                      mir_surface_get_type(surface));
 
242
 
 
243
            mir_wait_for(mir_surface_set_type(surface,
 
244
                                            static_cast<MirSurfaceType>(999)));
 
245
            EXPECT_EQ(mir_surface_type_freestyle,
 
246
                      mir_surface_get_type(surface));
 
247
 
 
248
            mir_wait_for(mir_surface_set_type(surface,
 
249
                                              mir_surface_type_dialog));
 
250
            EXPECT_EQ(mir_surface_type_dialog,
 
251
                      mir_surface_get_type(surface));
 
252
 
 
253
            mir_wait_for(mir_surface_set_type(surface,
 
254
                                            static_cast<MirSurfaceType>(888)));
 
255
            EXPECT_EQ(mir_surface_type_dialog,
 
256
                      mir_surface_get_type(surface));
 
257
 
 
258
            // Stress-test synchronization logic with some flooding
 
259
            for (int i = 0; i < 100; i++)
 
260
            {
 
261
                mir_surface_set_type(surface, mir_surface_type_normal);
 
262
                mir_surface_set_type(surface, mir_surface_type_utility);
 
263
                mir_surface_set_type(surface, mir_surface_type_dialog);
 
264
                mir_surface_set_type(surface, mir_surface_type_overlay);
 
265
                mir_surface_set_type(surface, mir_surface_type_freestyle);
 
266
                mir_wait_for(mir_surface_set_type(surface,
 
267
                                                  mir_surface_type_popover));
 
268
                ASSERT_EQ(mir_surface_type_popover,
 
269
                          mir_surface_get_type(surface));
 
270
            }
 
271
 
 
272
            mir_wait_for(mir_surface_release(surface, release_surface_callback,
 
273
                                             this));
 
274
 
 
275
            mir_connection_release(connection);
 
276
        }
 
277
    } client_config;
 
278
 
 
279
    launch_client_process(client_config);
 
280
}
 
281
 
208
282
TEST_F(DefaultDisplayServerTestFixture, client_library_creates_multiple_surfaces)
209
283
{
210
284
    int const n_surfaces = 13;