Index: mojo/public/cpp/bindings/tests/bounds_checker_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/bounds_checker_unittest.cc b/mojo/public/cpp/bindings/tests/bounds_checker_unittest.cc |
deleted file mode 100644 |
index 1cd961873e5c0348e974d7073dbefd48bd8cb3a9..0000000000000000000000000000000000000000 |
--- a/mojo/public/cpp/bindings/tests/bounds_checker_unittest.cc |
+++ /dev/null |
@@ -1,209 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <limits> |
- |
-#include "mojo/public/cpp/bindings/lib/bindings_serialization.h" |
-#include "mojo/public/cpp/bindings/lib/bounds_checker.h" |
-#include "mojo/public/cpp/system/core.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace mojo { |
-namespace test { |
-namespace { |
- |
-const void* ToPtr(uintptr_t ptr) { |
- return reinterpret_cast<const void*>(ptr); |
-} |
- |
-#ifdef NDEBUG |
-TEST(BoundsCheckerTest, ConstructorRangeOverflow) { |
- { |
- // Test memory range overflow. |
- internal::BoundsChecker checker( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 3000), 5000, 0); |
- |
- EXPECT_FALSE(checker.IsValidRange( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 3000), 1)); |
- EXPECT_FALSE(checker.ClaimMemory( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 3000), 1)); |
- } |
- |
- if (sizeof(size_t) > sizeof(uint32_t)) { |
- // Test handle index range overflow. |
- size_t num_handles = |
- static_cast<size_t>(std::numeric_limits<uint32_t>::max()) + 5; |
- internal::BoundsChecker checker(ToPtr(0), 0, num_handles); |
- |
- EXPECT_FALSE(checker.ClaimHandle(Handle(0))); |
- EXPECT_FALSE( |
- checker.ClaimHandle(Handle(std::numeric_limits<uint32_t>::max() - 1))); |
- |
- EXPECT_TRUE( |
- checker.ClaimHandle(Handle(internal::kEncodedInvalidHandleValue))); |
- } |
-} |
-#endif |
- |
-TEST(BoundsCheckerTest, IsValidRange) { |
- { |
- internal::BoundsChecker checker(ToPtr(1234), 100, 0); |
- |
- // Basics. |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(100), 5)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1230), 50)); |
- EXPECT_TRUE(checker.IsValidRange(ToPtr(1234), 5)); |
- EXPECT_TRUE(checker.IsValidRange(ToPtr(1240), 50)); |
- EXPECT_TRUE(checker.IsValidRange(ToPtr(1234), 100)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1234), 101)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1240), 100)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1333), 5)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(2234), 5)); |
- |
- // ClaimMemory() updates the valid range. |
- EXPECT_TRUE(checker.ClaimMemory(ToPtr(1254), 10)); |
- |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1234), 1)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1254), 10)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1263), 1)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1263), 10)); |
- EXPECT_TRUE(checker.IsValidRange(ToPtr(1264), 10)); |
- EXPECT_TRUE(checker.IsValidRange(ToPtr(1264), 70)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1264), 71)); |
- } |
- |
- { |
- internal::BoundsChecker checker(ToPtr(1234), 100, 0); |
- // Should return false for empty ranges. |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(0), 0)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1200), 0)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1234), 0)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1240), 0)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(2234), 0)); |
- } |
- |
- { |
- // The valid memory range is empty. |
- internal::BoundsChecker checker(ToPtr(1234), 0, 0); |
- |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1234), 1)); |
- EXPECT_FALSE(checker.IsValidRange(ToPtr(1234), 0)); |
- } |
- |
- { |
- internal::BoundsChecker checker( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 2000), 1000, 0); |
- |
- // Test overflow. |
- EXPECT_FALSE(checker.IsValidRange( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 1500), 4000)); |
- EXPECT_FALSE(checker.IsValidRange( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 1500), |
- std::numeric_limits<uint32_t>::max())); |
- |
- // This should be fine. |
- EXPECT_TRUE(checker.IsValidRange( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 1500), 200)); |
- } |
-} |
- |
-TEST(BoundsCheckerTest, ClaimHandle) { |
- { |
- internal::BoundsChecker checker(ToPtr(0), 0, 10); |
- |
- // Basics. |
- EXPECT_TRUE(checker.ClaimHandle(Handle(0))); |
- EXPECT_FALSE(checker.ClaimHandle(Handle(0))); |
- |
- EXPECT_TRUE(checker.ClaimHandle(Handle(9))); |
- EXPECT_FALSE(checker.ClaimHandle(Handle(10))); |
- |
- // Should fail because it is smaller than the max index that has been |
- // claimed. |
- EXPECT_FALSE(checker.ClaimHandle(Handle(8))); |
- |
- // Should return true for invalid handle. |
- EXPECT_TRUE( |
- checker.ClaimHandle(Handle(internal::kEncodedInvalidHandleValue))); |
- EXPECT_TRUE( |
- checker.ClaimHandle(Handle(internal::kEncodedInvalidHandleValue))); |
- } |
- |
- { |
- // No handle to claim. |
- internal::BoundsChecker checker(ToPtr(0), 0, 0); |
- |
- EXPECT_FALSE(checker.ClaimHandle(Handle(0))); |
- |
- // Should still return true for invalid handle. |
- EXPECT_TRUE( |
- checker.ClaimHandle(Handle(internal::kEncodedInvalidHandleValue))); |
- } |
- |
- { |
- // Test the case that |num_handles| is the same value as |
- // |internal::kEncodedInvalidHandleValue|. |
- EXPECT_EQ(internal::kEncodedInvalidHandleValue, |
- std::numeric_limits<uint32_t>::max()); |
- internal::BoundsChecker checker( |
- ToPtr(0), 0, std::numeric_limits<uint32_t>::max()); |
- |
- EXPECT_TRUE( |
- checker.ClaimHandle(Handle(std::numeric_limits<uint32_t>::max() - 1))); |
- EXPECT_FALSE( |
- checker.ClaimHandle(Handle(std::numeric_limits<uint32_t>::max() - 1))); |
- EXPECT_FALSE(checker.ClaimHandle(Handle(0))); |
- |
- // Should still return true for invalid handle. |
- EXPECT_TRUE( |
- checker.ClaimHandle(Handle(internal::kEncodedInvalidHandleValue))); |
- } |
-} |
- |
-TEST(BoundsCheckerTest, ClaimMemory) { |
- { |
- internal::BoundsChecker checker(ToPtr(1000), 2000, 0); |
- |
- // Basics. |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(500), 100)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(800), 300)); |
- EXPECT_TRUE(checker.ClaimMemory(ToPtr(1000), 100)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(1099), 100)); |
- EXPECT_TRUE(checker.ClaimMemory(ToPtr(1100), 200)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(2000), 1001)); |
- EXPECT_TRUE(checker.ClaimMemory(ToPtr(2000), 500)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(2000), 500)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(1400), 100)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(3000), 1)); |
- EXPECT_TRUE(checker.ClaimMemory(ToPtr(2500), 500)); |
- } |
- |
- { |
- // No memory to claim. |
- internal::BoundsChecker checker(ToPtr(10000), 0, 0); |
- |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(10000), 1)); |
- EXPECT_FALSE(checker.ClaimMemory(ToPtr(10000), 0)); |
- } |
- |
- { |
- internal::BoundsChecker checker( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 1000), 500, 0); |
- |
- // Test overflow. |
- EXPECT_FALSE(checker.ClaimMemory( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 750), 4000)); |
- EXPECT_FALSE( |
- checker.ClaimMemory(ToPtr(std::numeric_limits<uintptr_t>::max() - 750), |
- std::numeric_limits<uint32_t>::max())); |
- |
- // This should be fine. |
- EXPECT_TRUE(checker.ClaimMemory( |
- ToPtr(std::numeric_limits<uintptr_t>::max() - 750), 200)); |
- } |
-} |
- |
-} // namespace |
-} // namespace test |
-} // namespace mojo |