| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 // The test buffer data is 52 bytes, wrap position is set to 20 (this is | 5 // The test buffer data is 52 bytes, wrap position is set to 20 (this is |
| 6 // arbitrarily chosen). The total buffer size is allocated dynamically based on | 6 // arbitrarily chosen). The total buffer size is allocated dynamically based on |
| 7 // the actual header size. This gives: | 7 // the actual header size. This gives: |
| 8 // Header of some size, non-wrapping part 20 bytes, wrapping part 32 bytes. | 8 // Header of some size, non-wrapping part 20 bytes, wrapping part 32 bytes. |
| 9 // As input data, a 14 byte array is used and repeatedly written. It's chosen | 9 // As input data, a 14 byte array is used and repeatedly written. It's chosen |
| 10 // not to be an integer factor smaller than the wrapping part. This ensures that | 10 // not to be an integer factor smaller than the wrapping part. This ensures that |
| 11 // the wrapped data isn't repeated at the same position. | 11 // the wrapped data isn't repeated at the same position. |
| 12 // Note that desipte the number of wraps (if one or more), the reference output | 12 // Note that desipte the number of wraps (if one or more), the reference output |
| 13 // data is the same since the offset at each wrap is always the same. | 13 // data is the same since the offset at each wrap is always the same. |
| 14 | 14 |
| 15 #include "chrome/common/partial_circular_buffer.h" |
| 16 |
| 15 #include <stddef.h> | 17 #include <stddef.h> |
| 16 #include <stdint.h> | 18 #include <stdint.h> |
| 17 | 19 |
| 20 #include <memory> |
| 21 |
| 18 #include "base/macros.h" | 22 #include "base/macros.h" |
| 19 #include "base/memory/scoped_ptr.h" | |
| 20 #include "chrome/common/partial_circular_buffer.h" | |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 22 | 24 |
| 23 const uint32_t kWrapPosition = 20; | 25 const uint32_t kWrapPosition = 20; |
| 24 const uint8_t kInputData[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; | 26 const uint8_t kInputData[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; |
| 25 const uint8_t kOutputRefDataWrap[] = | 27 const uint8_t kOutputRefDataWrap[] = |
| 26 // The 20 bytes in the non-wrapping part. | 28 // The 20 bytes in the non-wrapping part. |
| 27 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, | 29 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, |
| 28 // The 32 bytes in wrapping part. | 30 // The 32 bytes in wrapping part. |
| 29 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1, 2, 3, 4, | 31 11, 12, 13, 14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1, 2, 3, 4, |
| 30 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; | 32 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 52 for (int i = 0; i < num; ++i) | 54 for (int i = 0; i < num; ++i) |
| 53 pcb_write_->Write(kInputData, sizeof(kInputData)); | 55 pcb_write_->Write(kInputData, sizeof(kInputData)); |
| 54 } | 56 } |
| 55 | 57 |
| 56 void InitReadBuffer() { | 58 void InitReadBuffer() { |
| 57 pcb_read_.reset(new PartialCircularBuffer( | 59 pcb_read_.reset(new PartialCircularBuffer( |
| 58 buffer_.get(), buffer_header_size_ + sizeof(kOutputRefDataWrap))); | 60 buffer_.get(), buffer_header_size_ + sizeof(kOutputRefDataWrap))); |
| 59 } | 61 } |
| 60 | 62 |
| 61 protected: | 63 protected: |
| 62 scoped_ptr<PartialCircularBuffer> pcb_write_; | 64 std::unique_ptr<PartialCircularBuffer> pcb_write_; |
| 63 scoped_ptr<PartialCircularBuffer> pcb_read_; | 65 std::unique_ptr<PartialCircularBuffer> pcb_read_; |
| 64 scoped_ptr<uint8_t[]> buffer_; | 66 std::unique_ptr<uint8_t[]> buffer_; |
| 65 uint32_t buffer_header_size_; | 67 uint32_t buffer_header_size_; |
| 66 | 68 |
| 67 DISALLOW_COPY_AND_ASSIGN(PartialCircularBufferTest); | 69 DISALLOW_COPY_AND_ASSIGN(PartialCircularBufferTest); |
| 68 }; | 70 }; |
| 69 | 71 |
| 70 TEST_F(PartialCircularBufferTest, NoWrapBeginningPartOnly) { | 72 TEST_F(PartialCircularBufferTest, NoWrapBeginningPartOnly) { |
| 71 InitWriteBuffer(false); | 73 InitWriteBuffer(false); |
| 72 WriteToBuffer(1); | 74 WriteToBuffer(1); |
| 73 InitReadBuffer(); | 75 InitReadBuffer(); |
| 74 | 76 |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 | 209 |
| 208 uint8_t output_data[sizeof(kOutputRefDataWrap)] = {0}; | 210 uint8_t output_data[sizeof(kOutputRefDataWrap)] = {0}; |
| 209 EXPECT_EQ(sizeof(output_data), | 211 EXPECT_EQ(sizeof(output_data), |
| 210 pcb_read_->Read(output_data, sizeof(output_data))); | 212 pcb_read_->Read(output_data, sizeof(output_data))); |
| 211 | 213 |
| 212 EXPECT_EQ(0, memcmp(kOutputRefDataWrap, output_data, sizeof(output_data))); | 214 EXPECT_EQ(0, memcmp(kOutputRefDataWrap, output_data, sizeof(output_data))); |
| 213 | 215 |
| 214 EXPECT_EQ(0u, pcb_read_->Read(output_data, sizeof(output_data))); | 216 EXPECT_EQ(0u, pcb_read_->Read(output_data, sizeof(output_data))); |
| 215 } | 217 } |
| 216 | 218 |
| OLD | NEW |