SkipRangeTest.cpp 2.07 KB
Newer Older
k06a's avatar
k06a committed
1 2 3 4 5 6
#include <vector>
#include <string>

#include <gtest/gtest.h>
#include "CommonTests.h"

Anton Bukov's avatar
Anton Bukov committed
7
#include "boolinq.h"
k06a's avatar
k06a committed
8 9 10 11 12 13 14 15 16 17

using namespace boolinq;

//////////////////////////////////////////////////////////////////////////

TEST(SkipRange, ManyToMany)
{
    int src[] = {1,2,3,4,5,6};
    int ans[] = {1,2,3,4,5,6};

Anton Bukov's avatar
Anton Bukov committed
18 19
    auto rng = from(src);
    auto dst = rng.skip(0);
k06a's avatar
k06a committed
20 21 22 23 24 25 26 27 28

    CheckRangeEqArray(dst, ans);
}

TEST(SkipRange, ManyToLess)
{
    int src[] = {1,2,3,4,5,6};
    int ans[] = {4,5,6};

Anton Bukov's avatar
Anton Bukov committed
29 30
    auto rng = from(src);
    auto dst = rng.skip(3);
k06a's avatar
k06a committed
31 32 33 34 35 36 37 38 39

    CheckRangeEqArray(dst, ans);
}

TEST(SkipRange, ManyToOne)
{
    int src[] = {1,2,3,4,5,6};
    int ans[] = {6};

Anton Bukov's avatar
Anton Bukov committed
40 41
    auto rng = from(src);
    auto dst = rng.skip(5);
k06a's avatar
k06a committed
42 43 44 45 46 47 48 49

    CheckRangeEqArray(dst, ans);
}

TEST(SkipRange, ManyToZero)
{
    int src[] = {1,2,3,4,5,6};

Anton Bukov's avatar
Anton Bukov committed
50 51
    auto rng = from(src);
    auto dst = rng.skip(6);
k06a's avatar
k06a committed
52

Anton Bukov's avatar
Anton Bukov committed
53
    EXPECT_THROW(dst.nextObject(), EnumeratorEndException);
k06a's avatar
k06a committed
54 55 56 57 58 59
}

TEST(SkipRange, ManyToZeroLess)
{
    int src[] = {1,2,3,4,5,6};

Anton Bukov's avatar
Anton Bukov committed
60 61
    auto rng = from(src);
    auto dst = rng.skip(10);
k06a's avatar
k06a committed
62

Anton Bukov's avatar
Anton Bukov committed
63
    EXPECT_THROW(dst.nextObject(), EnumeratorEndException);
k06a's avatar
k06a committed
64 65 66 67 68 69 70 71 72
}

//////////////////////////////////////////////////////////////////////////

TEST(SkipRange, OneToOne)
{
    int src[] = {5};
    int ans[] = {5};

Anton Bukov's avatar
Anton Bukov committed
73 74
    auto rng = from(src);
    auto dst = rng.skip(0);
k06a's avatar
k06a committed
75 76 77 78 79 80 81 82

    CheckRangeEqArray(dst, ans);
}

TEST(SkipRange, OneToZero)
{
    int src[] = {5};

Anton Bukov's avatar
Anton Bukov committed
83 84
    auto rng = from(src);
    auto dst = rng.skip(1);
k06a's avatar
k06a committed
85

Anton Bukov's avatar
Anton Bukov committed
86
    EXPECT_THROW(dst.nextObject(), EnumeratorEndException);
k06a's avatar
k06a committed
87 88 89 90 91 92
}

TEST(SkipRange, OneToZeroLess)
{
    int src[] = {5};

Anton Bukov's avatar
Anton Bukov committed
93 94
    auto rng = from(src);
    auto dst = rng.skip(2);
k06a's avatar
k06a committed
95

Anton Bukov's avatar
Anton Bukov committed
96
    EXPECT_THROW(dst.nextObject(), EnumeratorEndException);
k06a's avatar
k06a committed
97 98 99 100 101 102
}

TEST(SkipRange, ZeroToZero)
{
    std::vector<int> src;

Anton Bukov's avatar
Anton Bukov committed
103 104
    auto rng = from(src);
    auto dst = rng.skip(0);
k06a's avatar
k06a committed
105

Anton Bukov's avatar
Anton Bukov committed
106
    EXPECT_THROW(rng.nextObject(), EnumeratorEndException);
k06a's avatar
k06a committed
107 108 109 110 111 112
}

TEST(SkipRange, ZeroToZeroLess)
{
    std::vector<int> src;

Anton Bukov's avatar
Anton Bukov committed
113 114
    auto rng = from(src);
    auto dst = rng.skip(2);
k06a's avatar
k06a committed
115

Anton Bukov's avatar
Anton Bukov committed
116
    EXPECT_THROW(rng.nextObject(), EnumeratorEndException);
k06a's avatar
k06a committed
117 118 119
}

//////////////////////////////////////////////////////////////////////////