~ubuntu-branches/ubuntu/utopic/mir/utopic-proposed

« back to all changes in this revision

Viewing changes to tests/unit-tests/test_udev_wrapper.cpp

  • Committer: Package Import Robot
  • Author(s): Ubuntu daily release
  • Date: 2014-03-10 19:28:46 UTC
  • mto: This revision was merged to the branch mainline in revision 63.
  • Revision ID: package-import@ubuntu.com-20140310192846-rq9qm3ec26yrelo2
Tags: upstream-0.1.6+14.04.20140310
ImportĀ upstreamĀ versionĀ 0.1.6+14.04.20140310

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 
34
34
namespace mtf=mir::mir_test_framework;
35
35
 
 
36
namespace
 
37
{
 
38
 
 
39
bool KilledByInvalidMemoryAccess(int exit_status)
 
40
{
 
41
    return testing::KilledBySignal(SIGSEGV)(exit_status) ||
 
42
           testing::KilledBySignal(SIGBUS)(exit_status) ||
 
43
           testing::KilledBySignal(SIGABRT)(exit_status);
 
44
}
 
45
 
36
46
class UdevWrapperTest : public ::testing::Test
37
47
{
38
48
public:
39
49
    mtf::UdevEnvironment udev_environment;
40
50
};
41
51
 
 
52
}
 
53
 
42
54
TEST_F(UdevWrapperTest, IteratesOverCorrectNumberOfDevices)
43
55
{
44
56
    udev_environment.add_device("drm", "fakedev1", NULL, {}, {});
256
268
    }
257
269
}
258
270
 
 
271
typedef UdevWrapperTest UdevWrapperDeathTest;
 
272
 
 
273
TEST_F(UdevWrapperDeathTest, DereferencingEndReturnsInvalidObject)
 
274
{
 
275
    ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
276
    udev_environment.add_device("drm", "control64D", NULL, {}, {});
 
277
    udev_environment.add_device("drm", "card1", NULL, {}, {});
 
278
 
 
279
    mir::udev::Enumerator devices(std::make_shared<mir::udev::Context>());
 
280
 
 
281
    devices.scan_devices();
 
282
 
 
283
    EXPECT_EXIT((*devices.end()).subsystem(), KilledByInvalidMemoryAccess, "");
 
284
 
 
285
    auto iter = devices.begin();
 
286
 
 
287
    while(iter != devices.end())
 
288
    {
 
289
        iter++;
 
290
    }
 
291
    EXPECT_EXIT((*iter).subsystem(), KilledByInvalidMemoryAccess, "");
 
292
}
 
293
 
 
294
TEST_F(UdevWrapperTest, MemberDereferenceWorks)
 
295
{
 
296
    udev_environment.add_device("drm", "control64D", NULL, {}, {});
 
297
    udev_environment.add_device("drm", "card1", NULL, {}, {});
 
298
 
 
299
    mir::udev::Enumerator devices(std::make_shared<mir::udev::Context>());
 
300
 
 
301
    devices.scan_devices();
 
302
    auto iter = devices.begin();
 
303
 
 
304
    EXPECT_STREQ("drm", iter->subsystem());
 
305
    EXPECT_STREQ("drm", iter->subsystem());
 
306
}
 
307
 
 
308
TEST_F(UdevWrapperDeathTest, MemberDereferenceOfEndDies)
 
309
{
 
310
    ::testing::FLAGS_gtest_death_test_style = "threadsafe";
 
311
    udev_environment.add_device("drm", "control64D", NULL, {}, {});
 
312
    udev_environment.add_device("drm", "card1", NULL, {}, {});
 
313
 
 
314
    mir::udev::Enumerator devices(std::make_shared<mir::udev::Context>());
 
315
 
 
316
    devices.scan_devices();
 
317
 
 
318
    EXPECT_EXIT(devices.end()->subsystem(), KilledByInvalidMemoryAccess, "");
 
319
 
 
320
    auto iter = devices.begin();
 
321
 
 
322
    while(iter != devices.end())
 
323
    {
 
324
        iter++;
 
325
    }
 
326
    EXPECT_EXIT(iter->subsystem(), KilledByInvalidMemoryAccess, "");
 
327
}
 
328
 
259
329
TEST_F(UdevWrapperTest, UdevMonitorDoesNotTriggerBeforeEnabling)
260
330
{
261
331
    mir::udev::Monitor monitor{mir::udev::Context()};