GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: unittest/eigen-tensor.cpp Lines: 27 27 100.0 %
Date: 2024-04-26 13:14:21 Branches: 116 220 52.7 %

Line Branch Exec Source
1
//
2
// Copyright (c) 2019 INRIA
3
//
4
5
#include "pinocchio/math/tensor.hpp"
6
#include "pinocchio/multibody/model.hpp"
7
8
#include <boost/test/unit_test.hpp>
9
#include <boost/utility/binary.hpp>
10
11
#include <iostream>
12
13
BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
14
15
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗
4
BOOST_AUTO_TEST_CASE(test_emulate_tensors)
16
{
17
  typedef double Scalar;
18
2
  const int rank = 3;
19
  typedef pinocchio::Tensor<Scalar,rank> Tensor;
20
21
2
  const Eigen::DenseIndex x_dim = 6, y_dim = 20, z_dim = 20;
22
✓✗✓✗
4
  Tensor tensor1(x_dim,y_dim,z_dim), tensor1_bis(x_dim,y_dim,z_dim);
23
24
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
2
  BOOST_CHECK(tensor1.size() == x_dim * y_dim * z_dim);
25
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
2
  BOOST_CHECK(tensor1.dimension(0) == x_dim);
26
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
2
  BOOST_CHECK(tensor1.dimension(1) == y_dim);
27
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
2
  BOOST_CHECK(tensor1.dimension(2) == z_dim);
28
29
✓✗
2
  Scalar * data = tensor1.data();
30
✓✗✓✓
4802
  for(Eigen::DenseIndex k = 0; k < tensor1.size(); ++k)
31
4800
    data[k] = (Scalar)k;
32
33
✓✓
42
  for(Eigen::DenseIndex k = 0; k < z_dim; ++k)
34
  {
35
✓✓
840
    for(Eigen::DenseIndex j = 0; j < y_dim; ++j)
36
    {
37
✓✓
5600
      for(Eigen::DenseIndex i = 0; i < x_dim; ++i)
38
      {
39
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
4800
        BOOST_CHECK(tensor1(i,j,k) == (Scalar)(i + j*x_dim + k*(x_dim*y_dim)));
40
      }
41
    }
42
  }
43
44
2
  const Eigen::DenseIndex new_x_dim = 2*x_dim, new_y_dim = 2*y_dim, new_z_dim = 2*z_dim;
45
2
  const Eigen::array<Tensor::Index,rank> dims = { x_dim,y_dim,z_dim };
46
✓✗
2
  tensor1.resize(dims);
47
48
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✗✓
2
  BOOST_CHECK(tensor1.size() == tensor1_bis.size());
49
✓✓
8
  for(std::size_t i = 0; i < rank; ++i)
50
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
6
    BOOST_CHECK(tensor1.dimension(i) == dims[i]);
51
52
2
  const Eigen::array<Tensor::Index,rank> new_dims = { new_x_dim,new_y_dim,new_z_dim };
53
✓✗
2
  tensor1.resize(new_dims);
54
55
✓✗✓✗
✓✗✓✗
✓✗✓✗
✓✗✗✓
2
  BOOST_CHECK(tensor1.size() == 8*tensor1_bis.size());
56
✓✓
8
  for(std::size_t i = 0; i < rank; ++i)
57
✓✗✓✗
✓✗✓✗
✓✗✓✗
✗✓
6
    BOOST_CHECK(tensor1.dimension(i) == new_dims[i]);
58
2
}
59
60
BOOST_AUTO_TEST_SUITE_END()