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