File: ArrayRef_test.cpp

package info (click to toggle)
pytorch-cuda 2.6.0%2Bdfsg-7
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid, trixie
  • size: 161,620 kB
  • sloc: python: 1,278,832; cpp: 900,322; ansic: 82,710; asm: 7,754; java: 3,363; sh: 2,811; javascript: 2,443; makefile: 597; ruby: 195; xml: 84; objc: 68
file content (45 lines) | stat: -rw-r--r-- 1,199 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <c10/util/ArrayRef.h>

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include <utility>
#include <vector>

namespace {

template <typename T>
class ctor_from_container_test_span_ {
  T* data_;
  std::size_t sz_;

 public:
  template <typename V = std::vector<std::remove_const_t<T>>>
  constexpr explicit ctor_from_container_test_span_(
      std::conditional_t<std::is_const_v<T>, const V, V>& vec) noexcept
      : data_(vec.data()), sz_(vec.size()) {}

  [[nodiscard]] constexpr auto data() const noexcept {
    return data_;
  }

  [[nodiscard]] constexpr auto size() const noexcept {
    return sz_;
  }
};

TEST(ArrayRefTest, ctor_from_container_test) {
  using value_type = int;
  std::vector<value_type> test_vec{1, 6, 32, 4, 68, 3, 7};
  const ctor_from_container_test_span_<value_type> test_mspan{test_vec};
  const ctor_from_container_test_span_<const value_type> test_cspan{
      std::as_const(test_vec)};

  const auto test_ref_mspan = c10::ArrayRef<value_type>(test_mspan);
  const auto test_ref_cspan = c10::ArrayRef<value_type>(test_cspan);

  EXPECT_EQ(std::as_const(test_vec), test_ref_mspan);
  EXPECT_EQ(std::as_const(test_vec), test_ref_cspan);
}

} // namespace