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 |