// Copyright (C) 2008 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #include <sstream> #include <string> #include <cstdlib> #include <ctime> #include <dlib/algs.h> #include "tester.h" namespace { using namespace test; using namespace dlib; using namespace std; logger dlog("test.metaprogramming"); void metaprogramming_test ( ) /*! ensures - runs tests on template metaprogramming objects and functions for compliance with the specs !*/ { print_spinner(); DLIB_TEST(is_signed_type<signed char>::value == true); DLIB_TEST(is_signed_type<signed short>::value == true); DLIB_TEST(is_signed_type<signed int>::value == true); DLIB_TEST(is_signed_type<signed long>::value == true); DLIB_TEST(is_unsigned_type<signed char>::value == false); DLIB_TEST(is_unsigned_type<signed short>::value == false); DLIB_TEST(is_unsigned_type<signed int>::value == false); DLIB_TEST(is_unsigned_type<signed long>::value == false); DLIB_TEST(is_unsigned_type<unsigned char>::value == true); DLIB_TEST(is_unsigned_type<unsigned short>::value == true); DLIB_TEST(is_unsigned_type<unsigned int>::value == true); DLIB_TEST(is_unsigned_type<unsigned long>::value == true); DLIB_TEST(is_signed_type<unsigned char>::value == false); DLIB_TEST(is_signed_type<unsigned short>::value == false); DLIB_TEST(is_signed_type<unsigned int>::value == false); DLIB_TEST(is_signed_type<unsigned long>::value == false); COMPILE_TIME_ASSERT(is_signed_type<signed char>::value == true); COMPILE_TIME_ASSERT(is_signed_type<signed short>::value == true); COMPILE_TIME_ASSERT(is_signed_type<signed int>::value == true); COMPILE_TIME_ASSERT(is_signed_type<signed long>::value == true); COMPILE_TIME_ASSERT(is_unsigned_type<signed char>::value == false); COMPILE_TIME_ASSERT(is_unsigned_type<signed short>::value == false); COMPILE_TIME_ASSERT(is_unsigned_type<signed int>::value == false); COMPILE_TIME_ASSERT(is_unsigned_type<signed long>::value == false); COMPILE_TIME_ASSERT(is_unsigned_type<unsigned char>::value == true); COMPILE_TIME_ASSERT(is_unsigned_type<unsigned short>::value == true); COMPILE_TIME_ASSERT(is_unsigned_type<unsigned int>::value == true); COMPILE_TIME_ASSERT(is_unsigned_type<unsigned long>::value == true); COMPILE_TIME_ASSERT(is_signed_type<unsigned char>::value == false); COMPILE_TIME_ASSERT(is_signed_type<unsigned short>::value == false); COMPILE_TIME_ASSERT(is_signed_type<unsigned int>::value == false); COMPILE_TIME_ASSERT(is_signed_type<unsigned long>::value == false); } class metaprogramming_tester : public tester { public: metaprogramming_tester ( ) : tester ("test_metaprogramming", "Runs tests on the metaprogramming objects and functions.") {} void perform_test ( ) { metaprogramming_test(); } } a; }