Add clear() function to priority_queue

Change-Id: I9c24cd6c39aa4b76680c87a6239416239d7c56eb
diff --git a/aos/containers/priority_queue_test.cc b/aos/containers/priority_queue_test.cc
index 2c45990..c05d827 100644
--- a/aos/containers/priority_queue_test.cc
+++ b/aos/containers/priority_queue_test.cc
@@ -52,7 +52,7 @@
   ASSERT_EQ(4u, queue_.size());
   ASSERT_FALSE(queue_.full());
   ::std::vector<int> reverse_expected{20, 15, 11};
-  EXPECT_EQ(20, queue_.top());
+  EXPECT_EQ(10, *queue_.begin());
   for (; it != queue_.end(); ++it) {
     EXPECT_EQ(reverse_expected.back(), *it);
     reverse_expected.pop_back();
@@ -60,6 +60,30 @@
   ASSERT_TRUE(reverse_expected.empty());
 }
 
+// Tests that the clear() method works properly.
+TEST_F(PriorityQueueTest, ClearQueue) {
+  queue_.PushFromBottom(10);
+  queue_.PushFromBottom(20);
+  queue_.PushFromBottom(15);
+  queue_.PushFromBottom(11);
+  ASSERT_EQ(4u, queue_.size());
+  ASSERT_FALSE(queue_.full());
+  queue_.clear();
+  ASSERT_TRUE(queue_.empty());
+  ASSERT_EQ(0u, queue_.size());
+
+  queue_.PushFromBottom(1);
+  queue_.PushFromBottom(3);
+  queue_.PushFromBottom(2);
+  ASSERT_EQ(3u, queue_.size());
+  ::std::vector<int> reverse_expected{3, 2, 1};
+  for (const int val : queue_) {
+    EXPECT_EQ(reverse_expected.back(), val);
+    reverse_expected.pop_back();
+  }
+  ASSERT_TRUE(reverse_expected.empty());
+}
+
 TEST_F(PriorityQueueTest, FullBufferInsertTop) {
   for (int ii = 0; ii < 10; ++ii) {
     queue_.PushFromBottom(ii);