Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a04ed196 authored by Cody Heiner's avatar Cody Heiner Committed by Android (Google) Code Review
Browse files

Merge "Add `front` and `back` methods to RingBuffer" into udc-dev

parents c0f0c312 18838bcf
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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)]; }

+15 −0
Original line number Diff line number Diff line
@@ -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);