2
* Copyright © 2013 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 3 as
6
* published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Kevin DuBois <kevin.dubois@canonical.com>
19
#include "src/platform/graphics/mesa/internal_client.h"
20
#include "mir/graphics/internal_surface.h"
21
#include "mir_toolkit/mesa/native_display.h"
22
#include "src/platform/graphics/mesa/internal_native_surface.h"
24
#include <gtest/gtest.h>
26
namespace geom=mir::geometry;
27
namespace mg = mir::graphics;
28
namespace mgm=mir::graphics::mesa;
32
class StubInternalSurface : public mg::InternalSurface
35
geom::Size size() const
40
MirPixelFormat pixel_format() const
42
return MirPixelFormat();
45
void swap_buffers(mg::Buffer*&)
51
TEST(InternalClient, native_display_sanity)
53
auto stub_display = std::make_shared<MirMesaEGLNativeDisplay>();
54
mgm::InternalClient client(stub_display);
56
auto native_display = client.egl_native_display();
57
EXPECT_EQ(reinterpret_cast<EGLNativeDisplayType>(stub_display.get()), native_display);
60
TEST(InternalClient, native_surface_sanity)
62
auto stub_display = std::make_shared<MirMesaEGLNativeDisplay>();
63
mgm::InternalClient client(stub_display);
65
auto stub_window = std::make_shared<StubInternalSurface>();
66
auto native_window = static_cast<mgm::InternalNativeSurface*>(client.egl_native_window(stub_window));
68
ASSERT_NE(nullptr, native_window->surface_advance_buffer);
69
ASSERT_NE(nullptr, native_window->surface_get_parameters);
70
ASSERT_NE(nullptr, native_window->surface_set_swapinterval);