1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
9 #include "media/filters/vp9_raw_bits_reader.h"
10 #include "testing/gtest/include/gtest/gtest.h"
14 TEST(Vp9RawBitsReaderTest, ReadBool) {
15 uint8_t data[] = {0xf1};
16 Vp9RawBitsReader reader;
17 reader.Initialize(data, 1);
19 EXPECT_TRUE(reader.IsValid());
20 EXPECT_EQ(0u, reader.GetBytesRead());
21 EXPECT_TRUE(reader.ReadBool());
22 EXPECT_EQ(1u, reader.GetBytesRead());
23 EXPECT_TRUE(reader.ReadBool());
24 EXPECT_TRUE(reader.ReadBool());
25 EXPECT_TRUE(reader.ReadBool());
26 EXPECT_FALSE(reader.ReadBool());
27 EXPECT_FALSE(reader.ReadBool());
28 EXPECT_FALSE(reader.ReadBool());
29 EXPECT_TRUE(reader.ReadBool());
30 EXPECT_TRUE(reader.IsValid());
32 // The return value is undefined.
33 std::ignore = reader.ReadBool();
34 EXPECT_FALSE(reader.IsValid());
35 EXPECT_EQ(1u, reader.GetBytesRead());
38 TEST(Vp9RawBitsReader, ReadLiteral) {
39 uint8_t data[] = {0x3d, 0x67, 0x9a};
40 Vp9RawBitsReader reader;
41 reader.Initialize(data, 3);
43 EXPECT_TRUE(reader.IsValid());
44 EXPECT_EQ(0x03, reader.ReadLiteral(4));
45 EXPECT_EQ(0xd679, reader.ReadLiteral(16));
46 EXPECT_TRUE(reader.IsValid());
48 // The return value is undefined.
49 std::ignore = reader.ReadLiteral(8);
50 EXPECT_FALSE(reader.IsValid());
51 EXPECT_EQ(3u, reader.GetBytesRead());
54 TEST(Vp9RawBitsReader, ReadSignedLiteral) {
55 uint8_t data[] = {0x3d, 0x67, 0x9a};
56 Vp9RawBitsReader reader;
57 reader.Initialize(data, 3);
59 EXPECT_TRUE(reader.IsValid());
60 EXPECT_EQ(-0x03, reader.ReadSignedLiteral(4));
61 EXPECT_EQ(-0x5679, reader.ReadSignedLiteral(15));
62 EXPECT_TRUE(reader.IsValid());
64 // The return value is undefined.
65 std::ignore = reader.ReadSignedLiteral(7);
66 EXPECT_FALSE(reader.IsValid());
67 EXPECT_EQ(3u, reader.GetBytesRead());