aboutsummaryrefslogtreecommitdiff
path: root/src/utils/queue_test.cc
diff options
context:
space:
mode:
authorBoyuan Yang <byang@debian.org>2021-11-07 08:50:20 -0500
committerBoyuan Yang <byang@debian.org>2021-11-07 08:50:20 -0500
commit513fcf1cd0dca1a6cbef9ff6e38e22237e75ba44 (patch)
tree249280ac94eb2b871de89cd1b166fff4ee00ab09 /src/utils/queue_test.cc
parent3c21ceac2f6a5adfab07d3d458880561543d0a31 (diff)
parent320ef65362608ee1148c299d8d5d7618af34e470 (diff)
downloadlibgav1-513fcf1cd0dca1a6cbef9ff6e38e22237e75ba44.tar.gz
libgav1-513fcf1cd0dca1a6cbef9ff6e38e22237e75ba44.tar.bz2
libgav1-513fcf1cd0dca1a6cbef9ff6e38e22237e75ba44.zip
Update upstream source from tag 'upstream/0.17.0'
Update to upstream version '0.17.0' with Debian dir 5b612b6a2d67788b0c85bac59e50edc1545bfd7e
Diffstat (limited to 'src/utils/queue_test.cc')
-rw-r--r--src/utils/queue_test.cc86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/utils/queue_test.cc b/src/utils/queue_test.cc
new file mode 100644
index 0000000..d84ae5f
--- /dev/null
+++ b/src/utils/queue_test.cc
@@ -0,0 +1,86 @@
+// Copyright 2021 The libgav1 Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/utils/queue.h"
+
+#include <utility>
+#include <vector>
+
+#include "gtest/gtest.h"
+
+namespace libgav1 {
+namespace {
+
+struct TestClass {
+ TestClass() = default;
+ explicit TestClass(int i) : i(i) {}
+ int i;
+ // The vector exists simply so that the class is not trivially copyable.
+ std::vector<int> dummy;
+};
+
+TEST(QueueTest, Basic) {
+ Queue<TestClass> queue;
+ ASSERT_TRUE(queue.Init(8));
+ EXPECT_TRUE(queue.Empty());
+
+ for (int i = 0; i < 8; ++i) {
+ EXPECT_FALSE(queue.Full());
+ TestClass test(i);
+ queue.Push(std::move(test));
+ EXPECT_EQ(queue.Back().i, i);
+ EXPECT_FALSE(queue.Empty());
+ }
+ EXPECT_TRUE(queue.Full());
+
+ for (int i = 0; i < 8; ++i) {
+ EXPECT_FALSE(queue.Empty());
+ EXPECT_EQ(queue.Front().i, i);
+ queue.Pop();
+ EXPECT_FALSE(queue.Full());
+ }
+ EXPECT_TRUE(queue.Empty());
+
+ for (int i = 0; i < 8; ++i) {
+ EXPECT_FALSE(queue.Full());
+ TestClass test(i);
+ queue.Push(std::move(test));
+ EXPECT_EQ(queue.Back().i, i);
+ EXPECT_FALSE(queue.Empty());
+ }
+ EXPECT_TRUE(queue.Full());
+ queue.Clear();
+ EXPECT_TRUE(queue.Empty());
+ EXPECT_FALSE(queue.Full());
+}
+
+TEST(QueueTest, WrapAround) {
+ Queue<TestClass> queue;
+ ASSERT_TRUE(queue.Init(8));
+ EXPECT_TRUE(queue.Empty());
+
+ for (int i = 0; i < 100; ++i) {
+ EXPECT_FALSE(queue.Full());
+ TestClass test(i);
+ queue.Push(std::move(test));
+ EXPECT_EQ(queue.Back().i, i);
+ EXPECT_FALSE(queue.Empty());
+ EXPECT_EQ(queue.Front().i, i);
+ queue.Pop();
+ EXPECT_TRUE(queue.Empty());
+ }
+}
+
+} // namespace
+} // namespace libgav1