~robertcarr/mir/client-focus-notifications

« back to all changes in this revision

Viewing changes to tests/unit-tests/shell/test_surface.cpp

  • Committer: Robert Carr
  • Date: 2013-08-01 22:01:20 UTC
  • mfrom: (706.2.208 trunk)
  • Revision ID: robert.carr@canonical.com-20130801220120-6m230b3g6x0xflzd
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#include "mir/shell/surface_creation_parameters.h"
22
22
#include "mir/surfaces/surface_stack_model.h"
23
23
#include "mir/shell/surface_builder.h"
24
 
#include "mir/events/event_sink.h"
 
24
#include "mir/frontend/event_sink.h"
25
25
 
26
26
#include "mir_test_doubles/stub_buffer_stream.h"
27
27
#include "mir_test_doubles/mock_buffer_stream.h"
29
29
#include "mir_test_doubles/stub_buffer.h"
30
30
#include "mir_test_doubles/mock_input_targeter.h"
31
31
#include "mir_test_doubles/stub_input_targeter.h"
 
32
#include "mir_test_doubles/null_event_sink.h"
32
33
#include "mir_test_doubles/mock_surface_state.h"
33
34
#include "mir_test/fake_shared.h"
34
35
#include "mir_test/event_matchers.h"
37
38
#include <gmock/gmock.h>
38
39
#include <gtest/gtest.h>
39
40
 
40
 
namespace me = mir::events;
41
41
namespace ms = mir::surfaces;
42
42
namespace msh = mir::shell;
43
43
namespace mf = mir::frontend;
51
51
namespace
52
52
{
53
53
 
54
 
struct MockEventSink : public me::EventSink
 
54
struct MockEventSink : public mf::EventSink
55
55
{
56
56
    ~MockEventSink() noexcept(true) {}
57
57
    MOCK_METHOD1(handle_event, void(MirEvent const&));
123
123
    StubSurfaceBuilder surface_builder;
124
124
 
125
125
    ShellSurface() :
126
 
        buffer_stream(std::make_shared<StubBufferStream>())
 
126
        buffer_stream(std::make_shared<StubBufferStream>()),
 
127
        stub_sender(std::make_shared<mtd::NullEventSink>())
127
128
    {
128
129
        using namespace testing;
129
130
 
131
132
        ON_CALL(*buffer_stream, get_stream_pixel_format()).WillByDefault(Return(geom::PixelFormat::abgr_8888));
132
133
        ON_CALL(*buffer_stream, secure_client_buffer()).WillByDefault(Return(std::shared_ptr<mtd::StubBuffer>()));
133
134
    }
 
135
    mf::SurfaceId stub_id;
 
136
    std::shared_ptr<mf::EventSink> stub_sender;
134
137
};
135
138
}
136
139
 
147
150
 
148
151
    msh::Surface test(
149
152
        mt::fake_shared(surface_builder),
150
 
        params);
 
153
        params, stub_id, stub_sender);
151
154
}
152
155
 
153
156
TEST_F(ShellSurface, creation_throws_means_no_destroy)
165
168
    EXPECT_THROW({
166
169
        msh::Surface test(
167
170
            mt::fake_shared(surface_builder),
168
 
            params);
 
171
            params, stub_id, stub_sender);
169
172
    }, std::runtime_error);
170
173
}
171
174
 
180
183
 
181
184
    msh::Surface test(
182
185
            mt::fake_shared(surface_builder),
183
 
            msh::a_surface());
 
186
            msh::a_surface(), stub_id, stub_sender);
184
187
 
185
188
    Mock::VerifyAndClearExpectations(&test);
186
189
    EXPECT_CALL(surface_builder, destroy_surface(_)).Times(1);
196
199
{
197
200
    msh::Surface test(
198
201
            mt::fake_shared(surface_builder),
199
 
            msh::a_surface());
 
202
            msh::a_surface(), stub_id, stub_sender);
200
203
 
201
204
    EXPECT_NO_THROW({
202
205
        test.size();
213
216
{
214
217
    msh::Surface test(
215
218
            mt::fake_shared(surface_builder),
216
 
            msh::a_surface());
 
219
            msh::a_surface(), stub_id, stub_sender);
217
220
 
218
221
    EXPECT_NO_THROW({
219
222
        test.top_left();
230
233
{
231
234
    msh::Surface test(
232
235
            mt::fake_shared(surface_builder),
233
 
            msh::a_surface());
 
236
            msh::a_surface(), stub_id, stub_sender);
234
237
 
235
238
    EXPECT_NO_THROW({
236
239
        test.name();
247
250
{
248
251
    msh::Surface test(
249
252
            mt::fake_shared(surface_builder),
250
 
            msh::a_surface());
 
253
            msh::a_surface(), stub_id, stub_sender);
251
254
 
252
255
    EXPECT_NO_THROW({
253
256
        test.pixel_format();
264
267
{
265
268
    msh::Surface test(
266
269
            mt::fake_shared(surface_builder),
267
 
            msh::a_surface());
 
270
            msh::a_surface(), stub_id, stub_sender);
268
271
 
269
272
    EXPECT_NO_THROW({
270
273
        test.hide();
281
284
{
282
285
    msh::Surface test(
283
286
            mt::fake_shared(surface_builder),
284
 
            msh::a_surface());
 
287
            msh::a_surface(), stub_id, stub_sender);
285
288
 
286
289
    EXPECT_NO_THROW({
287
290
        test.show();
298
301
{
299
302
    msh::Surface test(
300
303
            mt::fake_shared(surface_builder),
301
 
            msh::a_surface());
 
304
            msh::a_surface(), stub_id, stub_sender);
302
305
 
303
306
    EXPECT_NO_THROW({
304
307
        test.destroy();
315
318
{
316
319
    msh::Surface test(
317
320
            mt::fake_shared(surface_builder),
318
 
            msh::a_surface());
 
321
            msh::a_surface(), stub_id, stub_sender);
319
322
 
320
323
    EXPECT_NO_THROW({
321
324
        test.force_requests_to_complete();
332
335
{
333
336
    msh::Surface test(
334
337
            mt::fake_shared(surface_builder),
335
 
            msh::a_surface());
 
338
            msh::a_surface(), stub_id, stub_sender);
336
339
 
337
340
    EXPECT_NO_THROW({
338
341
        test.advance_client_buffer();
349
352
{
350
353
    msh::Surface test(
351
354
            mt::fake_shared(surface_builder),
352
 
            msh::a_surface());
 
355
            msh::a_surface(), stub_id, stub_sender);
353
356
 
354
357
    surface_builder.reset_surface();
355
358
 
364
367
 
365
368
    msh::Surface surf(
366
369
            mt::fake_shared(surface_builder),
367
 
            msh::a_surface());
 
370
            msh::a_surface(), stub_id, stub_sender);
368
371
 
369
372
    EXPECT_THROW({
370
373
        surf.configure(static_cast<MirSurfaceAttrib>(111), 222);
377
380
 
378
381
    msh::Surface surf(
379
382
            mt::fake_shared(surface_builder),
380
 
            msh::a_surface());
 
383
            msh::a_surface(), stub_id, stub_sender);
381
384
 
382
385
    EXPECT_EQ(mir_surface_type_normal, surf.type());
383
386
 
411
414
 
412
415
    msh::Surface surf(
413
416
            mt::fake_shared(surface_builder),
414
 
            msh::a_surface());
 
417
            msh::a_surface(), stub_id, stub_sender);
415
418
 
416
419
    EXPECT_EQ(mir_surface_state_restored, surf.state());
417
420
 
464
467
 
465
468
    msh::Surface test(
466
469
        mt::fake_shared(surface_builder),
467
 
        msh::a_surface());
 
470
        msh::a_surface(), stub_id, stub_sender);
468
471
    
469
472
    mtd::MockInputTargeter targeter;
470
473
    EXPECT_CALL(targeter, focus_changed(_)).Times(1);
478
481
 
479
482
    msh::Surface test(
480
483
        mt::fake_shared(surface_builder),
481
 
        msh::a_surface());
 
484
        msh::a_surface(), stub_id, stub_sender);
482
485
    surface_builder.reset_surface();
483
486
 
484
487
    mtd::StubInputTargeter targeter;
494
497
    
495
498
    msh::Surface test(
496
499
        mt::fake_shared(surface_builder),
497
 
        msh::a_surface());
 
500
        msh::a_surface(), stub_id, stub_sender);
498
501
    
499
502
    EXPECT_NO_THROW({
500
503
            test.set_input_region(std::vector<geom::Rectangle>{});
511
514
{
512
515
    msh::Surface test(
513
516
        mt::fake_shared(surface_builder),
514
 
        msh::a_surface());
 
517
        msh::a_surface(), stub_id, stub_sender);
515
518
 
516
519
    mg::Buffer* buf_ptr{nullptr};
517
520