Skip to content

Instantly share code, notes, and snippets.

@amitsingh19975
Last active May 25, 2021 11:59
Show Gist options
  • Save amitsingh19975/f9aca9e265e09431c674de9c77558a98 to your computer and use it in GitHub Desktop.
Save amitsingh19975/f9aca9e265e09431c674de9c77558a98 to your computer and use it in GitHub Desktop.
//
// Copyright (c) 2021 Cem Bassoy, cem.bassoy@gmail.com
// Copyright (c) 2021, Amit Singh, amitsingh19975@gmail.com
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// The authors gratefully acknowledge the support of
// Google and Fraunhofer IOSB, Ettlingen, Germany
//
#include <boost/test/unit_test.hpp>
#include "generator_utility.hpp"
BOOST_AUTO_TEST_SUITE(test_empty_function, * boost::unit_test::description("Validate Empty Function, Method, and Trait"))
BOOST_FIXTURE_TEST_CASE(test_extents_dynamic_function,
boost::numeric::ublas::fixture_extents_dynamic<std::size_t>,
*boost::unit_test::label("boost::numeric::ublas::empty(extents_base<D> const&)")
*boost::unit_test::description("Testing free function empty for dynamic extents"))
{
namespace ublas = boost::numeric::ublas;
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(0) dynamic extents");
BOOST_CHECK( ublas::empty(n ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(1) dynamic extents");
BOOST_CHECK(!ublas::empty(n1 ));
BOOST_CHECK(!ublas::empty(n2 ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(2) dynamic extents");
BOOST_CHECK(!ublas::empty(n11 ));
BOOST_CHECK(!ublas::empty(n12 ));
BOOST_CHECK(!ublas::empty(n21 ));
BOOST_CHECK(!ublas::empty(n22 ));
BOOST_CHECK(!ublas::empty(n32 ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(3) dynamic extents");
BOOST_CHECK(!ublas::empty(n111 ));
BOOST_CHECK(!ublas::empty(n112 ));
BOOST_CHECK(!ublas::empty(n121 ));
BOOST_CHECK(!ublas::empty(n123 ));
BOOST_CHECK(!ublas::empty(n211 ));
BOOST_CHECK(!ublas::empty(n213 ));
BOOST_CHECK(!ublas::empty(n321 ));
BOOST_CHECK(!ublas::empty(n432 ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(4) dynamic extents");
BOOST_CHECK(!ublas::empty(n1111));
BOOST_CHECK(!ublas::empty(n4231));
}
BOOST_FIXTURE_TEST_CASE(test_extents_static_rank_function,
boost::numeric::ublas::fixture_extents_static_rank<std::size_t>,
*boost::unit_test::label("boost::numeric::ublas::empty(extents_base<D> const&)")
*boost::unit_test::description("Testing free function empty for static rank extents"))
{
namespace ublas = boost::numeric::ublas;
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(0) static rank extents");
BOOST_CHECK( ublas::empty(n ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(1) static rank extents");
BOOST_CHECK(!ublas::empty(n1 ));
BOOST_CHECK(!ublas::empty(n2 ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(2) static rank extents");
BOOST_CHECK(!ublas::empty(n11 ));
BOOST_CHECK(!ublas::empty(n12 ));
BOOST_CHECK(!ublas::empty(n21 ));
BOOST_CHECK(!ublas::empty(n22 ));
BOOST_CHECK(!ublas::empty(n32 ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(3) static rank extents");
BOOST_CHECK(!ublas::empty(n111 ));
BOOST_CHECK(!ublas::empty(n112 ));
BOOST_CHECK(!ublas::empty(n121 ));
BOOST_CHECK(!ublas::empty(n123 ));
BOOST_CHECK(!ublas::empty(n211 ));
BOOST_CHECK(!ublas::empty(n213 ));
BOOST_CHECK(!ublas::empty(n321 ));
BOOST_CHECK(!ublas::empty(n432 ));
BOOST_TEST_CHECKPOINT("[Empty Free Function] rank(4) static rank extents");
BOOST_CHECK(!ublas::empty(n1111));
BOOST_CHECK(!ublas::empty(n4231));
}
BOOST_FIXTURE_TEST_CASE(test_extents_static_trait,
boost::numeric::ublas::fixture_extents_static<std::size_t>,
*boost::unit_test::label("boost::numeric::ublas::empty_v<extents_core<...>>")
*boost::unit_test::description("Testing trait empty_v for static extents"))
{
namespace ublas = boost::numeric::ublas;
BOOST_TEST_CHECKPOINT("[Empty Trait] rank(0) static rank extents");
BOOST_CHECK( ublas::empty_v<n_type >);
BOOST_TEST_CHECKPOINT("[Empty Trait] rank(1) static extents");
BOOST_CHECK(!ublas::empty_v<n1_type >);
BOOST_CHECK(!ublas::empty_v<n2_type >);
BOOST_TEST_CHECKPOINT("[Empty Trait] rank(2) static extents");
BOOST_CHECK(!ublas::empty_v<n11_type >);
BOOST_CHECK(!ublas::empty_v<n12_type >);
BOOST_CHECK(!ublas::empty_v<n21_type >);
BOOST_CHECK(!ublas::empty_v<n22_type >);
BOOST_CHECK(!ublas::empty_v<n32_type >);
BOOST_TEST_CHECKPOINT("[Empty Trait] rank(3) static extents");
BOOST_CHECK(!ublas::empty_v<n111_type >);
BOOST_CHECK(!ublas::empty_v<n112_type >);
BOOST_CHECK(!ublas::empty_v<n121_type >);
BOOST_CHECK(!ublas::empty_v<n123_type >);
BOOST_CHECK(!ublas::empty_v<n211_type >);
BOOST_CHECK(!ublas::empty_v<n213_type >);
BOOST_CHECK(!ublas::empty_v<n321_type >);
BOOST_CHECK(!ublas::empty_v<n432_type >);
BOOST_TEST_CHECKPOINT("[Empty Trait] rank(4) static extents");
BOOST_CHECK(!ublas::empty_v<n1111_type>);
BOOST_CHECK(!ublas::empty_v<n4231_type>);
}
BOOST_FIXTURE_TEST_CASE(test_tensor_dynamic,
boost::numeric::ublas::fixture_tensor_dynamic<float>,
*boost::unit_test::label("boost::numeric::ublas::tensor_dynamic::empty")
*boost::unit_test::description("Testing the dynamic tensor's empty method"))
{
namespace ublas = boost::numeric::ublas;
BOOST_TEST_CHECKPOINT("[Empty Method] rank(1) dynamic tensor");
BOOST_CHECK(!t2.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(2) dynamic tensor");
BOOST_CHECK(!t11.empty() );
BOOST_CHECK(!t12.empty() );
BOOST_CHECK(!t21.empty() );
BOOST_CHECK(!t22.empty() );
BOOST_CHECK(!t32.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(3) dynamic tensor");
BOOST_CHECK(!t111.empty() );
BOOST_CHECK(!t112.empty() );
BOOST_CHECK(!t121.empty() );
BOOST_CHECK(!t123.empty() );
BOOST_CHECK(!t211.empty() );
BOOST_CHECK(!t213.empty() );
BOOST_CHECK(!t321.empty() );
BOOST_CHECK(!t432.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(4) dynamic tensor");
BOOST_CHECK(!t1111.empty());
BOOST_CHECK(!t4231.empty());
}
BOOST_FIXTURE_TEST_CASE(test_tensor_static_rank,
boost::numeric::ublas::fixture_tensor_static_rank<float>,
*boost::unit_test::label("boost::numeric::ublas::tensor_static_rank::empty")
*boost::unit_test::description("Testing the static rank tensor's empty method"))
{
namespace ublas = boost::numeric::ublas;
BOOST_TEST_CHECKPOINT("[Empty Method] rank(1) static_rank tensor");
BOOST_CHECK(!t2.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(2) static_rank tensor");
BOOST_CHECK(!t11.empty() );
BOOST_CHECK(!t12.empty() );
BOOST_CHECK(!t21.empty() );
BOOST_CHECK(!t22.empty() );
BOOST_CHECK(!t32.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(3) static_rank tensor");
BOOST_CHECK(!t111.empty() );
BOOST_CHECK(!t112.empty() );
BOOST_CHECK(!t121.empty() );
BOOST_CHECK(!t123.empty() );
BOOST_CHECK(!t211.empty() );
BOOST_CHECK(!t213.empty() );
BOOST_CHECK(!t321.empty() );
BOOST_CHECK(!t432.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(4) static_rank tensor");
BOOST_CHECK(!t1111.empty());
BOOST_CHECK(!t4231.empty());
}
BOOST_FIXTURE_TEST_CASE(test_tensor_static,
boost::numeric::ublas::fixture_tensor_static<float>,
*boost::unit_test::label("boost::numeric::ublas::tensor_static::empty")
*boost::unit_test::description("Testing the static tensor's empty method"))
{
namespace ublas = boost::numeric::ublas;
BOOST_TEST_CHECKPOINT("[Empty Method] rank(1) static tensor");
BOOST_CHECK(!t2.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(2) static tensor");
BOOST_CHECK(!t11.empty() );
BOOST_CHECK(!t12.empty() );
BOOST_CHECK(!t21.empty() );
BOOST_CHECK(!t22.empty() );
BOOST_CHECK(!t32.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(3) static tensor");
BOOST_CHECK(!t111.empty() );
BOOST_CHECK(!t112.empty() );
BOOST_CHECK(!t121.empty() );
BOOST_CHECK(!t123.empty() );
BOOST_CHECK(!t211.empty() );
BOOST_CHECK(!t213.empty() );
BOOST_CHECK(!t321.empty() );
BOOST_CHECK(!t432.empty() );
BOOST_TEST_CHECKPOINT("[Empty Method] rank(4) static tensor");
BOOST_CHECK(!t1111.empty());
BOOST_CHECK(!t4231.empty());
}
BOOST_AUTO_TEST_SUITE_END()
//
// Copyright (c) 2018, Cem Bassoy, cem.bassoy@gmail.com
// Copyright (c) 2019, Amit Singh, amitsingh19975@gmail.com
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// The authors gratefully acknowledge the support of
// Google and Fraunhofer IOSB, Ettlingen, Germany
//
#ifndef BOOST_TEST_DYN_LINK
#define BOOST_TEST_DYN_LINK
#endif
// NOLINTNEXTLINE
#define BOOST_TEST_MODULE MainTensor
#include <boost/test/unit_test.hpp>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment