xref: /aosp_15_r20/external/pytorch/c10/test/util/irange_test.cpp (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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