| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "components/ntp_snippets/inner_iterator.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace { |
| |
| int ii[] = {0, 1, 2, 3, 4}; |
| |
| class InnerIteratorTest : public testing::Test { |
| protected: |
| using ListType = std::vector<int*>; |
| |
| void SetUp() override { |
| ints_.push_back(&ii[0]); |
| ints_.push_back(&ii[1]); |
| ints_.push_back(&ii[2]); |
| ints_.push_back(&ii[3]); |
| ints_.push_back(&ii[4]); |
| } |
| |
| ListType ints_; |
| }; |
| |
| TEST_F(InnerIteratorTest, Create) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.begin()); |
| EXPECT_EQ(0, *x); |
| } |
| TEST_F(InnerIteratorTest, PreIncrement) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.begin()); |
| EXPECT_EQ(1, *(++x)); |
| EXPECT_EQ(1, *x); |
| } |
| TEST_F(InnerIteratorTest, PostIncrement) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.begin()); |
| EXPECT_EQ(0, *(x++)); |
| EXPECT_EQ(1, *x); |
| } |
| TEST_F(InnerIteratorTest, Add) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.begin()); |
| EXPECT_EQ(2, *(x + 2)); |
| EXPECT_EQ(0, *x); |
| } |
| TEST_F(InnerIteratorTest, Sub) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.end()); |
| EXPECT_EQ(2, *(x - 3)); |
| EXPECT_EQ(4, *(--x)); |
| } |
| TEST_F(InnerIteratorTest, PreDecrement) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.end()); |
| EXPECT_EQ(4, *(--x)); |
| EXPECT_EQ(4, *x); |
| } |
| TEST_F(InnerIteratorTest, PostDecrement) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.end()); |
| EXPECT_EQ(4, *(--x)); |
| EXPECT_EQ(4, *(x--)); |
| EXPECT_EQ(3, *x); |
| } |
| TEST_F(InnerIteratorTest, Equality) { |
| ntp_snippets::InnerIterator<ListType::iterator, int> x(ints_.begin()); |
| ntp_snippets::InnerIterator<ListType::iterator, int> y(ints_.end()); |
| x += 2; |
| y -= 3; |
| EXPECT_EQ(x, y); |
| } |
| |
| } // namespace |