00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef WCOMPILETIMEFUNCTIONS_TEST_H
00026 #define WCOMPILETIMEFUNCTIONS_TEST_H
00027
00028 #include <string>
00029 #include <vector>
00030
00031 #include <cxxtest/TestSuite.h>
00032 #include "../WCompileTimeFunctions.h"
00033
00034
00035
00036
00037 class WCompileTimeFunctionsTest : public CxxTest::TestSuite
00038 {
00039 public:
00040
00041
00042
00043 void testWBinom()
00044 {
00045 std::size_t value;
00046 value = WBinom< 1, 0 >::value;
00047 TS_ASSERT_EQUALS( value, 1 );
00048 value = WBinom< 1, 1 >::value;
00049 TS_ASSERT_EQUALS( value, 1 );
00050 value = WBinom< 2, 0 >::value;
00051 TS_ASSERT_EQUALS( value, 1 );
00052 value = WBinom< 2, 1 >::value;
00053 TS_ASSERT_EQUALS( value, 2 );
00054 value = WBinom< 2, 2 >::value;
00055 TS_ASSERT_EQUALS( value, 1 );
00056 value = WBinom< 3, 0 >::value;
00057 TS_ASSERT_EQUALS( value, 1 );
00058 value = WBinom< 3, 1 >::value;
00059 TS_ASSERT_EQUALS( value, 3 );
00060 value = WBinom< 3, 2 >::value;
00061 TS_ASSERT_EQUALS( value, 3 );
00062 value = WBinom< 3, 3 >::value;
00063 TS_ASSERT_EQUALS( value, 1 );
00064 value = WBinom< 4, 0 >::value;
00065 TS_ASSERT_EQUALS( value, 1 );
00066 value = WBinom< 4, 1 >::value;
00067 TS_ASSERT_EQUALS( value, 4 );
00068 value = WBinom< 4, 2 >::value;
00069 TS_ASSERT_EQUALS( value, 6 );
00070 value = WBinom< 4, 3 >::value;
00071 TS_ASSERT_EQUALS( value, 4 );
00072 value = WBinom< 4, 4 >::value;
00073 TS_ASSERT_EQUALS( value, 1 );
00074 value = WBinom< 5, 0 >::value;
00075 TS_ASSERT_EQUALS( value, 1 );
00076 value = WBinom< 5, 1 >::value;
00077 TS_ASSERT_EQUALS( value, 5 );
00078 value = WBinom< 5, 2 >::value;
00079 TS_ASSERT_EQUALS( value, 10 );
00080 value = WBinom< 5, 3 >::value;
00081 TS_ASSERT_EQUALS( value, 10 );
00082 value = WBinom< 5, 4 >::value;
00083 TS_ASSERT_EQUALS( value, 5 );
00084 value = WBinom< 5, 5 >::value;
00085 TS_ASSERT_EQUALS( value, 1 );
00086 value = WBinom< 6, 0 >::value;
00087 TS_ASSERT_EQUALS( value, 1 );
00088 value = WBinom< 6, 1 >::value;
00089 TS_ASSERT_EQUALS( value, 6 );
00090 value = WBinom< 6, 2 >::value;
00091 TS_ASSERT_EQUALS( value, 15 );
00092 value = WBinom< 6, 3 >::value;
00093 TS_ASSERT_EQUALS( value, 20 );
00094 value = WBinom< 6, 4 >::value;
00095 TS_ASSERT_EQUALS( value, 15 );
00096 value = WBinom< 6, 5 >::value;
00097 TS_ASSERT_EQUALS( value, 6 );
00098 value = WBinom< 6, 6 >::value;
00099 TS_ASSERT_EQUALS( value, 1 );
00100 }
00101
00102
00103
00104
00105 void testWPower()
00106 {
00107 std::size_t value;
00108 value = WPower< 1, 0 >::value;
00109 TS_ASSERT_EQUALS( value, 1 );
00110 value = WPower< 2, 0 >::value;
00111 TS_ASSERT_EQUALS( value, 1 );
00112 value = WPower< 3, 0 >::value;
00113 TS_ASSERT_EQUALS( value, 1 );
00114 value = WPower< 4, 0 >::value;
00115 TS_ASSERT_EQUALS( value, 1 );
00116 value = WPower< 5, 0 >::value;
00117 TS_ASSERT_EQUALS( value, 1 );
00118 value = WPower< 6, 0 >::value;
00119 TS_ASSERT_EQUALS( value, 1 );
00120 value = WPower< 1, 1 >::value;
00121 TS_ASSERT_EQUALS( value, 1 );
00122 value = WPower< 2, 1 >::value;
00123 TS_ASSERT_EQUALS( value, 2 );
00124 value = WPower< 3, 1 >::value;
00125 TS_ASSERT_EQUALS( value, 3 );
00126 value = WPower< 4, 1 >::value;
00127 TS_ASSERT_EQUALS( value, 4 );
00128 value = WPower< 5, 1 >::value;
00129 TS_ASSERT_EQUALS( value, 5 );
00130 value = WPower< 0, 2 >::value;
00131 TS_ASSERT_EQUALS( value, 0 );
00132 value = WPower< 1, 2 >::value;
00133 TS_ASSERT_EQUALS( value, 1 );
00134 value = WPower< 2, 2 >::value;
00135 TS_ASSERT_EQUALS( value, 4 );
00136 value = WPower< 3, 2 >::value;
00137 TS_ASSERT_EQUALS( value, 9 );
00138 value = WPower< 4, 2 >::value;
00139 TS_ASSERT_EQUALS( value, 16 );
00140 value = WPower< 5, 2 >::value;
00141 TS_ASSERT_EQUALS( value, 25 );
00142 value = WPower< 6, 2 >::value;
00143 TS_ASSERT_EQUALS( value, 36 );
00144 value = WPower< 3, 3 >::value;
00145 TS_ASSERT_EQUALS( value, 27 );
00146 value = WPower< 4, 3 >::value;
00147 TS_ASSERT_EQUALS( value, 64 );
00148 value = WPower< 5, 3 >::value;
00149 TS_ASSERT_EQUALS( value, 125 );
00150 value = WPower< 2, 4 >::value;
00151 TS_ASSERT_EQUALS( value, 16 );
00152 value = WPower< 3, 4 >::value;
00153 TS_ASSERT_EQUALS( value, 81 );
00154 value = WPower< 2, 5 >::value;
00155 TS_ASSERT_EQUALS( value, 32 );
00156 value = WPower< 3, 5 >::value;
00157 TS_ASSERT_EQUALS( value, 243 );
00158 }
00159 };
00160
00161 #endif // WCOMPILETIMEFUNCTIONS_TEST_H