// Copyright 2005-2009 Daniel James. // 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 "./config.hpp" #ifdef TEST_EXTENSIONS # ifdef TEST_STD_INCLUDES # include # else # include # endif #endif #include #ifdef TEST_EXTENSIONS #include #include #include #if defined(BOOST_MSVC) #pragma warning(push) #pragma warning(disable:4244) // conversion from 'unsigned long' to 'unsigned short', possible loss of data #pragma warning(disable:4512) // assignment operator could not be generated #endif #if defined(BOOST_MSVC) #pragma warning(pop) #endif template void generic_complex_tests(std::complex v) { HASH_NAMESPACE::hash > complex_hasher; BOOST_TEST(complex_hasher(v) == complex_hasher(v)); HASH_NAMESPACE::hash real_hasher; T real = v.real(); T imag = v.imag(); BOOST_TEST(real_hasher(real) == complex_hasher(std::complex(real))); if(imag != 0 && real_hasher(real) == complex_hasher(v)) { std::ostringstream os; os<<"real_hasher("< void complex_float_tests(Float*) { typedef std::complex complex; generic_complex_tests(complex(0,0)); generic_complex_tests(complex(0.5,0)); generic_complex_tests(complex(25,0)); generic_complex_tests(complex(25,0)); generic_complex_tests(complex(-67.5324535,56.23578678)); } template void complex_integral_tests(Integer*) { typedef std::complex complex; generic_complex_tests(complex(0,0)); generic_complex_tests(complex(15342,124)); generic_complex_tests(complex(25,54356)); generic_complex_tests(complex(5325,2346)); generic_complex_tests(complex(-243897,-49923874)); generic_complex_tests(complex(-543,763)); } int main() { complex_float_tests((float*) 0); complex_float_tests((double*) 0); complex_float_tests((long double*) 0); complex_integral_tests((short*) 0); complex_integral_tests((int*) 0); complex_integral_tests((long*) 0); complex_integral_tests((unsigned short*) 0); complex_integral_tests((unsigned int*) 0); complex_integral_tests((unsigned long*) 0); return boost::report_errors(); } #endif