cxx11_tensor_of_strings.cpp File Reference
#include "main.h"
#include <Eigen/CXX11/Tensor>

Functions

static void test_assign ()
 
static void test_concat ()
 
static void test_slices ()
 
static void test_additions ()
 
static void test_initialization ()
 
 EIGEN_DECLARE_TEST (cxx11_tensor_of_strings)
 

Function Documentation

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( cxx11_tensor_of_strings  )
134  {
135  // Beware: none of this is likely to ever work on a GPU.
141 }
static void test_slices()
Definition: cxx11_tensor_of_strings.cpp:82
static void test_concat()
Definition: cxx11_tensor_of_strings.cpp:55
static void test_initialization()
Definition: cxx11_tensor_of_strings.cpp:126
static void test_additions()
Definition: cxx11_tensor_of_strings.cpp:107
static void test_assign()
Definition: cxx11_tensor_of_strings.cpp:17
#define CALL_SUBTEST(FUNC)
Definition: main.h:382

References CALL_SUBTEST, test_additions(), test_assign(), test_concat(), test_initialization(), and test_slices().

◆ test_additions()

static void test_additions ( )
static
107  {
108  Tensor<std::string, 1> data1(3);
109  Tensor<std::string, 1> data2(3);
110  for (int i = 0; i < 3; ++i) {
111  data1(i) = "abc";
112  std::ostringstream s1;
113  s1 << i;
114  data2(i) = s1.str();
115  }
116 
117  Tensor<std::string, 1> sum = data1 + data2;
118  for (int i = 0; i < 3; ++i) {
119  std::ostringstream concat;
120  concat << "abc" << i;
121  std::string expected = concat.str();
122  VERIFY_IS_EQUAL(sum(i), expected);
123  }
124 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
The tensor class.
Definition: Tensor.h:68
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References i, oomph::Global_string_for_annotation::string(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_assign()

static void test_assign ( )
static
17  {
18  std::string data1[6];
20  std::string data2[6];
21  const TensorMap<Tensor<const std::string, 2>> mat2(data2, 2, 3);
22 
23  for (int i = 0; i < 6; ++i) {
24  std::ostringstream s1;
25  s1 << "abc" << i * 3;
26  data1[i] = s1.str();
27  std::ostringstream s2;
28  s2 << "def" << i * 5;
29  data2[i] = s2.str();
30  }
31 
33  rslt1 = mat1;
35  rslt2 = mat2;
36 
38  Tensor<std::string, 2> rslt4 = mat2;
39 
41  Tensor<std::string, 2> rslt6(mat2);
42 
43  for (int i = 0; i < 2; ++i) {
44  for (int j = 0; j < 3; ++j) {
45  VERIFY_IS_EQUAL(rslt1(i, j), data1[i + 2 * j]);
46  VERIFY_IS_EQUAL(rslt2(i, j), data2[i + 2 * j]);
47  VERIFY_IS_EQUAL(rslt3(i, j), data1[i + 2 * j]);
48  VERIFY_IS_EQUAL(rslt4(i, j), data2[i + 2 * j]);
49  VERIFY_IS_EQUAL(rslt5(i, j), data1[i + 2 * j]);
50  VERIFY_IS_EQUAL(rslt6(i, j), data2[i + 2 * j]);
51  }
52  }
53 }
MatrixXd mat1(size, size)
A tensor expression mapping an existing array of data.
Definition: TensorMap.h:33
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References i, j, mat1(), oomph::Global_string_for_annotation::string(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_concat()

static void test_concat ( )
static
55  {
56  Tensor<std::string, 2> t1(2, 3);
57  Tensor<std::string, 2> t2(2, 3);
58 
59  for (int i = 0; i < 2; ++i) {
60  for (int j = 0; j < 3; ++j) {
61  std::ostringstream s1;
62  s1 << "abc" << i + j * 2;
63  t1(i, j) = s1.str();
64  std::ostringstream s2;
65  s2 << "def" << i * 5 + j * 32;
66  t2(i, j) = s2.str();
67  }
68  }
69 
70  Tensor<std::string, 2> result = t1.concatenate(t2, 1);
71  VERIFY_IS_EQUAL(result.dimension(0), 2);
72  VERIFY_IS_EQUAL(result.dimension(1), 6);
73 
74  for (int i = 0; i < 2; ++i) {
75  for (int j = 0; j < 3; ++j) {
76  VERIFY_IS_EQUAL(result(i, j), t1(i, j));
77  VERIFY_IS_EQUAL(result(i, j + 3), t2(i, j));
78  }
79  }
80 }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorConcatenationOp< const Axis, const Derived, const OtherDerived > concatenate(const OtherDerived &other, const Axis &axis) const
Definition: TensorBase.h:1095
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index dimension(std::size_t n) const
Definition: Tensor.h:99

References Eigen::TensorBase< Derived, AccessLevel >::concatenate(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::dimension(), i, j, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_initialization()

static void test_initialization ( )
static
126  {
128  a.setConstant(std::string("foo"));
129  for (int i = 0; i < 2 * 3; ++i) {
130  VERIFY_IS_EQUAL(a(i), std::string("foo"));
131  }
132 }
const Scalar * a
Definition: level2_cplx_impl.h:32

References a, i, oomph::Global_string_for_annotation::string(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_slices()

static void test_slices ( )
static
82  {
84  for (int i = 0; i < 2; ++i) {
85  for (int j = 0; j < 3; ++j) {
86  std::ostringstream s1;
87  s1 << "abc" << i + j * 2;
88  data(i, j) = s1.str();
89  }
90  }
91 
92  const Eigen::DSizes<ptrdiff_t, 2> half_size(2, 3);
93  const Eigen::DSizes<ptrdiff_t, 2> first_half(0, 0);
94  const Eigen::DSizes<ptrdiff_t, 2> second_half(0, 3);
95 
96  Tensor<std::string, 2> t1 = data.slice(first_half, half_size);
97  Tensor<std::string, 2> t2 = data.slice(second_half, half_size);
98 
99  for (int i = 0; i < 2; ++i) {
100  for (int j = 0; j < 3; ++j) {
101  VERIFY_IS_EQUAL(data(i, j), t1(i, j));
102  VERIFY_IS_EQUAL(data(i, j + 3), t2(i, j));
103  }
104  }
105 }
int data[]
Definition: Map_placement_new.cpp:1
Definition: TensorDimensions.h:161

References data, i, j, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().