| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <limits> | 5 #include <limits> |
| 6 | 6 |
| 7 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" | 7 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" |
| 8 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" | 8 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| 11 namespace mojo { | 11 namespace mojo { |
| 12 namespace test { | 12 namespace test { |
| 13 namespace { | 13 namespace { |
| 14 | 14 |
| 15 bool IsZero(void* p_buf, size_t size) { | 15 bool IsZero(void* p_buf, size_t size) { |
| 16 char* buf = reinterpret_cast<char*>(p_buf); | 16 char* buf = reinterpret_cast<char*>(p_buf); |
| 17 for (size_t i = 0; i < size; ++i) { | 17 for (size_t i = 0; i < size; ++i) { |
| 18 if (buf[i] != 0) | 18 if (buf[i] != 0) |
| 19 return false; | 19 return false; |
| 20 } | 20 } |
| 21 return true; | 21 return true; |
| 22 } | 22 } |
| 23 | 23 |
| 24 // Tests that you can create a FixedBuffer whose underlying buffer size is not |
| 25 // a multiple of 8. |
| 26 TEST(FixedBufferTest, UnAlignedBufferSized) { |
| 27 char char_buf[10] = {}; |
| 28 internal::FixedBuffer fixed_buf; |
| 29 fixed_buf.Initialize(char_buf, sizeof(char_buf)); |
| 30 } |
| 31 |
| 24 // Tests that FixedBuffer allocates memory aligned to 8 byte boundaries. | 32 // Tests that FixedBuffer allocates memory aligned to 8 byte boundaries. |
| 25 TEST(FixedBufferTest, Alignment) { | 33 TEST(FixedBufferTest, Alignment) { |
| 26 internal::FixedBufferForTesting buf(internal::Align(10) * 2); | 34 internal::FixedBufferForTesting buf(internal::Align(10) * 2); |
| 27 ASSERT_EQ(buf.size(), 16u * 2); | 35 ASSERT_EQ(buf.size(), 16u * 2); |
| 28 | 36 |
| 29 void* a = buf.Allocate(10); | 37 void* a = buf.Allocate(10); |
| 30 ASSERT_TRUE(a); | 38 ASSERT_TRUE(a); |
| 31 EXPECT_TRUE(IsZero(a, 10)); | 39 EXPECT_TRUE(IsZero(a, 10)); |
| 32 EXPECT_EQ(0, reinterpret_cast<ptrdiff_t>(a) % 8); | 40 EXPECT_EQ(0, reinterpret_cast<ptrdiff_t>(a) % 8); |
| 33 | 41 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 90 |
| 83 // A lot too large, leading to possible integer overflow. | 91 // A lot too large, leading to possible integer overflow. |
| 84 EXPECT_EQ(reinterpret_cast<void*>(0), | 92 EXPECT_EQ(reinterpret_cast<void*>(0), |
| 85 buf.Allocate(std::numeric_limits<size_t>::max() - 8u)); | 93 buf.Allocate(std::numeric_limits<size_t>::max() - 8u)); |
| 86 } | 94 } |
| 87 #endif | 95 #endif |
| 88 | 96 |
| 89 } // namespace | 97 } // namespace |
| 90 } // namespace test | 98 } // namespace test |
| 91 } // namespace mojo | 99 } // namespace mojo |
| OLD | NEW |