| #include <gtest/gtest.h> | |
| #include <torch/torch.h> | |
| #include <test/cpp/api/support.h> | |
| #include <cstddef> | |
| #include <initializer_list> | |
| #include <vector> | |
| struct ExpandingArrayTest : torch::test::SeedingFixture {}; | |
| TEST_F(ExpandingArrayTest, CanConstructFromInitializerList) { | |
| torch::ExpandingArray<5> e({1, 2, 3, 4, 5}); | |
| ASSERT_EQ(e.size(), 5); | |
| for (size_t i = 0; i < e.size(); ++i) { | |
| ASSERT_EQ((*e)[i], i + 1); | |
| } | |
| } | |
| TEST_F(ExpandingArrayTest, CanConstructFromVector) { | |
| torch::ExpandingArray<5> e(std::vector<int64_t>{1, 2, 3, 4, 5}); | |
| ASSERT_EQ(e.size(), 5); | |
| for (size_t i = 0; i < e.size(); ++i) { | |
| ASSERT_EQ((*e)[i], i + 1); | |
| } | |
| } | |
| TEST_F(ExpandingArrayTest, CanConstructFromArray) { | |
| torch::ExpandingArray<5> e(std::array<int64_t, 5>({1, 2, 3, 4, 5})); | |
| ASSERT_EQ(e.size(), 5); | |
| for (size_t i = 0; i < e.size(); ++i) { | |
| ASSERT_EQ((*e)[i], i + 1); | |
| } | |
| } | |
| TEST_F(ExpandingArrayTest, CanConstructFromSingleValue) { | |
| torch::ExpandingArray<5> e(5); | |
| ASSERT_EQ(e.size(), 5); | |
| for (size_t i = 0; i < e.size(); ++i) { | |
| ASSERT_EQ((*e)[i], 5); | |
| } | |
| } | |
| TEST_F( | |
| ExpandingArrayTest, | |
| ThrowsWhenConstructedWithIncorrectNumberOfArgumentsInInitializerList) { | |
| ASSERT_THROWS_WITH( | |
| torch::ExpandingArray<5>({1, 2, 3, 4, 5, 6, 7}), | |
| "Expected 5 values, but instead got 7"); | |
| } | |
| TEST_F( | |
| ExpandingArrayTest, | |
| ThrowsWhenConstructedWithIncorrectNumberOfArgumentsInVector) { | |
| ASSERT_THROWS_WITH( | |
| torch::ExpandingArray<5>(std::vector<int64_t>({1, 2, 3, 4, 5, 6, 7})), | |
| "Expected 5 values, but instead got 7"); | |
| } |