1// Copyright 2004-present Facebook. All Rights Reserved.
2
3#include <c10/util/irange.h>
4
5#include <gtest/gtest.h>
6
7using namespace ::testing;
8
9TEST(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
18TEST(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
27TEST(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
36TEST(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
48TEST(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