50
58
MOCK_METHOD1(remove_surface, void(std::weak_ptr<ms::Surface> const&));
51
59
MOCK_METHOD1(raise, void(std::weak_ptr<ms::Surface> const&));
55
TEST(SurfaceController, add_and_remove_surface)
62
struct SurfaceController : testing::Test
57
using namespace ::testing;
64
MockPlacementStrategy placement_strategy;
59
65
mtd::MockSurface mock_surface;
60
66
std::shared_ptr<ms::Surface> const expect_surface = mt::fake_shared(mock_surface);
61
auto const surface = std::make_shared<mtd::MockSurface>();
62
67
testing::NiceMock<MockSurfaceAllocator> mock_surface_allocator;
63
68
MockSurfaceStackModel model;
65
ms::SurfaceController controller(mt::fake_shared(mock_surface_allocator), mt::fake_shared(model));
69
mtd::StubSceneSession session;
70
std::shared_ptr<ms::SurfaceObserver> observer;
74
using namespace ::testing;
75
ON_CALL(mock_surface_allocator, create_surface(_)).WillByDefault(Return(expect_surface));
76
ON_CALL(placement_strategy, place(_, _)).WillByDefault(ReturnArg<1>());
81
TEST_F(SurfaceController, add_and_remove_surface)
83
using namespace ::testing;
85
ms::SurfaceController controller(
86
mt::fake_shared(mock_surface_allocator),
87
mt::fake_shared(placement_strategy),
88
mt::fake_shared(model));
91
EXPECT_CALL(placement_strategy, place(_, _)).Times(1);
68
92
EXPECT_CALL(mock_surface_allocator, create_surface(_)).Times(1).WillOnce(Return(expect_surface));
69
93
EXPECT_CALL(mock_surface, add_observer(_)).Times(1);
70
94
EXPECT_CALL(model, add_surface(_,_,_)).Times(1);
71
95
EXPECT_CALL(model, remove_surface(_)).Times(1);
73
auto actual_surface = controller.add_surface(msh::a_surface(), std::shared_ptr<ms::SurfaceObserver>());
97
auto actual_surface = controller.add_surface(ms::a_surface(), &session, observer);
75
99
EXPECT_THAT(actual_surface, Eq(expect_surface));
76
100
controller.remove_surface(actual_surface);
79
TEST(SurfaceController, raise_surface)
103
TEST_F(SurfaceController, raise_surface)
81
105
using namespace ::testing;
83
testing::NiceMock<MockSurfaceAllocator> mock_surface_allocator;
84
MockSurfaceStackModel model;
86
ms::SurfaceController controller(mt::fake_shared(mock_surface_allocator), mt::fake_shared(model));
107
ms::SurfaceController controller(
108
mt::fake_shared(mock_surface_allocator),
109
mt::fake_shared(placement_strategy),
110
mt::fake_shared(model));
88
112
EXPECT_CALL(model, raise(_)).Times(1);
90
114
controller.raise(std::weak_ptr<ms::Surface>());
117
TEST_F(SurfaceController, offers_create_surface_parameters_to_placement_strategy)
119
using namespace ::testing;
120
EXPECT_CALL(mock_surface, add_observer(_)).Times(AnyNumber());
121
EXPECT_CALL(model, add_surface(_,_,_)).Times(AnyNumber());
123
ms::SurfaceController controller(
124
mt::fake_shared(mock_surface_allocator),
125
mt::fake_shared(placement_strategy),
126
mt::fake_shared(model));
128
auto params = ms::a_surface();
129
EXPECT_CALL(placement_strategy, place(Ref(session), Ref(params))).Times(1)
130
.WillOnce(Return(ms::a_surface()));
132
controller.add_surface(params, &session, observer);
135
TEST_F(SurfaceController, forwards_create_surface_parameters_from_placement_strategy_to_underlying_factory)
137
using namespace ::testing;
138
EXPECT_CALL(mock_surface, add_observer(_)).Times(AnyNumber());
139
EXPECT_CALL(model, add_surface(_,_,_)).Times(AnyNumber());
141
ms::SurfaceController controller(
142
mt::fake_shared(mock_surface_allocator),
143
mt::fake_shared(placement_strategy),
144
mt::fake_shared(model));
146
auto params = ms::a_surface();
147
auto placed_params = params;
148
placed_params.size.width = geom::Width{100};
150
EXPECT_CALL(placement_strategy, place(_, Ref(params))).Times(1)
151
.WillOnce(Return(placed_params));
152
EXPECT_CALL(mock_surface_allocator, create_surface(placed_params));
154
controller.add_surface(params, &session, observer);