1 #include <iostream>
2 
3 #include <dune/common/densevector.hh>
4 #include <dune/common/dynvector.hh>
5 #include <dune/common/exceptions.hh>
6 #include <dune/common/fvector.hh>
7 
8 using namespace Dune;
9 
10 template <class FirstVectorImp, class SecondVectorImp>
assign(DenseVector<FirstVectorImp> & first,const DenseVector<SecondVectorImp> & second)11 void assign(DenseVector<FirstVectorImp>& first, const DenseVector<SecondVectorImp>& second)
12 {
13   first = second;
14 }
15 
run()16 bool run()
17 {
18   bool passed = true;
19   FieldVector<double, 3> fvec1{1, 2, 3};
20   DynamicVector<double> dynvec1{1, 2, 3};
21   FieldVector<double, 3> fvec2;
22   DynamicVector<double> dynvec2(3);
23   // check mixed assignments
24   assign(fvec2, dynvec1);
25   assign(dynvec2, fvec1);
26   for (size_t i = 0; i < 3; ++i) {
27     if (fvec2[i] != dynvec1[i]) {
28       std::cerr << "Assigning a DynamicVector to a FieldVector as DenseVectors does not work!"
29       << std::endl << i << "-th entry after assignment is " << fvec2[i] << ", should be "
30       << i+1 << "!" << std::endl;
31       passed = false;
32     }
33     if (dynvec1[i] != dynvec2[i]) {
34       std::cerr << "Assigning a FieldVector to a DynamicVector as DenseVectors does not work"
35       << std::endl << i << "-th entry after assignment is " << dynvec1[i] << ", should be "
36       << i+1 << "!" << std::endl;
37       passed = false;
38     }
39   }
40   return passed;
41 }
42 
main()43 int main()
44 {
45   bool passed = run();
46   if (!passed)
47     DUNE_THROW(Dune::Exception, "Test failed");
48   return !passed;
49 }
50