~kdub/mir/fix-1301040

« back to all changes in this revision

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

  • Committer: Tarmac
  • Author(s): Alan Griffiths
  • Date: 2014-04-01 17:40:49 UTC
  • mfrom: (1513.3.10 mir1)
  • Revision ID: tarmac-20140401174049-vj1jmakptw9v31qg
scene: Simplify BasicSurface creation by separating out an initial cut of SurfaceObserver.

Approved by Andreas Pokorny, Alexandros Frantzis, Gerry Boland, PS Jenkins bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include "mir/shell/placement_strategy.h"
21
21
#include "mir/shell/surface_creation_parameters.h"
22
22
#include "mir/shell/session.h"
 
23
#include "mir/scene/surface.h"
 
24
#include "mir/scene/surface_event_source.h"
23
25
#include "mir/scene/surface_coordinator.h"
24
26
 
25
27
#include "mir_test_doubles/stub_shell_session.h"
38
40
{
39
41
struct MockSurfaceCoordinator : public ms::SurfaceCoordinator
40
42
{
41
 
    MOCK_METHOD3(add_surface, std::shared_ptr<ms::Surface>(
42
 
        mf::SurfaceId,
 
43
    MOCK_METHOD2(add_surface, std::shared_ptr<ms::Surface>(
43
44
        msh::SurfaceCreationParameters const&,
44
 
        std::shared_ptr<mf::EventSink> const&));
 
45
        std::shared_ptr<ms::SurfaceObserver> const&));
45
46
 
46
47
    void remove_surface(std::weak_ptr<ms::Surface> const& /*surface*/) override {}
47
48
    void raise(std::weak_ptr<ms::Surface> const& /*surface*/)  override {}
57
58
    void SetUp()
58
59
    {
59
60
        using namespace ::testing;
60
 
        ON_CALL(*surface_coordinator, add_surface(_, _, _)).WillByDefault(Return(null_surface));
 
61
        ON_CALL(*surface_coordinator, add_surface(_, _)).WillByDefault(Return(null_surface));
61
62
    }
62
63
    std::shared_ptr<ms::Surface> null_surface;
63
64
    std::shared_ptr<MockSurfaceCoordinator> surface_coordinator = std::make_shared<MockSurfaceCoordinator>();
 
65
    std::shared_ptr<ms::SurfaceObserver> const observer = std::make_shared<ms::SurfaceEventSource>(mf::SurfaceId(), std::make_shared<mtd::NullEventSink>());
64
66
    std::shared_ptr<MockPlacementStrategy> placement_strategy = std::make_shared<MockPlacementStrategy>();
65
67
};
66
68
 
73
75
    msh::OrganisingSurfaceFactory factory(surface_coordinator, placement_strategy);
74
76
 
75
77
    mtd::StubShellSession session;
76
 
    EXPECT_CALL(*surface_coordinator, add_surface(_, _, _)).Times(1);
 
78
    EXPECT_CALL(*surface_coordinator, add_surface(_, _)).Times(1);
77
79
 
78
80
    auto params = msh::a_surface();
79
81
    EXPECT_CALL(*placement_strategy, place(Ref(session), Ref(params))).Times(1)
80
82
        .WillOnce(Return(msh::a_surface()));
81
83
 
82
 
    factory.create_surface(&session, params, mf::SurfaceId(), std::make_shared<mtd::NullEventSink>());
 
84
    factory.create_surface(&session, params, observer);
83
85
}
84
86
 
85
87
TEST_F(OrganisingSurfaceFactorySetup, forwards_create_surface_parameters_from_placement_strategy_to_underlying_factory)
88
90
 
89
91
    msh::OrganisingSurfaceFactory factory(surface_coordinator, placement_strategy);
90
92
 
91
 
    std::shared_ptr<mf::EventSink> sink = std::make_shared<mtd::NullEventSink>();
92
93
    auto params = msh::a_surface();
93
94
    auto placed_params = params;
94
95
    placed_params.size.width = geom::Width{100};
95
96
 
96
97
    EXPECT_CALL(*placement_strategy, place(_, Ref(params))).Times(1)
97
98
        .WillOnce(Return(placed_params));
98
 
    EXPECT_CALL(*surface_coordinator, add_surface(mf::SurfaceId(), placed_params, sink));
 
99
    EXPECT_CALL(*surface_coordinator, add_surface(placed_params, _));
99
100
 
100
 
    factory.create_surface(nullptr, params, mf::SurfaceId(), sink);
 
101
    factory.create_surface(nullptr, params, observer);
101
102
}