 d518128266
			
		
	
	d518128266
	
	
	
		
			
			Mass warning clean up. Mainly: - Explicit casts of numeric literals to avoid signed/unsigned compare warnings. - Commenting out of unused function arg names. Change-Id: I0e70393a5743ae984035d43712c724d4ccd12f9d
		
			
				
	
	
		
			149 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // 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 "webm/callback.h"
 | |
| 
 | |
| #include <cstdint>
 | |
| 
 | |
| #include "gtest/gtest.h"
 | |
| 
 | |
| #include "webm/buffer_reader.h"
 | |
| #include "webm/element.h"
 | |
| #include "webm/status.h"
 | |
| 
 | |
| using webm::Action;
 | |
| using webm::BufferReader;
 | |
| using webm::Callback;
 | |
| using webm::ElementMetadata;
 | |
| using webm::Reader;
 | |
| using webm::Status;
 | |
| 
 | |
| namespace {
 | |
| 
 | |
| void TestCompletedOk(Status (Callback::*function)(const ElementMetadata&)) {
 | |
|   Callback callback;
 | |
|   ElementMetadata metadata{};
 | |
| 
 | |
|   Status status = (callback.*function)(metadata);
 | |
|   EXPECT_EQ(Status::kOkCompleted, status.code);
 | |
| }
 | |
| 
 | |
| template <typename T>
 | |
| void TestCompletedOk(Status (Callback::*function)(const ElementMetadata&,
 | |
|                                                   const T&)) {
 | |
|   Callback callback;
 | |
|   ElementMetadata metadata{};
 | |
|   T object{};
 | |
| 
 | |
|   Status status = (callback.*function)(metadata, object);
 | |
|   EXPECT_EQ(Status::kOkCompleted, status.code);
 | |
| }
 | |
| 
 | |
| void TestAction(Status (Callback::*function)(const ElementMetadata&, Action*),
 | |
|                 Action expected) {
 | |
|   Callback callback;
 | |
|   ElementMetadata metadata{};
 | |
|   Action action;
 | |
| 
 | |
|   Status status = (callback.*function)(metadata, &action);
 | |
|   EXPECT_EQ(Status::kOkCompleted, status.code);
 | |
|   EXPECT_EQ(expected, action);
 | |
| }
 | |
| 
 | |
| template <typename T>
 | |
| void TestAction(Status (Callback::*function)(const ElementMetadata&, const T&,
 | |
|                                              Action*),
 | |
|                 Action expected) {
 | |
|   Callback callback;
 | |
|   ElementMetadata metadata{};
 | |
|   T t{};
 | |
|   Action action;
 | |
| 
 | |
|   Status status = (callback.*function)(metadata, t, &action);
 | |
|   EXPECT_EQ(Status::kOkCompleted, status.code);
 | |
|   EXPECT_EQ(expected, action);
 | |
| }
 | |
| 
 | |
| template <typename T>
 | |
| void TestRead(Status (Callback::*function)(const T&, Reader*, std::uint64_t*)) {
 | |
|   Callback callback;
 | |
|   Status status;
 | |
|   T metadata{};
 | |
|   BufferReader reader = {0x00, 0x01, 0x02, 0x03};
 | |
|   std::uint64_t bytes_remaining = 4;
 | |
| 
 | |
|   status = (callback.*function)(metadata, &reader, &bytes_remaining);
 | |
|   EXPECT_EQ(Status::kOkCompleted, status.code);
 | |
|   EXPECT_EQ(static_cast<std::uint64_t>(0), bytes_remaining);
 | |
| }
 | |
| 
 | |
| class CallbackTest : public testing::Test {};
 | |
| 
 | |
| TEST_F(CallbackTest, OnElementBegin) {
 | |
|   TestAction(&Callback::OnElementBegin, Action::kRead);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnUnknownElement) {
 | |
|   TestRead(&Callback::OnUnknownElement);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnEbml) { TestCompletedOk(&Callback::OnEbml); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnVoid) { TestRead(&Callback::OnVoid); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnSegmentBegin) {
 | |
|   TestAction(&Callback::OnSegmentBegin, Action::kRead);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnSeek) { TestCompletedOk(&Callback::OnSeek); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnInfo) { TestCompletedOk(&Callback::OnInfo); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnClusterBegin) {
 | |
|   TestAction(&Callback::OnClusterBegin, Action::kRead);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnSimpleBlockBegin) {
 | |
|   TestAction(&Callback::OnSimpleBlockBegin, Action::kRead);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnSimpleBlockEnd) {
 | |
|   TestCompletedOk(&Callback::OnSimpleBlockEnd);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnBlockGroupBegin) {
 | |
|   TestAction(&Callback::OnBlockGroupBegin, Action::kRead);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnBlockBegin) {
 | |
|   TestAction(&Callback::OnBlockBegin, Action::kRead);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnBlockEnd) { TestCompletedOk(&Callback::OnBlockEnd); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnBlockGroupEnd) {
 | |
|   TestCompletedOk(&Callback::OnBlockGroupEnd);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnFrame) { TestRead(&Callback::OnFrame); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnClusterEnd) { TestCompletedOk(&Callback::OnClusterEnd); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnTrackEntry) { TestCompletedOk(&Callback::OnTrackEntry); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnCuePoint) { TestCompletedOk(&Callback::OnCuePoint); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnEditionEntry) {
 | |
|   TestCompletedOk(&Callback::OnEditionEntry);
 | |
| }
 | |
| 
 | |
| TEST_F(CallbackTest, OnTag) { TestCompletedOk(&Callback::OnTag); }
 | |
| 
 | |
| TEST_F(CallbackTest, OnSegmentEnd) { TestCompletedOk(&Callback::OnSegmentEnd); }
 | |
| 
 | |
| }  // namespace
 |