95 lines
3.2 KiB
C++
95 lines
3.2 KiB
C++
// 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;
|
|
|
|
}
|
|
|
|
|
|
|