~vanvugt/mir/heresy

« back to all changes in this revision

Viewing changes to tests/unit-tests/graphics/android/test_device_detection.cpp

  • Committer: Daniel van Vugt
  • Date: 2015-06-03 07:35:16 UTC
  • mfrom: (2600.2.13 development-branch)
  • Revision ID: daniel.van.vugt@canonical.com-20150603073516-av54iqy9ngrkrf2t
Merge latest trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 */
18
18
 
19
19
#include "src/platforms/android/server/device_quirks.h"
 
20
#include "mir/options/program_option.h"
 
21
 
20
22
#include <gmock/gmock.h>
21
23
#include <gtest/gtest.h>
22
24
 
23
25
namespace mga = mir::graphics::android;
 
26
namespace bpo = boost::program_options;
24
27
 
25
28
namespace
26
29
{
128
131
    mga::DeviceQuirks quirks(mock_ops);
129
132
    EXPECT_THAT(quirks.aligned_width(720), Eq(736));
130
133
}
 
134
 
 
135
struct DeviceQuirks : testing::Test
 
136
{
 
137
    void SetUp()
 
138
    {
 
139
        mga::DeviceQuirks::add_options(desc);
 
140
    }
 
141
 
 
142
    void disable_num_framebuffers_quirk()
 
143
    {
 
144
        int const argc = 2;
 
145
        char const* argv[argc] = {
 
146
            __PRETTY_FUNCTION__,
 
147
            "--enable-num-framebuffers-quirk=false"
 
148
        };
 
149
 
 
150
        options.parse_arguments(desc, argc, argv);
 
151
    }
 
152
 
 
153
    void disable_single_gralloc_instance_quirk()
 
154
    {
 
155
        int const argc = 2;
 
156
        char const* argv[argc] = {
 
157
            __PRETTY_FUNCTION__,
 
158
            "--enable-single-gralloc-instance-quirk=false"
 
159
        };
 
160
 
 
161
        options.parse_arguments(desc, argc, argv);
 
162
    }
 
163
 
 
164
    void disable_width_alignment_quirk()
 
165
    {
 
166
        int const argc = 2;
 
167
        char const* argv[argc] = {
 
168
            __PRETTY_FUNCTION__,
 
169
            "--enable-width-alignment-quirk=false"
 
170
        };
 
171
 
 
172
        options.parse_arguments(desc, argc, argv);
 
173
    }
 
174
 
 
175
    bpo::options_description desc{"Options"};
 
176
    mir::options::ProgramOption options;
 
177
};
 
178
 
 
179
TEST_F(DeviceQuirks, number_of_framebuffers_quirk_can_be_disabled)
 
180
{
 
181
    using namespace testing;
 
182
    char const default_str[] = "";
 
183
    char const name_str[] = "mx3";
 
184
 
 
185
    MockOps mock_ops;
 
186
    EXPECT_CALL(mock_ops, property_get(StrEq("ro.product.device"), _, StrEq(default_str)))
 
187
        .Times(1)
 
188
        .WillOnce(Invoke([&]
 
189
        (char const*, char* value, char const*)
 
190
        {
 
191
            strncpy(value, name_str, PROP_VALUE_MAX);
 
192
            return 0;
 
193
        }));
 
194
 
 
195
    disable_num_framebuffers_quirk();
 
196
    mga::DeviceQuirks quirks(mock_ops, options);
 
197
    EXPECT_THAT(quirks.num_framebuffers(), Ne(3));
 
198
}
 
199
 
 
200
TEST_F(DeviceQuirks, single_gralloc_instance_quirk_can_be_disabled)
 
201
{
 
202
    using namespace testing;
 
203
    char const default_str[] = "";
 
204
    char const krillin_name_str[] = "krillin";
 
205
 
 
206
    MockOps mock_ops;
 
207
    EXPECT_CALL(mock_ops, property_get(StrEq("ro.product.device"), _, StrEq(default_str)))
 
208
        .Times(1)
 
209
        .WillOnce(Invoke([&](char const*, char* value, char const*)
 
210
        {
 
211
            strncpy(value, krillin_name_str, PROP_VALUE_MAX);
 
212
            return 0;
 
213
        }));
 
214
 
 
215
    disable_single_gralloc_instance_quirk();
 
216
    mga::DeviceQuirks quirks(mock_ops, options);
 
217
    EXPECT_TRUE(quirks.gralloc_reopenable_after_close());
 
218
}
 
219
 
 
220
TEST_F(DeviceQuirks, width_alignment_quirk_can_be_disabled)
 
221
{
 
222
    using namespace testing;
 
223
    char const default_str[] = "";
 
224
    char const vegetahd_name_str[] = "vegetahd";
 
225
 
 
226
    MockOps mock_ops;
 
227
    EXPECT_CALL(mock_ops, property_get(StrEq("ro.product.device"), _, StrEq(default_str)))
 
228
        .Times(1)
 
229
        .WillOnce(Invoke([&](char const*, char* value, char const*)
 
230
        {
 
231
            strncpy(value, vegetahd_name_str, PROP_VALUE_MAX);
 
232
            return 0;
 
233
        }));
 
234
 
 
235
    disable_width_alignment_quirk();
 
236
    mga::DeviceQuirks quirks(mock_ops, options);
 
237
    EXPECT_THAT(quirks.aligned_width(720), Eq(720));
 
238
}