sample_to_group_iterator_unittest.cc revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "media/formats/mp4/sample_to_group_iterator.h" 6 7#include "base/memory/scoped_ptr.h" 8#include "testing/gtest/include/gtest/gtest.h" 9 10namespace media { 11namespace mp4 { 12 13namespace { 14const SampleToGroupEntry kCompactSampleToGroupTable[] = 15 {{10, 8}, {9, 5}, {25, 7}, {48, 63}, {8, 2}}; 16} // namespace 17 18class SampleToGroupIteratorTest : public testing::Test { 19 public: 20 SampleToGroupIteratorTest() { 21 // Build sample group description index table from kSampleToGroupTable. 22 for (size_t i = 0; i < arraysize(kCompactSampleToGroupTable); ++i) { 23 for (uint32 j = 0; j < kCompactSampleToGroupTable[i].sample_count; ++j) { 24 sample_to_group_table_.push_back( 25 kCompactSampleToGroupTable[i].group_description_index); 26 } 27 } 28 29 sample_to_group_.entries.assign( 30 kCompactSampleToGroupTable, 31 kCompactSampleToGroupTable + arraysize(kCompactSampleToGroupTable)); 32 sample_to_group_iterator_.reset( 33 new SampleToGroupIterator(sample_to_group_)); 34 } 35 36 protected: 37 std::vector<uint32> sample_to_group_table_; 38 SampleToGroup sample_to_group_; 39 scoped_ptr<SampleToGroupIterator> sample_to_group_iterator_; 40 41 private: 42 DISALLOW_COPY_AND_ASSIGN(SampleToGroupIteratorTest); 43}; 44 45TEST_F(SampleToGroupIteratorTest, EmptyTable) { 46 SampleToGroup sample_to_group; 47 SampleToGroupIterator iterator(sample_to_group); 48 EXPECT_FALSE(iterator.IsValid()); 49} 50 51TEST_F(SampleToGroupIteratorTest, Advance) { 52 ASSERT_EQ(sample_to_group_table_[0], 53 sample_to_group_iterator_->group_description_index()); 54 for (uint32 sample = 1; sample < sample_to_group_table_.size(); ++sample) { 55 ASSERT_TRUE(sample_to_group_iterator_->Advance()); 56 ASSERT_EQ(sample_to_group_table_[sample], 57 sample_to_group_iterator_->group_description_index()); 58 ASSERT_TRUE(sample_to_group_iterator_->IsValid()); 59 } 60 ASSERT_FALSE(sample_to_group_iterator_->Advance()); 61 ASSERT_FALSE(sample_to_group_iterator_->IsValid()); 62} 63 64} // namespace mp4 65} // namespace media 66