Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: sandbox/linux/seccomp-bpf/errorcode_unittest.cc

Issue 10833044: Refactored ErrorCode into it's own class (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added unittest (and new framework to make this possible) Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
6 #include "sandbox/linux/tests/unit_tests.h"
7
8 using namespace playground2;
9
10 namespace {
11
12 SANDBOX_TEST(ErrorCode, ErrnoConstructor) {
13 ErrorCode e0;
14 SANDBOX_ASSERT(e0.err() == SECCOMP_RET_INVALID);
15
16 ErrorCode e1(ErrorCode::ERR_ALLOWED);
17 SANDBOX_ASSERT(e1.err() == SECCOMP_RET_ALLOW);
18
19 ErrorCode e2(EPERM);
20 SANDBOX_ASSERT(e2.err() == SECCOMP_RET_ERRNO + EPERM);
21
22 SANDBOX_ASSERT_DEATH(ErrorCode e3(-1), "Invalid use of ErrorCode object");
23
24 ErrorCode e3 = Sandbox::Trap(NULL, NULL);
25 SANDBOX_ASSERT((e3.err() & SECCOMP_RET_ACTION) == SECCOMP_RET_TRAP);
26
27 return true;
28 }
29
30 SANDBOX_TEST(ErrorCode, Trap) {
31 ErrorCode e0 = Sandbox::Trap(NULL, "a");
32 ErrorCode e1 = Sandbox::Trap(NULL, "b");
33 SANDBOX_ASSERT((e0.err() & SECCOMP_RET_DATA) + 1 ==
34 (e1.err() & SECCOMP_RET_DATA));
35
36 ErrorCode e2 = Sandbox::Trap(NULL, "a");
37 SANDBOX_ASSERT((e0.err() & SECCOMP_RET_DATA) ==
38 (e2.err() & SECCOMP_RET_DATA));
39
40 return true;
41 }
42
43 SANDBOX_TEST(ErrorCode, Equals) {
44 ErrorCode e0;
45 SANDBOX_ASSERT_DEATH(e0.Equals(e0), "Dereferencing invalid ErrorCode");
46
47 ErrorCode e1(ErrorCode::ERR_ALLOWED);
48 ErrorCode e2(ErrorCode::ERR_ALLOWED);
49 SANDBOX_ASSERT(e1.Equals(e1));
50 SANDBOX_ASSERT(e1.Equals(e2));
51 SANDBOX_ASSERT(e2.Equals(e1));
52
53 ErrorCode e3(EPERM);
54 SANDBOX_ASSERT(!e1.Equals(e3));
55
56 ErrorCode e4 = Sandbox::Trap(NULL, "a");
57 ErrorCode e5 = Sandbox::Trap(NULL, "b");
58 ErrorCode e6 = Sandbox::Trap(NULL, "a");
59 SANDBOX_ASSERT(!e1.Equals(e4));
60 SANDBOX_ASSERT(!e3.Equals(e4));
61 SANDBOX_ASSERT(!e5.Equals(e4));
62 SANDBOX_ASSERT( e6.Equals(e4));
63
64 return true;
65 }
66
67 SANDBOX_TEST(ErrorCode, LessThan) {
68 ErrorCode e0;
69 SANDBOX_ASSERT_DEATH(e0.LessThan(e0), "Dereferencing invalid ErrorCode");
70
71 ErrorCode e1(ErrorCode::ERR_ALLOWED);
72 ErrorCode e2(ErrorCode::ERR_ALLOWED);
73 SANDBOX_ASSERT(!e1.LessThan(e1));
74 SANDBOX_ASSERT(!e1.LessThan(e2));
75 SANDBOX_ASSERT(!e2.LessThan(e1));
76
77 ErrorCode e3(EPERM);
78 SANDBOX_ASSERT(!e1.LessThan(e3));
79 SANDBOX_ASSERT( e3.LessThan(e1));
80
81 ErrorCode e4 = Sandbox::Trap(NULL, "a");
82 ErrorCode e5 = Sandbox::Trap(NULL, "b");
83 ErrorCode e6 = Sandbox::Trap(NULL, "a");
84 SANDBOX_ASSERT(e1.LessThan(e4));
85 SANDBOX_ASSERT(e3.LessThan(e4));
86 SANDBOX_ASSERT(e4.LessThan(e5));
87 SANDBOX_ASSERT(!e4.LessThan(e6));
88 SANDBOX_ASSERT(!e6.LessThan(e4));
89
90 return true;
91 }
92
93 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698