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
TEST(irangeTest,range_test)9 TEST(irangeTest, 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
TEST(irangeTest,end_test)18 TEST(irangeTest, 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
TEST(irangeTest,neg_range_test)27 TEST(irangeTest, 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
TEST(irange,empty_reverse_range_two_inputs)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
TEST(irange,empty_reverse_range_one_input)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