Add iterators to ring_buffer

Change-Id: Id3185b94240da595925fc4878f068b673ea98dd9
diff --git a/aos/containers/ring_buffer_test.cc b/aos/containers/ring_buffer_test.cc
index 5fb2331..01e057f 100644
--- a/aos/containers/ring_buffer_test.cc
+++ b/aos/containers/ring_buffer_test.cc
@@ -118,5 +118,41 @@
   }
 }
 
+// Test that an iterator over the buffer works.
+TEST_F(RingBufferTest, Iterator) {
+  // Over fill it, and then clear it out.
+  ASSERT_TRUE(buffer_.empty());
+
+  for (int i = 0; i < 12; ++i) {
+    buffer_.Push(i);
+  }
+
+  int i = 0;
+  for (int element : buffer_) {
+    EXPECT_EQ(i + 2, element);
+    ++i;
+  }
+  EXPECT_EQ(i, buffer_.size());
+}
+
+// Test that a const iterator over the buffer works.
+TEST_F(RingBufferTest, CIterator) {
+  // Over fill it, and then clear it out.
+  ASSERT_TRUE(buffer_.empty());
+
+  for (int i = 0; i < 12; ++i) {
+    buffer_.Push(i);
+  }
+
+  const RingBuffer<int, 10> &cbuffer = buffer_;
+
+  int i = 0;
+  for (const int element : cbuffer) {
+    EXPECT_EQ(i + 2, element);
+    ++i;
+  }
+  EXPECT_EQ(i, buffer_.size());
+}
+
 }  // namespace testing
 }  // namespace aos