cart-elc

Source code for CART-ELC
git clone git://git.laack.co/cart-elc.git
Log | Files | Refs | README | LICENSE

io.cpp (1833B)


      1 // This file is part of Eigen, a lightweight C++ template library
      2 // for linear algebra.
      3 //
      4 // Copyright (C) 2019 Joel Holdsworth <joel.holdsworth@vcatechnology.com>
      5 //
      6 // This Source Code Form is subject to the terms of the Mozilla
      7 // Public License v. 2.0. If a copy of the MPL was not distributed
      8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
      9 
     10 #include <sstream>
     11 
     12 #include "main.h"
     13 
     14 template<typename Scalar>
     15 struct check_ostream_impl
     16 {
     17   static void run()
     18   {
     19     const Array<Scalar,1,1> array(123);
     20     std::ostringstream ss;
     21     ss << array;
     22     VERIFY(ss.str() == "123");
     23 
     24     check_ostream_impl< std::complex<Scalar> >::run();
     25   };
     26 };
     27 
     28 template<>
     29 struct check_ostream_impl<bool>
     30 {
     31   static void run()
     32   {
     33     const Array<bool,1,2> array(1, 0);
     34     std::ostringstream ss;
     35     ss << array;
     36     VERIFY(ss.str() == "1  0");
     37   };
     38 };
     39 
     40 template<typename Scalar>
     41 struct check_ostream_impl< std::complex<Scalar> >
     42 {
     43   static void run()
     44   {
     45     const Array<std::complex<Scalar>,1,1> array(std::complex<Scalar>(12, 34));
     46     std::ostringstream ss;
     47     ss << array;
     48     VERIFY(ss.str() == "(12,34)");
     49   };
     50 };
     51 
     52 template<typename Scalar>
     53 static void check_ostream()
     54 {
     55   check_ostream_impl<Scalar>::run();
     56 }
     57 
     58 EIGEN_DECLARE_TEST(rand)
     59 {
     60   CALL_SUBTEST(check_ostream<bool>());
     61   CALL_SUBTEST(check_ostream<float>());
     62   CALL_SUBTEST(check_ostream<double>());
     63   CALL_SUBTEST(check_ostream<Eigen::numext::int8_t>());
     64   CALL_SUBTEST(check_ostream<Eigen::numext::uint8_t>());
     65   CALL_SUBTEST(check_ostream<Eigen::numext::int16_t>());
     66   CALL_SUBTEST(check_ostream<Eigen::numext::uint16_t>());
     67   CALL_SUBTEST(check_ostream<Eigen::numext::int32_t>());
     68   CALL_SUBTEST(check_ostream<Eigen::numext::uint32_t>());
     69   CALL_SUBTEST(check_ostream<Eigen::numext::int64_t>());
     70   CALL_SUBTEST(check_ostream<Eigen::numext::uint64_t>());
     71 }