vp9_raw_bits_reader_unittest.cc 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include <stdint.h>
  5. #include <tuple>
  6. #include "media/filters/vp9_raw_bits_reader.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace media {
  9. TEST(Vp9RawBitsReaderTest, ReadBool) {
  10. uint8_t data[] = {0xf1};
  11. Vp9RawBitsReader reader;
  12. reader.Initialize(data, 1);
  13. EXPECT_TRUE(reader.IsValid());
  14. EXPECT_EQ(0u, reader.GetBytesRead());
  15. EXPECT_TRUE(reader.ReadBool());
  16. EXPECT_EQ(1u, reader.GetBytesRead());
  17. EXPECT_TRUE(reader.ReadBool());
  18. EXPECT_TRUE(reader.ReadBool());
  19. EXPECT_TRUE(reader.ReadBool());
  20. EXPECT_FALSE(reader.ReadBool());
  21. EXPECT_FALSE(reader.ReadBool());
  22. EXPECT_FALSE(reader.ReadBool());
  23. EXPECT_TRUE(reader.ReadBool());
  24. EXPECT_TRUE(reader.IsValid());
  25. // The return value is undefined.
  26. std::ignore = reader.ReadBool();
  27. EXPECT_FALSE(reader.IsValid());
  28. EXPECT_EQ(1u, reader.GetBytesRead());
  29. }
  30. TEST(Vp9RawBitsReader, ReadLiteral) {
  31. uint8_t data[] = {0x3d, 0x67, 0x9a};
  32. Vp9RawBitsReader reader;
  33. reader.Initialize(data, 3);
  34. EXPECT_TRUE(reader.IsValid());
  35. EXPECT_EQ(0x03, reader.ReadLiteral(4));
  36. EXPECT_EQ(0xd679, reader.ReadLiteral(16));
  37. EXPECT_TRUE(reader.IsValid());
  38. // The return value is undefined.
  39. std::ignore = reader.ReadLiteral(8);
  40. EXPECT_FALSE(reader.IsValid());
  41. EXPECT_EQ(3u, reader.GetBytesRead());
  42. }
  43. TEST(Vp9RawBitsReader, ReadSignedLiteral) {
  44. uint8_t data[] = {0x3d, 0x67, 0x9a};
  45. Vp9RawBitsReader reader;
  46. reader.Initialize(data, 3);
  47. EXPECT_TRUE(reader.IsValid());
  48. EXPECT_EQ(-0x03, reader.ReadSignedLiteral(4));
  49. EXPECT_EQ(-0x5679, reader.ReadSignedLiteral(15));
  50. EXPECT_TRUE(reader.IsValid());
  51. // The return value is undefined.
  52. std::ignore = reader.ReadSignedLiteral(7);
  53. EXPECT_FALSE(reader.IsValid());
  54. EXPECT_EQ(3u, reader.GetBytesRead());
  55. }
  56. } // namespace media