summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cody Heiner <codyheiner@google.com> 2023-04-05 16:52:27 -0700
committer Cody Heiner <codyheiner@google.com> 2023-04-11 00:02:54 +0000
commit18838bcf7d0b61a31d039615287fb3a5ca189231 (patch)
tree9496b30f5884f998fb8e1dd4aa458a02f5fdc6e7
parent3704cb3be5100dd9f8ad85f4b7ac6d3b0459d10f (diff)
Add `front` and `back` methods to RingBuffer
Test: Corresponding added RingBuffer tests pass (`atest libinput_tests`) Bug: 268245099 Change-Id: If330940e67e70d809748b2aaa6156bed835c6c9d
-rw-r--r--include/input/RingBuffer.h5
-rw-r--r--libs/input/tests/RingBuffer_test.cpp15
2 files changed, 20 insertions, 0 deletions
diff --git a/include/input/RingBuffer.h b/include/input/RingBuffer.h
index 67984b7c80..37fe5afeea 100644
--- a/include/input/RingBuffer.h
+++ b/include/input/RingBuffer.h
@@ -103,6 +103,11 @@ public:
iterator end() { return {*this, mSize}; }
const_iterator end() const { return {*this, mSize}; }
+ reference front() { return mBuffer[mBegin]; }
+ const_reference front() const { return mBuffer[mBegin]; }
+ reference back() { return mBuffer[bufferIndex(mSize - 1)]; }
+ const_reference back() const { return mBuffer[bufferIndex(mSize - 1)]; }
+
reference operator[](size_type i) { return mBuffer[bufferIndex(i)]; }
const_reference operator[](size_type i) const { return mBuffer[bufferIndex(i)]; }
diff --git a/libs/input/tests/RingBuffer_test.cpp b/libs/input/tests/RingBuffer_test.cpp
index 8a6ef4c21b..a2ef658934 100644
--- a/libs/input/tests/RingBuffer_test.cpp
+++ b/libs/input/tests/RingBuffer_test.cpp
@@ -118,6 +118,21 @@ TEST(RingBufferTest, Assignment) {
EXPECT_EQ(0u, d.capacity());
}
+TEST(RingBufferTest, FrontBackAccess) {
+ RingBuffer<int> buffer(/*capacity=*/2);
+ buffer.pushBack(1);
+ EXPECT_EQ(1, buffer.front());
+ EXPECT_EQ(1, buffer.back());
+
+ buffer.pushFront(0);
+ EXPECT_EQ(0, buffer.front());
+ EXPECT_EQ(1, buffer.back());
+
+ buffer.pushFront(-1);
+ EXPECT_EQ(-1, buffer.front());
+ EXPECT_EQ(0, buffer.back());
+}
+
TEST(RingBufferTest, Subscripting) {
RingBuffer<int> buffer(/*capacity=*/2);
buffer.pushBack(1);