mirror of
https://github.com/boostorg/core.git
synced 2025-05-10 07:13:54 +00:00
Split BOOST_TEST_TRAIT_* into lightweight_test_trait.hpp.
This commit is contained in:
parent
9a87f2250d
commit
dd1121d589
@ -10,7 +10,7 @@
|
|||||||
//
|
//
|
||||||
// boost/core/lightweight_test.hpp - lightweight test library
|
// boost/core/lightweight_test.hpp - lightweight test library
|
||||||
//
|
//
|
||||||
// Copyright (c) 2002, 2009 Peter Dimov
|
// Copyright (c) 2002, 2009, 2014 Peter Dimov
|
||||||
// Copyright (2) Beman Dawes 2010, 2011
|
// Copyright (2) Beman Dawes 2010, 2011
|
||||||
// Copyright (3) Ion Gaztanaga 2013
|
// Copyright (3) Ion Gaztanaga 2013
|
||||||
//
|
//
|
||||||
@ -22,7 +22,6 @@
|
|||||||
#include <boost/assert.hpp>
|
#include <boost/assert.hpp>
|
||||||
#include <boost/current_function.hpp>
|
#include <boost/current_function.hpp>
|
||||||
#include <boost/core/no_exceptions_support.hpp>
|
#include <boost/core/no_exceptions_support.hpp>
|
||||||
#include <boost/core/typeinfo.hpp>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
// IDE's like Visual Studio perform better if output goes to std::cout or
|
// IDE's like Visual Studio perform better if output goes to std::cout or
|
||||||
@ -118,25 +117,6 @@ template<class T, class U> inline void test_ne_impl( char const * expr1, char co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T > inline void test_trait_impl( char const * trait, void (*)( T ),
|
|
||||||
bool expected, char const * file, int line, char const * function )
|
|
||||||
{
|
|
||||||
if( T::value == expected )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BOOST_LIGHTWEIGHT_TEST_OSTREAM
|
|
||||||
<< file << "(" << line << "): predicate '" << trait << "' ["
|
|
||||||
<< BOOST_CORE_TYPEID(T).name() << "]"
|
|
||||||
<< " test failed in function '" << function
|
|
||||||
<< "' (should have been " << ( expected? "true": "false" ) << ")"
|
|
||||||
<< std::endl;
|
|
||||||
|
|
||||||
++boost::detail::test_errors();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
inline int report_errors()
|
inline int report_errors()
|
||||||
@ -186,7 +166,4 @@ inline int report_errors()
|
|||||||
#define BOOST_TEST_THROWS( EXPR, EXCEP )
|
#define BOOST_TEST_THROWS( EXPR, EXCEP )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BOOST_TEST_TRAIT_TRUE(type) ( ::boost::detail::test_trait_impl(#type, (void(*)type)0, true, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) )
|
|
||||||
#define BOOST_TEST_TRAIT_FALSE(type) ( ::boost::detail::test_trait_impl(#type, (void(*)type)0, false, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) )
|
|
||||||
|
|
||||||
#endif // #ifndef BOOST_CORE_LIGHTWEIGHT_TEST_HPP
|
#endif // #ifndef BOOST_CORE_LIGHTWEIGHT_TEST_HPP
|
||||||
|
55
include/boost/core/lightweight_test_trait.hpp
Normal file
55
include/boost/core/lightweight_test_trait.hpp
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#ifndef BOOST_CORE_LIGHTWEIGHT_TEST_TRAIT_HPP
|
||||||
|
#define BOOST_CORE_LIGHTWEIGHT_TEST_TRAIT_HPP
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boost/core/lightweight_test_trait.hpp
|
||||||
|
//
|
||||||
|
// BOOST_TEST_TRAIT_TRUE, BOOST_TEST_TRAIT_FALSE
|
||||||
|
//
|
||||||
|
// Copyright 2014 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
|
||||||
|
#include <boost/core/lightweight_test.hpp>
|
||||||
|
#include <boost/core/typeinfo.hpp>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
template< class T > inline void test_trait_impl( char const * trait, void (*)( T ),
|
||||||
|
bool expected, char const * file, int line, char const * function )
|
||||||
|
{
|
||||||
|
if( T::value == expected )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BOOST_LIGHTWEIGHT_TEST_OSTREAM
|
||||||
|
<< file << "(" << line << "): predicate '" << trait << "' ["
|
||||||
|
<< BOOST_CORE_TYPEID(T).name() << "]"
|
||||||
|
<< " test failed in function '" << function
|
||||||
|
<< "' (should have been " << ( expected? "true": "false" ) << ")"
|
||||||
|
<< std::endl;
|
||||||
|
|
||||||
|
++boost::detail::test_errors();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#define BOOST_TEST_TRAIT_TRUE(type) ( ::boost::detail::test_trait_impl(#type, (void(*)type)0, true, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) )
|
||||||
|
#define BOOST_TEST_TRAIT_FALSE(type) ( ::boost::detail::test_trait_impl(#type, (void(*)type)0, false, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) )
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_CORE_LIGHTWEIGHT_TEST_TRAIT_HPP
|
@ -50,6 +50,8 @@ run get_pointer_test.cpp ;
|
|||||||
run lightweight_test_test.cpp ;
|
run lightweight_test_test.cpp ;
|
||||||
run lightweight_test_test.cpp : : : <exception-handling>off : lightweight_test_test_no_except ;
|
run lightweight_test_test.cpp : : : <exception-handling>off : lightweight_test_test_no_except ;
|
||||||
|
|
||||||
|
run lightweight_test_test2.cpp ;
|
||||||
|
|
||||||
run-fail lightweight_test_fail.cpp ;
|
run-fail lightweight_test_fail.cpp ;
|
||||||
run-fail lightweight_test_fail2.cpp ;
|
run-fail lightweight_test_fail2.cpp ;
|
||||||
run-fail lightweight_test_fail3.cpp ;
|
run-fail lightweight_test_fail3.cpp ;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <boost/detail/iterator.hpp>
|
#include <boost/detail/iterator.hpp>
|
||||||
#include <boost/core/is_same.hpp>
|
#include <boost/core/is_same.hpp>
|
||||||
#include <boost/core/lightweight_test.hpp>
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
|
@ -8,9 +8,8 @@
|
|||||||
// http://www.boost.org/LICENSE_1_0.txt
|
// http://www.boost.org/LICENSE_1_0.txt
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <boost/iterator.hpp>
|
|
||||||
#include <boost/core/is_same.hpp>
|
#include <boost/core/is_same.hpp>
|
||||||
#include <boost/core/lightweight_test.hpp>
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
|
|
||||||
struct X
|
struct X
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <boost/iterator.hpp>
|
#include <boost/iterator.hpp>
|
||||||
#include <boost/core/is_same.hpp>
|
#include <boost/core/is_same.hpp>
|
||||||
#include <boost/core/lightweight_test.hpp>
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// http://www.boost.org/LICENSE_1_0.txt
|
// http://www.boost.org/LICENSE_1_0.txt
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <boost/detail/lightweight_test.hpp>
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
|
|
||||||
template<class T1, class T2> struct Y1
|
template<class T1, class T2> struct Y1
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// http://www.boost.org/LICENSE_1_0.txt
|
// http://www.boost.org/LICENSE_1_0.txt
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <boost/detail/lightweight_test.hpp>
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
|
|
||||||
template<class T1, class T2> struct Y1
|
template<class T1, class T2> struct Y1
|
||||||
{
|
{
|
||||||
|
@ -32,26 +32,6 @@ void f( bool x )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T1, class T2> struct Y1
|
|
||||||
{
|
|
||||||
enum { value = 1 };
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T1, class T2> struct Y2
|
|
||||||
{
|
|
||||||
enum { value = 0 };
|
|
||||||
};
|
|
||||||
|
|
||||||
struct X1
|
|
||||||
{
|
|
||||||
typedef int type;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct X2
|
|
||||||
{
|
|
||||||
typedef int type;
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int x = 0;
|
int x = 0;
|
||||||
@ -88,13 +68,5 @@ int main()
|
|||||||
BOOST_TEST_THROWS( f(true), X );
|
BOOST_TEST_THROWS( f(true), X );
|
||||||
BOOST_TEST_THROWS( f(false), int );
|
BOOST_TEST_THROWS( f(false), int );
|
||||||
|
|
||||||
// BOOST_TEST_TRAIT_TRUE
|
|
||||||
|
|
||||||
BOOST_TEST_TRAIT_TRUE(( Y1<X1::type, X2::type> ));
|
|
||||||
|
|
||||||
// BOOST_TEST_TRAIT_FALSE
|
|
||||||
|
|
||||||
BOOST_TEST_TRAIT_FALSE(( Y2<X1::type, X2::type> ));
|
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
44
test/lightweight_test_test2.cpp
Normal file
44
test/lightweight_test_test2.cpp
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//
|
||||||
|
// Test for lightweight_test_trait.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2014 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <boost/core/lightweight_test_trait.hpp>
|
||||||
|
|
||||||
|
template<class T1, class T2> struct Y1
|
||||||
|
{
|
||||||
|
enum { value = 1 };
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T1, class T2> struct Y2
|
||||||
|
{
|
||||||
|
enum { value = 0 };
|
||||||
|
};
|
||||||
|
|
||||||
|
struct X1
|
||||||
|
{
|
||||||
|
typedef int type;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct X2
|
||||||
|
{
|
||||||
|
typedef int type;
|
||||||
|
};
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// BOOST_TEST_TRAIT_TRUE
|
||||||
|
|
||||||
|
BOOST_TEST_TRAIT_TRUE(( Y1<X1::type, X2::type> ));
|
||||||
|
|
||||||
|
// BOOST_TEST_TRAIT_FALSE
|
||||||
|
|
||||||
|
BOOST_TEST_TRAIT_FALSE(( Y2<X1::type, X2::type> ));
|
||||||
|
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user