aboutsummaryrefslogtreecommitdiff
path: root/examples/file_reader_test_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/file_reader_test_common.h')
-rw-r--r--examples/file_reader_test_common.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/examples/file_reader_test_common.h b/examples/file_reader_test_common.h
new file mode 100644
index 0000000..187a6ac
--- /dev/null
+++ b/examples/file_reader_test_common.h
@@ -0,0 +1,171 @@
+/*
+ * 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.
+ */
+
+#ifndef LIBGAV1_EXAMPLES_FILE_READER_TEST_COMMON_H_
+#define LIBGAV1_EXAMPLES_FILE_READER_TEST_COMMON_H_
+
+#include <cstdint>
+#include <memory>
+#include <ostream>
+#include <string>
+#include <vector>
+
+#include "examples/file_reader.h"
+#include "examples/file_reader_factory.h"
+#include "examples/file_reader_interface.h"
+#include "gtest/gtest.h"
+#include "tests/utils.h"
+
+namespace libgav1 {
+
+struct FileReaderTestParameters {
+ FileReaderTestParameters() = default;
+ FileReaderTestParameters(FileReaderFactory::OpenFunction open_function,
+ const char* file_name)
+ : open_function(open_function), file_name(file_name) {}
+ FileReaderTestParameters(const FileReaderTestParameters&) = default;
+ FileReaderTestParameters& operator=(const FileReaderTestParameters&) = delete;
+ FileReaderTestParameters(FileReaderTestParameters&&) = default;
+ FileReaderTestParameters& operator=(FileReaderTestParameters&&) = default;
+ ~FileReaderTestParameters() = default;
+
+ FileReaderFactory::OpenFunction open_function = nullptr;
+ const char* file_name = nullptr;
+};
+
+class FileReaderTestBase {
+ public:
+ FileReaderTestBase() = default;
+ FileReaderTestBase(const FileReaderTestBase&) = delete;
+ FileReaderTestBase& operator=(const FileReaderTestBase&) = delete;
+ FileReaderTestBase(FileReaderTestBase&&) = default;
+ FileReaderTestBase& operator=(FileReaderTestBase&&) = default;
+ ~FileReaderTestBase() = default;
+
+ protected:
+ void OpenReader(const char* file_name,
+ FileReaderFactory::OpenFunction open_function) {
+ file_name_ = test_utils::GetTestInputFilePath(file_name);
+ reader_ = open_function(file_name_, /*error_tolerant=*/false);
+ ASSERT_NE(reader_, nullptr);
+ }
+
+ std::string file_name_;
+ std::unique_ptr<FileReaderInterface> reader_;
+ std::vector<uint8_t> tu_data_;
+};
+
+class FileReaderFailTest
+ : public FileReaderTestBase,
+ public testing::TestWithParam<FileReaderTestParameters> {
+ public:
+ FileReaderFailTest() = default;
+ FileReaderFailTest(const FileReaderTestBase&) = delete;
+ FileReaderFailTest& operator=(const FileReaderTestBase&) = delete;
+ ~FileReaderFailTest() override = default;
+
+ protected:
+ void SetUp() override {
+ OpenReader(GetParam().file_name, GetParam().open_function);
+ }
+};
+
+class FileReaderTestNoTimeStamps
+ : public FileReaderTestBase,
+ public testing::TestWithParam<FileReaderTestParameters> {
+ public:
+ FileReaderTestNoTimeStamps() = default;
+ FileReaderTestNoTimeStamps(const FileReaderTestNoTimeStamps&) = delete;
+ FileReaderTestNoTimeStamps& operator=(const FileReaderTestNoTimeStamps&) =
+ delete;
+ ~FileReaderTestNoTimeStamps() override = default;
+
+ protected:
+ void SetUp() override {
+ OpenReader(GetParam().file_name, GetParam().open_function);
+ }
+};
+
+class FileReaderErrorTolerant
+ : public FileReaderTestBase,
+ public testing::TestWithParam<FileReaderTestParameters> {
+ public:
+ FileReaderErrorTolerant() = default;
+ FileReaderErrorTolerant(const FileReaderErrorTolerant&) = delete;
+ FileReaderErrorTolerant& operator=(const FileReaderErrorTolerant&) = delete;
+ ~FileReaderErrorTolerant() override = default;
+
+ protected:
+ void SetUp() override {
+ file_name_ = test_utils::GetTestInputFilePath(GetParam().file_name);
+ reader_ = GetParam().open_function(file_name_, /*error_tolerant=*/true);
+ ASSERT_NE(reader_, nullptr);
+ }
+};
+
+struct FileReaderTestWithTimeStampsParameters {
+ FileReaderTestWithTimeStampsParameters() = default;
+ FileReaderTestWithTimeStampsParameters(
+ FileReaderFactory::OpenFunction open_function, const char* file_name,
+ int64_t expected_last_timestamp)
+ : open_function(open_function),
+ file_name(file_name),
+ expected_last_timestamp(expected_last_timestamp) {}
+ FileReaderTestWithTimeStampsParameters(
+ const FileReaderTestWithTimeStampsParameters&) = default;
+ FileReaderTestWithTimeStampsParameters& operator=(
+ const FileReaderTestWithTimeStampsParameters&) = delete;
+ FileReaderTestWithTimeStampsParameters(
+ FileReaderTestWithTimeStampsParameters&&) = default;
+ FileReaderTestWithTimeStampsParameters& operator=(
+ FileReaderTestWithTimeStampsParameters&&) = default;
+ ~FileReaderTestWithTimeStampsParameters() = default;
+
+ FileReaderFactory::OpenFunction open_function = nullptr;
+ const char* file_name = nullptr;
+ int64_t expected_last_timestamp = 0;
+};
+
+std::ostream& operator<<(std::ostream& stream,
+ const FileReaderTestParameters& parameters);
+
+std::ostream& operator<<(
+ std::ostream& stream,
+ const FileReaderTestWithTimeStampsParameters& parameters);
+
+class FileReaderTestWithTimeStamps
+ : public FileReaderTestBase,
+ public testing::TestWithParam<FileReaderTestWithTimeStampsParameters> {
+ public:
+ FileReaderTestWithTimeStamps() = default;
+ FileReaderTestWithTimeStamps(const FileReaderTestWithTimeStamps&) = delete;
+ FileReaderTestWithTimeStamps& operator=(const FileReaderTestWithTimeStamps&) =
+ delete;
+ ~FileReaderTestWithTimeStamps() override = default;
+
+ protected:
+ void SetUp() override {
+ FileReaderTestWithTimeStampsParameters parameters = GetParam();
+ OpenReader(parameters.file_name, parameters.open_function);
+ expected_last_timestamp_ = parameters.expected_last_timestamp;
+ }
+
+ int64_t last_timestamp_ = 0;
+ int64_t expected_last_timestamp_ = 0;
+};
+
+} // namespace libgav1
+#endif // LIBGAV1_EXAMPLES_FILE_READER_TEST_COMMON_H_