#include <gmock/gmock.h>

#include "tools/pairs.h"

using namespace testing;
using std::pair;
using std::vector;

TEST(getPairs, emptyCollection) {
    EXPECT_THAT(getPairs(vector<int>()), IsEmpty());
}

TEST(getPairs, oneElementCollection) {
    EXPECT_THAT(getPairs(vector<int>{1}), IsEmpty());
}

TEST(getPairs, validCollection) {
    {
        const auto actual = getPairs(vector<int>{1, 2});
        const vector<pair<int, int>> expected{{1, 2}};
        EXPECT_THAT(actual, ElementsAreArray(expected));
    }
    {
        const auto actual = getPairs(vector<int>{1, 2, 3});
        const vector<pair<int, int>> expected{{1, 2}, {2, 3}};
        EXPECT_THAT(actual, ElementsAreArray(expected));
    }
    {
        const auto actual = getPairs(vector<int>{1, 2, 3, 4});
        const vector<pair<int, int>> expected{{1, 2}, {2, 3}, {3, 4}};
        EXPECT_THAT(actual, ElementsAreArray(expected));
    }
}