$search
00001 00009 /***************************************************************************** 00010 ** Includes 00011 *****************************************************************************/ 00012 00013 #include <gtest/gtest.h> 00014 #include <limits> 00015 #include <ecl/config/ecl.hpp> 00016 #include "../../include/ecl/type_traits/fundamental_types.hpp" 00017 00018 /***************************************************************************** 00019 ** Using 00020 *****************************************************************************/ 00021 00022 using ecl::is_integral; 00023 using ecl::is_float; 00024 using ecl::is_byte; 00025 using ecl::is_signed_byte; 00026 using ecl::is_unsigned_byte; 00027 00028 /***************************************************************************** 00029 ** Tests 00030 *****************************************************************************/ 00031 00032 TEST(TypeTraitTests,is_integral) { 00033 bool result; 00034 result = is_integral<short>::value; 00035 EXPECT_EQ(true, result); 00036 result = is_integral<unsigned short>::value; 00037 EXPECT_EQ(true, result); 00038 result = is_integral<int>::value; 00039 EXPECT_EQ(true, result); 00040 result = is_integral<unsigned int>::value; 00041 EXPECT_EQ(true, result); 00042 result = is_integral<long>::value; 00043 EXPECT_EQ(true, result); 00044 result = is_integral<unsigned long>::value; 00045 EXPECT_EQ(true, result); 00046 result = is_integral<long long>::value; 00047 EXPECT_EQ(true, result); 00048 result = is_integral<unsigned long long>::value; 00049 EXPECT_EQ(true, result); 00050 result = is_integral<float>::value; 00051 EXPECT_EQ(false, result); 00052 result = is_integral<double>::value; 00053 EXPECT_EQ(false, result); 00054 } 00055 00056 TEST(TypeTraitTests,is_float) { 00057 bool result; 00058 result = is_float<short>::value; 00059 EXPECT_EQ(false, result); 00060 result = is_float<unsigned short>::value; 00061 EXPECT_EQ(false, result); 00062 result = is_float<int>::value; 00063 EXPECT_EQ(false, result); 00064 result = is_float<unsigned int>::value; 00065 EXPECT_EQ(false, result); 00066 result = is_float<long>::value; 00067 EXPECT_EQ(false, result); 00068 result = is_float<unsigned long>::value; 00069 EXPECT_EQ(false, result); 00070 result = is_float<long long>::value; 00071 EXPECT_EQ(false, result); 00072 result = is_float<unsigned long long>::value; 00073 EXPECT_EQ(false, result); 00074 result = is_float<float>::value; 00075 EXPECT_EQ(true, result); 00076 result = is_float<double>::value; 00077 EXPECT_EQ(true, result); 00078 } 00079 00080 TEST(TypeTraitTests,is_byte) { 00081 bool result; 00082 00083 result = is_byte<char>::value; 00084 EXPECT_EQ(true, result); 00085 result = is_byte<signed char>::value; 00086 EXPECT_EQ(true, result); 00087 result = is_byte<unsigned char>::value; 00088 EXPECT_EQ(true, result); 00089 00090 result = is_signed_byte<char>::value; 00091 if ( std::numeric_limits<char>::is_signed ) { 00092 EXPECT_EQ(true, result); 00093 } else { 00094 EXPECT_EQ(false, result); 00095 } 00096 result = is_signed_byte<signed char>::value; 00097 EXPECT_EQ(true, result); 00098 result = is_signed_byte<unsigned char>::value; 00099 EXPECT_EQ(false, result); 00100 00101 result = is_unsigned_byte<char>::value; 00102 if ( std::numeric_limits<char>::is_signed ) { 00103 EXPECT_EQ(false, result); 00104 } else { 00105 EXPECT_EQ(true, result); 00106 } 00107 result = is_unsigned_byte<signed char>::value; 00108 EXPECT_EQ(false, result); 00109 result = is_unsigned_byte<unsigned char>::value; 00110 EXPECT_EQ(true, result); 00111 } 00112 /***************************************************************************** 00113 ** Main program 00114 *****************************************************************************/ 00115 00116 int main(int argc, char **argv) { 00117 00118 testing::InitGoogleTest(&argc,argv); 00119 return RUN_ALL_TESTS(); 00120 }