1 | // Copyright 2004-present Facebook. All Rights Reserved. |
2 | |
3 | #include <c10/util/irange.h> |
4 | |
5 | #include <gtest/gtest.h> |
6 | |
7 | using namespace ::testing; |
8 | |
9 | TEST(irange_test, range_test) { |
10 | std::vector<int> test_vec; |
11 | for (const auto i : c10::irange(4, 11)) { |
12 | test_vec.push_back(i); |
13 | } |
14 | const std::vector<int> correct = {{4, 5, 6, 7, 8, 9, 10}}; |
15 | ASSERT_EQ(test_vec, correct); |
16 | } |
17 | |
18 | TEST(irange_test, end_test) { |
19 | std::vector<int> test_vec; |
20 | for (const auto i : c10::irange(5)) { |
21 | test_vec.push_back(i); |
22 | } |
23 | const std::vector<int> correct = {{0, 1, 2, 3, 4}}; |
24 | ASSERT_EQ(test_vec, correct); |
25 | } |
26 | |
27 | TEST(irange_test, neg_range_test) { |
28 | std::vector<int> test_vec; |
29 | for (const auto i : c10::irange(-2, 3)) { |
30 | test_vec.push_back(i); |
31 | } |
32 | const std::vector<int> correct = {{-2, -1, 0, 1, 2}}; |
33 | ASSERT_EQ(test_vec, correct); |
34 | } |
35 | |
36 | TEST(irange, empty_reverse_range_two_inputs) { |
37 | std::vector<int> test_vec; |
38 | for (const auto i : c10::irange(3, -3)) { |
39 | test_vec.push_back(i); |
40 | if (i > 20) { // Cap the number of elements we add if something goes wrong |
41 | break; |
42 | } |
43 | } |
44 | const std::vector<int> correct = {}; |
45 | ASSERT_EQ(test_vec, correct); |
46 | } |
47 | |
48 | TEST(irange, empty_reverse_range_one_input) { |
49 | std::vector<int> test_vec; |
50 | for (const auto i : c10::irange(-3)) { |
51 | test_vec.push_back(i); |
52 | if (i > 20) { // Cap the number of elements we add if something goes wrong |
53 | break; |
54 | } |
55 | } |
56 | const std::vector<int> correct = {}; |
57 | ASSERT_EQ(test_vec, correct); |
58 | } |
59 | |