diff options
Diffstat (limited to 'examples/file_reader_test_common.h')
-rw-r--r-- | examples/file_reader_test_common.h | 171 |
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_ |