Bug 1500713: P4 - Unit test for BufferReader. r=kinetik
☠☠ backed out by 5edbe9b1b822 ☠ ☠
authorChun-Min Chang <chun.m.chang@gmail.com>
Thu, 14 Mar 2019 17:18:49 +0000
changeset 521955 5d0cad2c99a4060d888e9fca5b8bfb1b42cc4e2b
parent 521954 f96a12eedd89d22b69e98f4a6c0762d90249540f
child 521956 2f2cefc2a5f7f8490640ed5ce875204bec8e9911
push id10870
push usernbeleuzu@mozilla.com
push dateFri, 15 Mar 2019 20:00:07 +0000
treeherdermozilla-beta@c594aee5b7a4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskinetik
bugs1500713
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1500713: P4 - Unit test for BufferReader. r=kinetik Differential Revision: https://phabricator.services.mozilla.com/D22814
dom/media/gtest/TestBufferReader.cpp
dom/media/gtest/moz.build
new file mode 100644
--- /dev/null
+++ b/dom/media/gtest/TestBufferReader.cpp
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "gtest/gtest.h"
+#include "BufferReader.h"
+
+TEST(BufferReader, ReaderCursor) {
+  // Allocate a buffer and create a BufferReader.
+  const size_t BUFFER_SIZE = 10;
+  uint8_t buffer[BUFFER_SIZE] = {0};
+
+  const uint8_t* const HEAD = reinterpret_cast<uint8_t*>(buffer);
+  const uint8_t* const TAIL = HEAD + BUFFER_SIZE;
+
+  BufferReader reader(HEAD, BUFFER_SIZE);
+  ASSERT_EQ(reader.Offset(), static_cast<size_t>(0));
+  ASSERT_EQ(reader.Peek(BUFFER_SIZE), HEAD);
+
+  // Keep reading to the end, and make sure the final read failed.
+  const size_t READ_SIZE = 4;
+  ASSERT_NE(BUFFER_SIZE % READ_SIZE, static_cast<size_t>(0));
+  for (const uint8_t* ptr = reader.Peek(0); ptr != nullptr;
+       ptr = reader.Read(READ_SIZE))
+    ;
+
+  // Check the reading cursor of the BufferReader is correct
+  // after reading and seeking.
+  const uint8_t* tail = reader.Peek(0);
+  const uint8_t* head = reader.Seek(0);
+
+  EXPECT_EQ(head, HEAD);
+  EXPECT_EQ(tail, TAIL);
+}
\ No newline at end of file
--- a/dom/media/gtest/moz.build
+++ b/dom/media/gtest/moz.build
@@ -18,16 +18,17 @@ UNIFIED_SOURCES += [
     'TestAudioBuffers.cpp',
     'TestAudioCompactor.cpp',
     'TestAudioMixer.cpp',
     'TestAudioPacketizer.cpp',
     'TestAudioSegment.cpp',
     'TestAudioTrackEncoder.cpp',
     'TestBitWriter.cpp',
     'TestBlankVideoDataCreator.cpp',
+    'TestBufferReader.cpp',
     'TestCDMStorage.cpp',
     'TestDataMutex.cpp',
     'TestGMPCrossOrigin.cpp',
     'TestGMPRemoveAndDelete.cpp',
     'TestGMPUtils.cpp',
     'TestGroupId.cpp',
     'TestIntervalSet.cpp',
     'TestMediaDataDecoder.cpp',