64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // This file is part of Eigen, a lightweight C++ template library
 | |
| // for linear algebra.
 | |
| //
 | |
| // Copyright (C) 2019 Joel Holdsworth <joel.holdsworth@vcatechnology.com>
 | |
| //
 | |
| // This Source Code Form is subject to the terms of the Mozilla
 | |
| // Public License v. 2.0. If a copy of the MPL was not distributed
 | |
| // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | |
| 
 | |
| #include <sstream>
 | |
| 
 | |
| #include "main.h"
 | |
| 
 | |
| template <typename Scalar>
 | |
| struct check_ostream_impl {
 | |
|   static void run() {
 | |
|     const Array<Scalar, 1, 1> array(123);
 | |
|     std::ostringstream ss;
 | |
|     ss << array;
 | |
|     VERIFY(ss.str() == "123");
 | |
| 
 | |
|     check_ostream_impl<std::complex<Scalar> >::run();
 | |
|   };
 | |
| };
 | |
| 
 | |
| template <>
 | |
| struct check_ostream_impl<bool> {
 | |
|   static void run() {
 | |
|     const Array<bool, 1, 2> array(1, 0);
 | |
|     std::ostringstream ss;
 | |
|     ss << array;
 | |
|     VERIFY(ss.str() == "1  0");
 | |
|   };
 | |
| };
 | |
| 
 | |
| template <typename Scalar>
 | |
| struct check_ostream_impl<std::complex<Scalar> > {
 | |
|   static void run() {
 | |
|     const Array<std::complex<Scalar>, 1, 1> array(std::complex<Scalar>(12, 34));
 | |
|     std::ostringstream ss;
 | |
|     ss << array;
 | |
|     VERIFY(ss.str() == "(12,34)");
 | |
|   };
 | |
| };
 | |
| 
 | |
| template <typename Scalar>
 | |
| static void check_ostream() {
 | |
|   check_ostream_impl<Scalar>::run();
 | |
| }
 | |
| 
 | |
| EIGEN_DECLARE_TEST(rand) {
 | |
|   CALL_SUBTEST(check_ostream<bool>());
 | |
|   CALL_SUBTEST(check_ostream<float>());
 | |
|   CALL_SUBTEST(check_ostream<double>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::int8_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::uint8_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::int16_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::uint16_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::int32_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::uint32_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::int64_t>());
 | |
|   CALL_SUBTEST(check_ostream<Eigen::numext::uint64_t>());
 | |
| }
 | 
