// Copyright (c) 2016 The WebM project authors. All Rights Reserved. // // Use of this source code is governed by a BSD-style license // that can be found in the LICENSE file in the root of the source // tree. An additional intellectual property rights grant can be found // in the file PATENTS. All contributing project authors may // be found in the AUTHORS file in the root of the source tree. #include "src/recursive_parser.h" #include #include "gtest/gtest.h" #include "src/byte_parser.h" #include "src/element_parser.h" #include "test_utils/element_parser_test.h" #include "webm/element.h" #include "webm/status.h" using webm::Callback; using webm::ElementMetadata; using webm::ElementParser; using webm::ElementParserTest; using webm::Reader; using webm::RecursiveParser; using webm::Status; using webm::StringParser; namespace { class FailParser : public ElementParser { public: FailParser() { EXPECT_FALSE(true); } Status Init(const ElementMetadata& /* metadata */, std::uint64_t /* max_size */) override { return Status(Status::kInvalidElementSize); } Status Feed(Callback* /* callback */, Reader* /* reader */, std::uint64_t* num_bytes_read) override { *num_bytes_read = 0; return Status(Status::kInvalidElementSize); } int value() const { return 0; } int* mutable_value() { return nullptr; } }; class RecursiveFailParserTest : public ElementParserTest> {}; TEST_F(RecursiveFailParserTest, NoConstruction) { RecursiveParser parser; } class RecursiveStringParserTest : public ElementParserTest> {}; TEST_F(RecursiveStringParserTest, ParsesOkay) { ParseAndVerify(); EXPECT_EQ("", parser_.value()); SetReaderData({0x48, 0x69}); // "Hi". ParseAndVerify(); EXPECT_EQ("Hi", parser_.value()); } } // namespace