// 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 #include #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; 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 x(ints_.begin()); EXPECT_EQ(0, *x); } TEST_F(InnerIteratorTest, PreIncrement) { ntp_snippets::InnerIterator x(ints_.begin()); EXPECT_EQ(1, *(++x)); EXPECT_EQ(1, *x); } TEST_F(InnerIteratorTest, PostIncrement) { ntp_snippets::InnerIterator x(ints_.begin()); EXPECT_EQ(0, *(x++)); EXPECT_EQ(1, *x); } TEST_F(InnerIteratorTest, Add) { ntp_snippets::InnerIterator x(ints_.begin()); EXPECT_EQ(2, *(x + 2)); EXPECT_EQ(0, *x); } TEST_F(InnerIteratorTest, Sub) { ntp_snippets::InnerIterator x(ints_.end()); EXPECT_EQ(2, *(x - 3)); EXPECT_EQ(4, *(--x)); } TEST_F(InnerIteratorTest, PreDecrement) { ntp_snippets::InnerIterator x(ints_.end()); EXPECT_EQ(4, *(--x)); EXPECT_EQ(4, *x); } TEST_F(InnerIteratorTest, PostDecrement) { ntp_snippets::InnerIterator x(ints_.end()); EXPECT_EQ(4, *(--x)); EXPECT_EQ(4, *(x--)); EXPECT_EQ(3, *x); } TEST_F(InnerIteratorTest, Equality) { ntp_snippets::InnerIterator x(ints_.begin()); ntp_snippets::InnerIterator y(ints_.end()); x += 2; y -= 3; EXPECT_EQ(x, y); } } // namespace