errorcode_unittest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 8using namespace playground2; 9 10namespace { 11 12SANDBOX_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 ErrorCode e3 = Sandbox::Trap(NULL, NULL); 23 SANDBOX_ASSERT((e3.err() & SECCOMP_RET_ACTION) == SECCOMP_RET_TRAP); 24} 25 26SANDBOX_TEST(ErrorCode, Trap) { 27 ErrorCode e0 = Sandbox::Trap(NULL, "a"); 28 ErrorCode e1 = Sandbox::Trap(NULL, "b"); 29 SANDBOX_ASSERT((e0.err() & SECCOMP_RET_DATA) + 1 == 30 (e1.err() & SECCOMP_RET_DATA)); 31 32 ErrorCode e2 = Sandbox::Trap(NULL, "a"); 33 SANDBOX_ASSERT((e0.err() & SECCOMP_RET_DATA) == 34 (e2.err() & SECCOMP_RET_DATA)); 35} 36 37SANDBOX_TEST(ErrorCode, Equals) { 38 ErrorCode e1(ErrorCode::ERR_ALLOWED); 39 ErrorCode e2(ErrorCode::ERR_ALLOWED); 40 SANDBOX_ASSERT(e1.Equals(e1)); 41 SANDBOX_ASSERT(e1.Equals(e2)); 42 SANDBOX_ASSERT(e2.Equals(e1)); 43 44 ErrorCode e3(EPERM); 45 SANDBOX_ASSERT(!e1.Equals(e3)); 46 47 ErrorCode e4 = Sandbox::Trap(NULL, "a"); 48 ErrorCode e5 = Sandbox::Trap(NULL, "b"); 49 ErrorCode e6 = Sandbox::Trap(NULL, "a"); 50 SANDBOX_ASSERT(!e1.Equals(e4)); 51 SANDBOX_ASSERT(!e3.Equals(e4)); 52 SANDBOX_ASSERT(!e5.Equals(e4)); 53 SANDBOX_ASSERT( e6.Equals(e4)); 54} 55 56SANDBOX_TEST(ErrorCode, LessThan) { 57 ErrorCode e1(ErrorCode::ERR_ALLOWED); 58 ErrorCode e2(ErrorCode::ERR_ALLOWED); 59 SANDBOX_ASSERT(!e1.LessThan(e1)); 60 SANDBOX_ASSERT(!e1.LessThan(e2)); 61 SANDBOX_ASSERT(!e2.LessThan(e1)); 62 63 ErrorCode e3(EPERM); 64 SANDBOX_ASSERT(!e1.LessThan(e3)); 65 SANDBOX_ASSERT( e3.LessThan(e1)); 66 67 ErrorCode e4 = Sandbox::Trap(NULL, "a"); 68 ErrorCode e5 = Sandbox::Trap(NULL, "b"); 69 ErrorCode e6 = Sandbox::Trap(NULL, "a"); 70 SANDBOX_ASSERT(e1.LessThan(e4)); 71 SANDBOX_ASSERT(e3.LessThan(e4)); 72 SANDBOX_ASSERT(e4.LessThan(e5)); 73 SANDBOX_ASSERT(!e4.LessThan(e6)); 74 SANDBOX_ASSERT(!e6.LessThan(e4)); 75} 76 77} // namespace 78