BitWizard_Test.cpp
Go to the documentation of this file.
00001 #include <gtest/gtest.h>
00002 #include <stdint.h>
00003 #include "robot_instance/BitWizard.h"
00004 
00005 using namespace std;
00006 
00007 TEST(BitWizardTest, Constructors)
00008 {
00009     BitWizard<uint32_t> bitWizard;
00010 }
00011 
00012 TEST(BitWizardTest, GetBit8)
00013 {
00014     BitWizard<uint8_t> bitWizard;
00015 
00016     uint8_t value = 0;
00017 
00018     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00019     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00020     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00021     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00022     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00023     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00024     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00025     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00026 
00027     value = -1;
00028 
00029     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00030     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00031     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00032     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00033     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00034     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00035     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00036     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00037 
00038     value = 0xAA;
00039 
00040     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00041     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00042     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00043     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00044     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00045     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00046     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00047     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00048 }
00049 
00050 TEST(BitWizardTest, GetBit16)
00051 {
00052     BitWizard<uint16_t> bitWizard;
00053 
00054     uint16_t value = 0;
00055 
00056     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00057     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00058     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00059     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00060     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00061     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00062     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00063     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00064     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_EIGHT_INDEX, value));
00065     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_NINE_INDEX, value));
00066     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TEN_INDEX, value));
00067     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ELEVEN_INDEX, value));
00068     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWELVE_INDEX, value));
00069     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTEEN_INDEX, value));
00070     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOURTEEN_INDEX, value));
00071     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, value));
00072 
00073     value = -1;
00074 
00075     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00076     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00077     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00078     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00079     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00080     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00081     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00082     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00083     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_EIGHT_INDEX, value));
00084     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_NINE_INDEX, value));
00085     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TEN_INDEX, value));
00086     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ELEVEN_INDEX, value));
00087     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWELVE_INDEX, value));
00088     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTEEN_INDEX, value));
00089     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FOURTEEN_INDEX, value));
00090     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, value));
00091 
00092     value = 0xAAAA;
00093 
00094     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00095     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00096     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00097     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00098     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00099     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00100     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00101     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00102     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_EIGHT_INDEX, value));
00103     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_NINE_INDEX, value));
00104     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TEN_INDEX, value));
00105     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ELEVEN_INDEX, value));
00106     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWELVE_INDEX, value));
00107     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTEEN_INDEX, value));
00108     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOURTEEN_INDEX, value));
00109     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, value));
00110 }
00111 
00112 TEST(BitWizardTest, GetBit32)
00113 {
00114     BitWizard<uint32_t> bitWizard;
00115 
00116     uint32_t value = 0;
00117 
00118     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00119     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00120     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00121     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00122     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00123     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00124     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00125     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00126     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_EIGHT_INDEX, value));
00127     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_NINE_INDEX, value));
00128     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TEN_INDEX, value));
00129     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ELEVEN_INDEX, value));
00130     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWELVE_INDEX, value));
00131     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTEEN_INDEX, value));
00132     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOURTEEN_INDEX, value));
00133     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, value));
00134     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIXTEEN_INDEX, value));
00135     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SEVENTEEN_INDEX, value));
00136     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_EIGHTEEN_INDEX, value));
00137     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_NINETEEN_INDEX, value));
00138     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTY_INDEX, value));
00139     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYONE_INDEX, value));
00140     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYTWO_INDEX, value));
00141     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYTHREE_INDEX, value));
00142     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYFOUR_INDEX, value));
00143     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYFIVE_INDEX, value));
00144     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYSIX_INDEX, value));
00145     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYSEVEN_INDEX, value));
00146     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYEIGHT_INDEX, value));
00147     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYNINE_INDEX, value));
00148     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTY_INDEX, value));
00149     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, value));
00150 
00151     value = -1;
00152 
00153     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00154     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00155     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00156     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00157     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00158     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00159     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00160     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00161     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_EIGHT_INDEX, value));
00162     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_NINE_INDEX, value));
00163     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TEN_INDEX, value));
00164     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ELEVEN_INDEX, value));
00165     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWELVE_INDEX, value));
00166     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTEEN_INDEX, value));
00167     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FOURTEEN_INDEX, value));
00168     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, value));
00169     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SIXTEEN_INDEX, value));
00170     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVENTEEN_INDEX, value));
00171     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_EIGHTEEN_INDEX, value));
00172     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_NINETEEN_INDEX, value));
00173     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTY_INDEX, value));
00174     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYONE_INDEX, value));
00175     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYTWO_INDEX, value));
00176     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYTHREE_INDEX, value));
00177     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYFOUR_INDEX, value));
00178     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYFIVE_INDEX, value));
00179     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYSIX_INDEX, value));
00180     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYSEVEN_INDEX, value));
00181     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYEIGHT_INDEX, value));
00182     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYNINE_INDEX, value));
00183     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTY_INDEX, value));
00184     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, value));
00185 
00186     value = 0xAAAAAAAA;
00187 
00188     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, value));
00189     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ONE_INDEX, value));
00190     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWO_INDEX, value));
00191     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THREE_INDEX, value));
00192     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOUR_INDEX, value));
00193     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIVE_INDEX, value));
00194     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIX_INDEX, value));
00195     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, value));
00196     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_EIGHT_INDEX, value));
00197     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_NINE_INDEX, value));
00198     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TEN_INDEX, value));
00199     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ELEVEN_INDEX, value));
00200     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWELVE_INDEX, value));
00201     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTEEN_INDEX, value));
00202     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FOURTEEN_INDEX, value));
00203     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, value));
00204     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SIXTEEN_INDEX, value));
00205     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVENTEEN_INDEX, value));
00206     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_EIGHTEEN_INDEX, value));
00207     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_NINETEEN_INDEX, value));
00208     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTY_INDEX, value));
00209     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYONE_INDEX, value));
00210     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYTWO_INDEX, value));
00211     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYTHREE_INDEX, value));
00212     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYFOUR_INDEX, value));
00213     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYFIVE_INDEX, value));
00214     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYSIX_INDEX, value));
00215     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYSEVEN_INDEX, value));
00216     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_TWENTYEIGHT_INDEX, value));
00217     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_TWENTYNINE_INDEX, value));
00218     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTY_INDEX, value));
00219     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, value));
00220 }
00221 
00222 TEST(BitWizardTest, GetBitMismatch)
00223 {
00224     BitWizard<uint32_t> bitWizard32;
00225     uint8_t value8 = 0xAA;
00226 
00227     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_ZERO_INDEX, value8));
00228     EXPECT_TRUE(bitWizard32.getBit(BitMinion::BIT_ONE_INDEX, value8));
00229     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWO_INDEX, value8));
00230     EXPECT_TRUE(bitWizard32.getBit(BitMinion::BIT_THREE_INDEX, value8));
00231     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_FOUR_INDEX, value8));
00232     EXPECT_TRUE(bitWizard32.getBit(BitMinion::BIT_FIVE_INDEX, value8));
00233     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_SIX_INDEX, value8));
00234     EXPECT_TRUE(bitWizard32.getBit(BitMinion::BIT_SEVEN_INDEX, value8));
00236     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_EIGHT_INDEX, value8));
00237     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_NINE_INDEX, value8));
00238     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TEN_INDEX, value8));
00239     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_ELEVEN_INDEX, value8));
00240     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWELVE_INDEX, value8));
00241     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_THIRTEEN_INDEX, value8));
00242     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_FOURTEEN_INDEX, value8));
00243     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_FIFTEEN_INDEX, value8));
00244     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_SIXTEEN_INDEX, value8));
00245     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_SEVENTEEN_INDEX, value8));
00246     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_EIGHTEEN_INDEX, value8));
00247     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_NINETEEN_INDEX, value8));
00248     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTY_INDEX, value8));
00249     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYONE_INDEX, value8));
00250     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYTWO_INDEX, value8));
00251     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYTHREE_INDEX, value8));
00252     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYFOUR_INDEX, value8));
00253     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYFIVE_INDEX, value8));
00254     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYSIX_INDEX, value8));
00255     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYSEVEN_INDEX, value8));
00256     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYEIGHT_INDEX, value8));
00257     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_TWENTYNINE_INDEX, value8));
00258     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_THIRTY_INDEX, value8));
00259     EXPECT_FALSE(bitWizard32.getBit(BitMinion::BIT_THIRTYONE_INDEX, value8));
00260 
00261     BitWizard<uint8_t> bitWizard8;
00262     uint32_t value32 = 0xAAAAAAAA;
00263 
00264     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_ZERO_INDEX, value32));
00265     EXPECT_TRUE(bitWizard8.getBit(BitMinion::BIT_ONE_INDEX, value32));
00266     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWO_INDEX, value32));
00267     EXPECT_TRUE(bitWizard8.getBit(BitMinion::BIT_THREE_INDEX, value32));
00268     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_FOUR_INDEX, value32));
00269     EXPECT_TRUE(bitWizard8.getBit(BitMinion::BIT_FIVE_INDEX, value32));
00270     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_SIX_INDEX, value32));
00271     EXPECT_TRUE(bitWizard8.getBit(BitMinion::BIT_SEVEN_INDEX, value32));
00273     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_EIGHT_INDEX, value32));
00274     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_NINE_INDEX, value32));
00275     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TEN_INDEX, value32));
00276     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_ELEVEN_INDEX, value32));
00277     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWELVE_INDEX, value32));
00278     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_THIRTEEN_INDEX, value32));
00279     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_FOURTEEN_INDEX, value32));
00280     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_FIFTEEN_INDEX, value32));
00281     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_SIXTEEN_INDEX, value32));
00282     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_SEVENTEEN_INDEX, value32));
00283     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_EIGHTEEN_INDEX, value32));
00284     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_NINETEEN_INDEX, value32));
00285     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTY_INDEX, value32));
00286     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYONE_INDEX, value32));
00287     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYTWO_INDEX, value32));
00288     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYTHREE_INDEX, value32));
00289     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYFOUR_INDEX, value32));
00290     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYFIVE_INDEX, value32));
00291     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYSIX_INDEX, value32));
00292     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYSEVEN_INDEX, value32));
00293     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYEIGHT_INDEX, value32));
00294     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_TWENTYNINE_INDEX, value32));
00295     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_THIRTY_INDEX, value32));
00296     EXPECT_FALSE(bitWizard8.getBit(BitMinion::BIT_THIRTYONE_INDEX, value32));
00297 }
00298 
00299 TEST(BitWizardTest, TestBit8)
00300 {
00301     BitWizard<uint8_t> bitWizard;
00302 
00303     uint8_t value = 0xAA;
00304 
00305     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_ZERO_INDEX, value));
00306     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_ZERO_INDEX, value));
00307     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_ONE_INDEX, value));
00308     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_ONE_INDEX, value));
00309     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWO_INDEX, value));
00310     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWO_INDEX, value));
00311     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_THREE_INDEX, value));
00312     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_THREE_INDEX, value));
00313     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_FOUR_INDEX, value));
00314     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_FOUR_INDEX, value));
00315     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_FIVE_INDEX, value));
00316     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_FIVE_INDEX, value));
00317     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_SIX_INDEX, value));
00318     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_SIX_INDEX, value));
00319     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_SEVEN_INDEX, value));
00320     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_SEVEN_INDEX, value));
00321 }
00322 
00323 TEST(BitWizardTest, TestBit16)
00324 {
00325     BitWizard<uint16_t> bitWizard;
00326 
00327     uint16_t value = 0xAAAA;
00328 
00329     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_ZERO_INDEX, value));
00330     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_ZERO_INDEX, value));
00331     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_ONE_INDEX, value));
00332     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_ONE_INDEX, value));
00333     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWO_INDEX, value));
00334     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWO_INDEX, value));
00335     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_THREE_INDEX, value));
00336     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_THREE_INDEX, value));
00337     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_FOUR_INDEX, value));
00338     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_FOUR_INDEX, value));
00339     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_FIVE_INDEX, value));
00340     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_FIVE_INDEX, value));
00341     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_SIX_INDEX, value));
00342     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_SIX_INDEX, value));
00343     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_SEVEN_INDEX, value));
00344     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_SEVEN_INDEX, value));
00345     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_EIGHT_INDEX, value));
00346     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_EIGHT_INDEX, value));
00347     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_NINE_INDEX, value));
00348     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_NINE_INDEX, value));
00349     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TEN_INDEX, value));
00350     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TEN_INDEX, value));
00351     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_ELEVEN_INDEX, value));
00352     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_ELEVEN_INDEX, value));
00353     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWELVE_INDEX, value));
00354     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWELVE_INDEX, value));
00355     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_THIRTEEN_INDEX, value));
00356     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_THIRTEEN_INDEX, value));
00357     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_FOURTEEN_INDEX, value));
00358     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_FOURTEEN_INDEX, value));
00359     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_FIFTEEN_INDEX, value));
00360     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_FIFTEEN_INDEX, value));
00361 }
00362 
00363 TEST(BitWizardTest, TestBit32)
00364 {
00365     BitWizard<uint32_t> bitWizard;
00366 
00367     uint32_t value = 0xAAAAAAAA;
00368 
00369     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_ZERO_INDEX, value));
00370     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_ZERO_INDEX, value));
00371     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_ONE_INDEX, value));
00372     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_ONE_INDEX, value));
00373     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWO_INDEX, value));
00374     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWO_INDEX, value));
00375     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_THREE_INDEX, value));
00376     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_THREE_INDEX, value));
00377     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_FOUR_INDEX, value));
00378     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_FOUR_INDEX, value));
00379     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_FIVE_INDEX, value));
00380     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_FIVE_INDEX, value));
00381     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_SIX_INDEX, value));
00382     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_SIX_INDEX, value));
00383     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_SEVEN_INDEX, value));
00384     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_SEVEN_INDEX, value));
00385     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_EIGHT_INDEX, value));
00386     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_EIGHT_INDEX, value));
00387     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_NINE_INDEX, value));
00388     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_NINE_INDEX, value));
00389     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TEN_INDEX, value));
00390     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TEN_INDEX, value));
00391     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_ELEVEN_INDEX, value));
00392     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_ELEVEN_INDEX, value));
00393     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWELVE_INDEX, value));
00394     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWELVE_INDEX, value));
00395     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_THIRTEEN_INDEX, value));
00396     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_THIRTEEN_INDEX, value));
00397     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_FOURTEEN_INDEX, value));
00398     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_FOURTEEN_INDEX, value));
00399     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_FIFTEEN_INDEX, value));
00400     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_FIFTEEN_INDEX, value));
00401     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_SIXTEEN_INDEX, value));
00402     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_SIXTEEN_INDEX, value));
00403     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_SEVENTEEN_INDEX, value));
00404     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_SEVENTEEN_INDEX, value));
00405     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_EIGHTEEN_INDEX, value));
00406     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_EIGHTEEN_INDEX, value));
00407     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_NINETEEN_INDEX, value));
00408     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_NINETEEN_INDEX, value));
00409     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWENTY_INDEX, value));
00410     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWENTY_INDEX, value));
00411     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_TWENTYONE_INDEX, value));
00412     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_TWENTYONE_INDEX, value));
00413     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWENTYTWO_INDEX, value));
00414     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWENTYTWO_INDEX, value));
00415     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_TWENTYTHREE_INDEX, value));
00416     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_TWENTYTHREE_INDEX, value));
00417     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWENTYFOUR_INDEX, value));
00418     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWENTYFOUR_INDEX, value));
00419     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_TWENTYFIVE_INDEX, value));
00420     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_TWENTYFIVE_INDEX, value));
00421     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWENTYSIX_INDEX, value));
00422     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWENTYSIX_INDEX, value));
00423     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_TWENTYSEVEN_INDEX, value));
00424     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_TWENTYSEVEN_INDEX, value));
00425     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_TWENTYEIGHT_INDEX, value));
00426     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_TWENTYEIGHT_INDEX, value));
00427     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_TWENTYNINE_INDEX, value));
00428     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_TWENTYNINE_INDEX, value));
00429     EXPECT_FALSE(bitWizard.testBit(true,  BitMinion::BIT_THIRTY_INDEX, value));
00430     EXPECT_TRUE( bitWizard.testBit(false, BitMinion::BIT_THIRTY_INDEX, value));
00431     EXPECT_TRUE( bitWizard.testBit(true,  BitMinion::BIT_THIRTYONE_INDEX, value));
00432     EXPECT_FALSE(bitWizard.testBit(false, BitMinion::BIT_THIRTYONE_INDEX, value));
00433 }
00434 
00435 TEST(BitWizardTest, TestBitMismatch)
00436 {
00437     BitWizard<uint32_t> bitWizard32;
00438     uint8_t    value8 = 0xAA;
00439 
00440     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_ZERO_INDEX, value8));
00441     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_ZERO_INDEX, value8));
00442     EXPECT_TRUE( bitWizard32.testBit(true,  BitMinion::BIT_ONE_INDEX, value8));
00443     EXPECT_FALSE(bitWizard32.testBit(false, BitMinion::BIT_ONE_INDEX, value8));
00444     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWO_INDEX, value8));
00445     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWO_INDEX, value8));
00446     EXPECT_TRUE( bitWizard32.testBit(true,  BitMinion::BIT_THREE_INDEX, value8));
00447     EXPECT_FALSE(bitWizard32.testBit(false, BitMinion::BIT_THREE_INDEX, value8));
00448     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_FOUR_INDEX, value8));
00449     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_FOUR_INDEX, value8));
00450     EXPECT_TRUE( bitWizard32.testBit(true,  BitMinion::BIT_FIVE_INDEX, value8));
00451     EXPECT_FALSE(bitWizard32.testBit(false, BitMinion::BIT_FIVE_INDEX, value8));
00452     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_SIX_INDEX, value8));
00453     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_SIX_INDEX, value8));
00454     EXPECT_TRUE( bitWizard32.testBit(true,  BitMinion::BIT_SEVEN_INDEX, value8));
00455     EXPECT_FALSE(bitWizard32.testBit(false, BitMinion::BIT_SEVEN_INDEX, value8));
00457     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_EIGHT_INDEX, value8));
00458     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_EIGHT_INDEX, value8));
00459     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_NINE_INDEX, value8));
00460     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_NINE_INDEX, value8));
00461     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TEN_INDEX, value8));
00462     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TEN_INDEX, value8));
00463     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_ELEVEN_INDEX, value8));
00464     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_ELEVEN_INDEX, value8));
00465     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWELVE_INDEX, value8));
00466     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWELVE_INDEX, value8));
00467     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_THIRTEEN_INDEX, value8));
00468     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_THIRTEEN_INDEX, value8));
00469     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_FOURTEEN_INDEX, value8));
00470     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_FOURTEEN_INDEX, value8));
00471     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_FIFTEEN_INDEX, value8));
00472     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_FIFTEEN_INDEX, value8));
00473     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_SIXTEEN_INDEX, value8));
00474     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_SIXTEEN_INDEX, value8));
00475     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_SEVENTEEN_INDEX, value8));
00476     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_SEVENTEEN_INDEX, value8));
00477     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_EIGHTEEN_INDEX, value8));
00478     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_EIGHTEEN_INDEX, value8));
00479     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_NINETEEN_INDEX, value8));
00480     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_NINETEEN_INDEX, value8));
00481     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTY_INDEX, value8));
00482     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTY_INDEX, value8));
00483     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYONE_INDEX, value8));
00484     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYONE_INDEX, value8));
00485     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYTWO_INDEX, value8));
00486     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYTWO_INDEX, value8));
00487     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYTHREE_INDEX, value8));
00488     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYTHREE_INDEX, value8));
00489     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYFOUR_INDEX, value8));
00490     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYFOUR_INDEX, value8));
00491     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYFIVE_INDEX, value8));
00492     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYFIVE_INDEX, value8));
00493     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYSIX_INDEX, value8));
00494     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYSIX_INDEX, value8));
00495     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYSEVEN_INDEX, value8));
00496     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYSEVEN_INDEX, value8));
00497     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYEIGHT_INDEX, value8));
00498     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYEIGHT_INDEX, value8));
00499     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_TWENTYNINE_INDEX, value8));
00500     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_TWENTYNINE_INDEX, value8));
00501     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_THIRTY_INDEX, value8));
00502     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_THIRTY_INDEX, value8));
00503     EXPECT_FALSE(bitWizard32.testBit(true,  BitMinion::BIT_THIRTYONE_INDEX, value8));
00504     EXPECT_TRUE( bitWizard32.testBit(false, BitMinion::BIT_THIRTYONE_INDEX, value8));
00505 
00506     BitWizard<uint8_t> bitWizard8;
00507     uint32_t value32 = 0xAAAAAAAA;
00508 
00509     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_ZERO_INDEX, value32));
00510     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_ZERO_INDEX, value32));
00511     EXPECT_TRUE( bitWizard8.testBit(true,  BitMinion::BIT_ONE_INDEX, value32));
00512     EXPECT_FALSE(bitWizard8.testBit(false, BitMinion::BIT_ONE_INDEX, value32));
00513     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWO_INDEX, value32));
00514     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWO_INDEX, value32));
00515     EXPECT_TRUE( bitWizard8.testBit(true,  BitMinion::BIT_THREE_INDEX, value32));
00516     EXPECT_FALSE(bitWizard8.testBit(false, BitMinion::BIT_THREE_INDEX, value32));
00517     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_FOUR_INDEX, value32));
00518     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_FOUR_INDEX, value32));
00519     EXPECT_TRUE( bitWizard8.testBit(true,  BitMinion::BIT_FIVE_INDEX, value32));
00520     EXPECT_FALSE(bitWizard8.testBit(false, BitMinion::BIT_FIVE_INDEX, value32));
00521     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_SIX_INDEX, value32));
00522     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_SIX_INDEX, value32));
00523     EXPECT_TRUE( bitWizard8.testBit(true,  BitMinion::BIT_SEVEN_INDEX, value32));
00524     EXPECT_FALSE(bitWizard8.testBit(false, BitMinion::BIT_SEVEN_INDEX, value32));
00526     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_EIGHT_INDEX, value32));
00527     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_EIGHT_INDEX, value32));
00528     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_NINE_INDEX, value32));
00529     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_NINE_INDEX, value32));
00530     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TEN_INDEX, value32));
00531     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TEN_INDEX, value32));
00532     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_ELEVEN_INDEX, value32));
00533     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_ELEVEN_INDEX, value32));
00534     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWELVE_INDEX, value32));
00535     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWELVE_INDEX, value32));
00536     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_THIRTEEN_INDEX, value32));
00537     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_THIRTEEN_INDEX, value32));
00538     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_FOURTEEN_INDEX, value32));
00539     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_FOURTEEN_INDEX, value32));
00540     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_FIFTEEN_INDEX, value32));
00541     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_FIFTEEN_INDEX, value32));
00542     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_SIXTEEN_INDEX, value32));
00543     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_SIXTEEN_INDEX, value32));
00544     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_SEVENTEEN_INDEX, value32));
00545     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_SEVENTEEN_INDEX, value32));
00546     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_EIGHTEEN_INDEX, value32));
00547     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_EIGHTEEN_INDEX, value32));
00548     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_NINETEEN_INDEX, value32));
00549     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_NINETEEN_INDEX, value32));
00550     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTY_INDEX, value32));
00551     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTY_INDEX, value32));
00552     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYONE_INDEX, value32));
00553     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYONE_INDEX, value32));
00554     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYTWO_INDEX, value32));
00555     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYTWO_INDEX, value32));
00556     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYTHREE_INDEX, value32));
00557     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYTHREE_INDEX, value32));
00558     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYFOUR_INDEX, value32));
00559     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYFOUR_INDEX, value32));
00560     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYFIVE_INDEX, value32));
00561     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYFIVE_INDEX, value32));
00562     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYSIX_INDEX, value32));
00563     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYSIX_INDEX, value32));
00564     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYSEVEN_INDEX, value32));
00565     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYSEVEN_INDEX, value32));
00566     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYEIGHT_INDEX, value32));
00567     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYEIGHT_INDEX, value32));
00568     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_TWENTYNINE_INDEX, value32));
00569     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_TWENTYNINE_INDEX, value32));
00570     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_THIRTY_INDEX, value32));
00571     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_THIRTY_INDEX, value32));
00572     EXPECT_FALSE(bitWizard8.testBit(true,  BitMinion::BIT_THIRTYONE_INDEX, value32));
00573     EXPECT_TRUE( bitWizard8.testBit(false, BitMinion::BIT_THIRTYONE_INDEX, value32));
00574 }
00575 
00576 TEST(BitWizardTest, SetBit8)
00577 {
00578     BitWizard<uint8_t> bitWizard;
00579 
00580     uint8_t registerValue = 0x00;
00581     bitWizard.setBit(true, BitMinion::BIT_ZERO_INDEX, registerValue);
00582     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00583     bitWizard.setBit(false, BitMinion::BIT_ZERO_INDEX, registerValue);
00584     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00585 
00586     registerValue = 0xFF;
00587     bitWizard.setBit(true, BitMinion::BIT_SEVEN_INDEX, registerValue);
00588     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, registerValue));
00589     bitWizard.setBit(false, BitMinion::BIT_SEVEN_INDEX, registerValue);
00590     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, registerValue));
00591 }
00592 
00593 TEST(BitWizardTest, SetBit16)
00594 {
00595     BitWizard<uint16_t> bitWizard;
00596 
00597     uint16_t registerValue = 0x0000;
00598     bitWizard.setBit(true, BitMinion::BIT_ZERO_INDEX, registerValue);
00599     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00600     bitWizard.setBit(false, BitMinion::BIT_ZERO_INDEX, registerValue);
00601     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00602 
00603     registerValue = 0xFFFF;
00604     bitWizard.setBit(true, BitMinion::BIT_FIFTEEN_INDEX, registerValue);
00605     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, registerValue));
00606     bitWizard.setBit(false, BitMinion::BIT_FIFTEEN_INDEX, registerValue);
00607     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, registerValue));
00608 }
00609 
00610 TEST(BitWizardTest, SetBit32)
00611 {
00612     BitWizard<uint32_t> bitWizard;
00613 
00614     uint32_t registerValue = 0x00000000;
00615     bitWizard.setBit(true, BitMinion::BIT_ZERO_INDEX, registerValue);
00616     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00617     bitWizard.setBit(false, BitMinion::BIT_ZERO_INDEX, registerValue);
00618     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00619 
00620     registerValue = 0xFFFFFFFF;
00621     bitWizard.setBit(true, BitMinion::BIT_THIRTYONE_INDEX, registerValue);
00622     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, registerValue));
00623     bitWizard.setBit(false, BitMinion::BIT_THIRTYONE_INDEX, registerValue);
00624     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, registerValue));
00625 }
00626 
00627 TEST(BitWizardTest, ToggleBit8)
00628 {
00629     BitWizard<uint8_t> bitWizard;
00630 
00631     uint8_t registerValue = 0x00;
00632     bitWizard.toggleBit(BitMinion::BIT_ZERO_INDEX, registerValue);
00633     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00634     bitWizard.toggleBit(BitMinion::BIT_ZERO_INDEX, registerValue);
00635     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00636 
00637     registerValue = 0xFF;
00638     bitWizard.toggleBit(BitMinion::BIT_SEVEN_INDEX, registerValue);
00639     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, registerValue));
00640     bitWizard.toggleBit(BitMinion::BIT_SEVEN_INDEX, registerValue);
00641     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_SEVEN_INDEX, registerValue));
00642 }
00643 
00644 TEST(BitWizardTest, ToggleBit16)
00645 {
00646     BitWizard<uint16_t> bitWizard;
00647 
00648     uint16_t registerValue = 0x0000;
00649     bitWizard.toggleBit(BitMinion::BIT_ZERO_INDEX, registerValue);
00650     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00651     bitWizard.toggleBit(BitMinion::BIT_ZERO_INDEX, registerValue);
00652     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00653 
00654     registerValue = 0xFFFF;
00655     bitWizard.toggleBit(BitMinion::BIT_FIFTEEN_INDEX, registerValue);
00656     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, registerValue));
00657     bitWizard.toggleBit(BitMinion::BIT_FIFTEEN_INDEX, registerValue);
00658     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_FIFTEEN_INDEX, registerValue));
00659 }
00660 
00661 TEST(BitWizardTest, ToggleBit32)
00662 {
00663     BitWizard<uint32_t> bitWizard;
00664 
00665     uint32_t registerValue = 0x00000000;
00666     bitWizard.toggleBit(BitMinion::BIT_ZERO_INDEX, registerValue);
00667     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00668     bitWizard.toggleBit(BitMinion::BIT_ZERO_INDEX, registerValue);
00669     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_ZERO_INDEX, registerValue));
00670 
00671     registerValue = 0xFFFFFFFF;
00672     bitWizard.toggleBit(BitMinion::BIT_THIRTYONE_INDEX, registerValue);
00673     EXPECT_FALSE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, registerValue));
00674     bitWizard.toggleBit(BitMinion::BIT_THIRTYONE_INDEX, registerValue);
00675     EXPECT_TRUE(bitWizard.getBit(BitMinion::BIT_THIRTYONE_INDEX, registerValue));
00676 }
00677 
00678 TEST(BitWizardTest, GetBits8)
00679 {
00680     BitWizard<uint8_t> bitWizard;
00681 
00682     uint8_t value = 0;
00683 
00684     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value));
00685     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value));
00686     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value));
00687     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00688     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00689     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value));
00690     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00691     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00692 
00693     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value));
00694     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value));
00695     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value));
00696     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00697     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00698     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value));
00700     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00701     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00702 
00703     value = -1;
00704 
00705     EXPECT_EQ(0x01, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value));
00706     EXPECT_EQ(0x03, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value));
00707     EXPECT_EQ(0x07, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value));
00708     EXPECT_EQ(0x0F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00709     EXPECT_EQ(0x1F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00710     EXPECT_EQ(0x3F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value));
00711     EXPECT_EQ(0x7F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00712     EXPECT_EQ(0xFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00713 
00714     EXPECT_EQ(0x01, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value));
00715     EXPECT_EQ(0x03, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value));
00716     EXPECT_EQ(0x07, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value));
00717     EXPECT_EQ(0x0F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00718     EXPECT_EQ(0x1F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00719     EXPECT_EQ(0x3F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value));
00721     EXPECT_EQ(0x3F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00722     EXPECT_EQ(0x3F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00723 }
00724 
00725 TEST(BitWizardTest, GetBits16)
00726 {
00727     BitWizard<uint16_t> bitWizard;
00728 
00729     uint16_t value = 0;
00730 
00731     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value));
00732     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value));
00733     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value));
00734     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00735     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00736     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value));
00737     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00738     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00739     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value));
00740     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value));
00741     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00742     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00743     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00744     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00745     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00746     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00747 
00748     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value));
00749     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value));
00750     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value));
00751     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00752     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00753     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value));
00754     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00755     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00756     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value));
00757     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value));
00758     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00759     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00760     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00761     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00763     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00764     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00765 
00766     value = -1;
00767 
00768     EXPECT_EQ(0x0001, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value));
00769     EXPECT_EQ(0x0003, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value));
00770     EXPECT_EQ(0x0007, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value));
00771     EXPECT_EQ(0x000F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00772     EXPECT_EQ(0x001F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00773     EXPECT_EQ(0x003F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value));
00774     EXPECT_EQ(0x007F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00775     EXPECT_EQ(0x00FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00776     EXPECT_EQ(0x01FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value));
00777     EXPECT_EQ(0x03FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value));
00778     EXPECT_EQ(0x07FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00779     EXPECT_EQ(0x0FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00780     EXPECT_EQ(0x1FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00781     EXPECT_EQ(0x3FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00782     EXPECT_EQ(0x7FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00783     EXPECT_EQ(0xFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00784 
00785     EXPECT_EQ(0x0001, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value));
00786     EXPECT_EQ(0x0003, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value));
00787     EXPECT_EQ(0x0007, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value));
00788     EXPECT_EQ(0x000F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00789     EXPECT_EQ(0x001F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00790     EXPECT_EQ(0x003F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value));
00791     EXPECT_EQ(0x007F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00792     EXPECT_EQ(0x00FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00793     EXPECT_EQ(0x01FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value));
00794     EXPECT_EQ(0x03FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value));
00795     EXPECT_EQ(0x07FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00796     EXPECT_EQ(0x0FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00797     EXPECT_EQ(0x1FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00798     EXPECT_EQ(0x3FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00800     EXPECT_EQ(0x3FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00801     EXPECT_EQ(0x3FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00802 }
00803 
00804 TEST(BitWizardTest, GetBits32)
00805 {
00806     BitWizard<uint32_t> bitWizard;
00807 
00808     uint32_t value = 0;
00809 
00810     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value));
00811     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value));
00812     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value));
00813     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00814     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00815     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value));
00816     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00817     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00818     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value));
00819     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value));
00820     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00821     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00822     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00823     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00824     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00825     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00826     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value));
00827     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value));
00828     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINETEEN_BIT_MASK, value));
00829     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTY_BIT_MASK, value));
00830     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value));
00831     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value));
00832     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value));
00833     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value));
00834     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value));
00835     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value));
00836     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value));
00837     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value));
00838     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value));
00839     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTY_BIT_MASK, value));
00840     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value));
00841     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value));
00842 
00843     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value));
00844     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value));
00845     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value));
00846     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00847     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00848     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value));
00849     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00850     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00851     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value));
00852     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value));
00853     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00854     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00855     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00856     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00857     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00858     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00859     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value));
00860     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value));
00861     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINETEEN_BIT_MASK, value));
00862     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTY_BIT_MASK, value));
00863     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value));
00864     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value));
00865     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value));
00866     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value));
00867     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value));
00868     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value));
00869     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value));
00870     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value));
00871     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value));
00872     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTY_BIT_MASK, value));
00874     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value));
00875     EXPECT_EQ(0, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value));
00876 
00877     value = -1;
00878 
00879     EXPECT_EQ(0x00000001, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value));
00880     EXPECT_EQ(0x00000003, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value));
00881     EXPECT_EQ(0x00000007, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value));
00882     EXPECT_EQ(0x0000000F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00883     EXPECT_EQ(0x0000001F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00884     EXPECT_EQ(0x0000003F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value));
00885     EXPECT_EQ(0x0000007F, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00886     EXPECT_EQ(0x000000FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00887     EXPECT_EQ(0x000001FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value));
00888     EXPECT_EQ(0x000003FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value));
00889     EXPECT_EQ(0x000007FF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00890     EXPECT_EQ(0x00000FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00891     EXPECT_EQ(0x00001FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00892     EXPECT_EQ(0x00003FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00893     EXPECT_EQ(0x00007FFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00894     EXPECT_EQ(0x0000FFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00895     EXPECT_EQ(0x0001FFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value));
00896     EXPECT_EQ(0x0003FFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value));
00897     EXPECT_EQ(0x0007FFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINETEEN_BIT_MASK, value));
00898     EXPECT_EQ(0x000FFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTY_BIT_MASK, value));
00899     EXPECT_EQ(0x001FFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value));
00900     EXPECT_EQ(0x003FFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value));
00901     EXPECT_EQ(0x007FFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value));
00902     EXPECT_EQ(0x00FFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value));
00903     EXPECT_EQ(0x01FFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value));
00904     EXPECT_EQ(0x03FFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value));
00905     EXPECT_EQ(0x07FFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value));
00906     EXPECT_EQ(0x0FFFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value));
00907     EXPECT_EQ(0x1FFFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value));
00908     EXPECT_EQ(0x3FFFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTY_BIT_MASK, value));
00909     EXPECT_EQ(0x7FFFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value));
00910     EXPECT_EQ(0xFFFFFFFF, bitWizard.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value));
00911 
00912     EXPECT_EQ(0x00000001, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value));
00913     EXPECT_EQ(0x00000003, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value));
00914     EXPECT_EQ(0x00000007, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value));
00915     EXPECT_EQ(0x0000000F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value));
00916     EXPECT_EQ(0x0000001F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value));
00917     EXPECT_EQ(0x0000003F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value));
00918     EXPECT_EQ(0x0000007F, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value));
00919     EXPECT_EQ(0x000000FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value));
00920     EXPECT_EQ(0x000001FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value));
00921     EXPECT_EQ(0x000003FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value));
00922     EXPECT_EQ(0x000007FF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value));
00923     EXPECT_EQ(0x00000FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value));
00924     EXPECT_EQ(0x00001FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value));
00925     EXPECT_EQ(0x00003FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value));
00926     EXPECT_EQ(0x00007FFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value));
00927     EXPECT_EQ(0x0000FFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value));
00928     EXPECT_EQ(0x0001FFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value));
00929     EXPECT_EQ(0x0003FFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value));
00930     EXPECT_EQ(0x0007FFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINETEEN_BIT_MASK, value));
00931     EXPECT_EQ(0x000FFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTY_BIT_MASK, value));
00932     EXPECT_EQ(0x001FFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value));
00933     EXPECT_EQ(0x003FFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value));
00934     EXPECT_EQ(0x007FFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value));
00935     EXPECT_EQ(0x00FFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value));
00936     EXPECT_EQ(0x01FFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value));
00937     EXPECT_EQ(0x03FFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value));
00938     EXPECT_EQ(0x07FFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value));
00939     EXPECT_EQ(0x0FFFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value));
00940     EXPECT_EQ(0x1FFFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value));
00941     EXPECT_EQ(0x3FFFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTY_BIT_MASK, value));
00943     EXPECT_EQ(0x3FFFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value));
00944     EXPECT_EQ(0x3FFFFFFF, bitWizard.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value));
00945 }
00946 
00947 TEST(BitWizardTest, GetBitsMismatch)
00948 {
00949     BitWizard<uint32_t> bitWizard32;
00950     uint8_t    value8 = 0xFF;
00951 
00952     EXPECT_EQ(0x00000001, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value8));
00953     EXPECT_EQ(0x00000003, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value8));
00954     EXPECT_EQ(0x00000007, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value8));
00955     EXPECT_EQ(0x0000000F, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value8));
00956     EXPECT_EQ(0x0000001F, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value8));
00957     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value8));
00958     EXPECT_EQ(0x0000007F, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value8));
00959     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value8));
00960     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value8));
00961     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value8));
00962     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value8));
00963     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value8));
00964     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value8));
00965     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value8));
00966     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value8));
00967     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value8));
00968     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value8));
00969     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value8));
00970     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINETEEN_BIT_MASK, value8));
00971     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTY_BIT_MASK, value8));
00972     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value8));
00973     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value8));
00974     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value8));
00975     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value8));
00976     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value8));
00977     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value8));
00978     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value8));
00979     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value8));
00980     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value8));
00981     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTY_BIT_MASK, value8));
00982     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value8));
00983     EXPECT_EQ(0x000000FF, bitWizard32.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value8));
00984 
00985     EXPECT_EQ(0x00000001, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value8));
00986     EXPECT_EQ(0x00000003, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value8));
00987     EXPECT_EQ(0x00000007, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value8));
00988     EXPECT_EQ(0x0000000F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value8));
00989     EXPECT_EQ(0x0000001F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value8));
00990     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value8));
00991     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value8));
00992     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value8));
00993     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value8));
00994     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value8));
00995     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value8));
00996     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value8));
00997     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value8));
00998     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value8));
00999     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value8));
01000     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value8));
01001     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value8));
01002     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value8));
01003     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINETEEN_BIT_MASK, value8));
01004     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTY_BIT_MASK, value8));
01005     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value8));
01006     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value8));
01007     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value8));
01008     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value8));
01009     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value8));
01010     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value8));
01011     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value8));
01012     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value8));
01013     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value8));
01014     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTY_BIT_MASK, value8));
01015     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value8));
01016     EXPECT_EQ(0x0000003F, bitWizard32.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value8));
01017 
01018     BitWizard<uint8_t> bitWizard8;
01019     uint32_t value32 = 0xFFFFFFFF;
01020 
01021     EXPECT_EQ(0x01, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value32));
01022     EXPECT_EQ(0x03, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value32));
01023     EXPECT_EQ(0x07, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value32));
01024     EXPECT_EQ(0x0F, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value32));
01025     EXPECT_EQ(0x1F, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value32));
01026     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value32));
01027     EXPECT_EQ(0x7F, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value32));
01028     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value32));
01029     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value32));
01030     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value32));
01031     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value32));
01032     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value32));
01033     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value32));
01034     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value32));
01035     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value32));
01036     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value32));
01037     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value32));
01038     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value32));
01039     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::NINETEEN_BIT_MASK, value32));
01040     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTY_BIT_MASK, value32));
01041     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value32));
01042     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value32));
01043     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value32));
01044     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value32));
01045     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value32));
01046     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value32));
01047     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value32));
01048     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value32));
01049     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value32));
01050     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTY_BIT_MASK, value32));
01051     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value32));
01052     EXPECT_EQ(0xFF, bitWizard8.getBits(BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value32));
01053 
01054     EXPECT_EQ(0x01, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value32));
01055     EXPECT_EQ(0x03, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value32));
01056     EXPECT_EQ(0x07, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value32));
01057     EXPECT_EQ(0x0F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value32));
01058     EXPECT_EQ(0x1F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value32));
01059     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value32));
01060     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value32));
01061     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value32));
01062     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value32));
01063     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value32));
01064     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value32));
01065     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value32));
01066     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value32));
01067     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value32));
01068     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value32));
01069     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value32));
01070     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value32));
01071     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value32));
01072     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::NINETEEN_BIT_MASK, value32));
01073     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTY_BIT_MASK, value32));
01074     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value32));
01075     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value32));
01076     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value32));
01077     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value32));
01078     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value32));
01079     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value32));
01080     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value32));
01081     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value32));
01082     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value32));
01083     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTY_BIT_MASK, value32));
01084     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value32));
01085     EXPECT_EQ(0x3F, bitWizard8.getBits(BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value32));
01086 }
01087 
01088 TEST(BitWizardTest, SetBits8)
01089 {
01090     BitWizard<uint8_t> bitWizard;
01091 
01092     uint8_t value = 0;
01093     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value);
01094     EXPECT_EQ(0, value);
01095     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value);
01096     EXPECT_EQ(0, value);
01097     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value);
01098     EXPECT_EQ(0, value);
01099     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01100     EXPECT_EQ(0, value);
01101     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01102     EXPECT_EQ(0, value);
01103     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value);
01104     EXPECT_EQ(0, value);
01105     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01106     EXPECT_EQ(0, value);
01107     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01108     EXPECT_EQ(0, value);
01109 
01110     value = 0;
01111     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value);
01112     EXPECT_EQ(0x01, value);
01113     value = 0;
01114     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value);
01115     EXPECT_EQ(0x03, value);
01116     value = 0;
01117     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value);
01118     EXPECT_EQ(0x07, value);
01119     value = 0;
01120     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01121     EXPECT_EQ(0x0F, value);
01122     value = 0;
01123     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01124     EXPECT_EQ(0x1F, value);
01125     value = 0;
01126     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value);
01127     EXPECT_EQ(0x3F, value);
01128     value = 0;
01129     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01130     EXPECT_EQ(0x7F, value);
01131     value = 0;
01132     bitWizard.setBits(0xFF, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01133     EXPECT_EQ(0xFF, value);
01134 
01135     value = 0;
01136     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value);
01137     EXPECT_EQ(0x04, value);
01138     value = 0;
01139     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value);
01140     EXPECT_EQ(0x0C, value);
01141     value = 0;
01142     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value);
01143     EXPECT_EQ(0x1C, value);
01144     value = 0;
01145     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01146     EXPECT_EQ(0x3C, value);
01147     value = 0;
01148     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01149     EXPECT_EQ(0x7C, value);
01150     value = 0;
01151     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value);
01152     EXPECT_EQ(0xFC, value);
01153     value = 0;
01154     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01155     EXPECT_EQ(0xFC, value);
01156     value = 0;
01157     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01158     EXPECT_EQ(0xFC, value);
01159 
01160     value = 0x03;
01161     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value);
01162     EXPECT_EQ(0x07, value);
01163     value = 0x03;
01164     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value);
01165     EXPECT_EQ(0x0F, value);
01166     value = 0x03;
01167     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value);
01168     EXPECT_EQ(0x1F, value);
01169     value = 0x03;
01170     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01171     EXPECT_EQ(0x3F, value);
01172     value = 0x03;
01173     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01174     EXPECT_EQ(0x7F, value);
01175     value = 0x03;
01176     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value);
01177     EXPECT_EQ(0xFF, value);
01178     value = 0x03;
01179     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01180     EXPECT_EQ(0xFF, value);
01181     value = 0x03;
01182     bitWizard.setBits(0xFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01183     EXPECT_EQ(0xFF, value);
01184 }
01185 
01186 TEST(BitWizardTest, SetBits16)
01187 {
01188     BitWizard<uint16_t> bitWizard;
01189 
01190     uint16_t value = 0;
01191     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value);
01192     EXPECT_EQ(0, value);
01193     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value);
01194     EXPECT_EQ(0, value);
01195     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value);
01196     EXPECT_EQ(0, value);
01197     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01198     EXPECT_EQ(0, value);
01199     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01200     EXPECT_EQ(0, value);
01201     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value);
01202     EXPECT_EQ(0, value);
01203     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01204     EXPECT_EQ(0, value);
01205     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01206     EXPECT_EQ(0, value);
01207     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value);
01208     EXPECT_EQ(0, value);
01209     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value);
01210     EXPECT_EQ(0, value);
01211     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01212     EXPECT_EQ(0, value);
01213     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01214     EXPECT_EQ(0, value);
01215     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01216     EXPECT_EQ(0, value);
01217     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01218     EXPECT_EQ(0, value);
01219     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01220     EXPECT_EQ(0, value);
01221     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01222     EXPECT_EQ(0, value);
01223 
01224     value = 0;
01225     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value);
01226     EXPECT_EQ(0x0001, value);
01227     value = 0;
01228     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value);
01229     EXPECT_EQ(0x0003, value);
01230     value = 0;
01231     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value);
01232     EXPECT_EQ(0x0007, value);
01233     value = 0;
01234     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01235     EXPECT_EQ(0x000F, value);
01236     value = 0;
01237     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01238     EXPECT_EQ(0x001F, value);
01239     value = 0;
01240     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value);
01241     EXPECT_EQ(0x003F, value);
01242     value = 0;
01243     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01244     EXPECT_EQ(0x007F, value);
01245     value = 0;
01246     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01247     EXPECT_EQ(0x00FF, value);
01248     value = 0;
01249     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value);
01250     EXPECT_EQ(0x01FF, value);
01251     value = 0;
01252     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value);
01253     EXPECT_EQ(0x03FF, value);
01254     value = 0;
01255     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01256     EXPECT_EQ(0x07FF, value);
01257     value = 0;
01258     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01259     EXPECT_EQ(0x0FFF, value);
01260     value = 0;
01261     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01262     EXPECT_EQ(0x1FFF, value);
01263     value = 0;
01264     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01265     EXPECT_EQ(0x3FFF, value);
01266     value = 0;
01267     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01268     EXPECT_EQ(0x7FFF, value);
01269     value = 0;
01270     bitWizard.setBits(0xFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01271     EXPECT_EQ(0xFFFF, value);
01272 
01273     value = 0;
01274     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value);
01275     EXPECT_EQ(0x0004, value);
01276     value = 0;
01277     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value);
01278     EXPECT_EQ(0x000C, value);
01279     value = 0;
01280     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value);
01281     EXPECT_EQ(0x001C, value);
01282     value = 0;
01283     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01284     EXPECT_EQ(0x003C, value);
01285     value = 0;
01286     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01287     EXPECT_EQ(0x007C, value);
01288     value = 0;
01289     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value);
01290     EXPECT_EQ(0x00FC, value);
01291     value = 0;
01292     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01293     EXPECT_EQ(0x01FC, value);
01294     value = 0;
01295     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01296     EXPECT_EQ(0x03FC, value);
01297     value = 0;
01298     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value);
01299     EXPECT_EQ(0x07FC, value);
01300     value = 0;
01301     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value);
01302     EXPECT_EQ(0x0FFC, value);
01303     value = 0;
01304     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01305     EXPECT_EQ(0x1FFC, value);
01306     value = 0;
01307     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01308     EXPECT_EQ(0x3FFC, value);
01309     value = 0;
01310     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01311     EXPECT_EQ(0x7FFC, value);
01312     value = 0;
01313     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01314     EXPECT_EQ(0xFFFC, value);
01315     value = 0;
01316     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01317     EXPECT_EQ(0xFFFC, value);
01318     value = 0;
01319     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01320     EXPECT_EQ(0xFFFC, value);
01321 
01322     value = 0x0003;
01323     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value);
01324     EXPECT_EQ(0x0007, value);
01325     value = 0x0003;
01326     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value);
01327     EXPECT_EQ(0x000F, value);
01328     value = 0x0003;
01329     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value);
01330     EXPECT_EQ(0x001F, value);
01331     value = 0x0003;
01332     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01333     EXPECT_EQ(0x003F, value);
01334     value = 0x0003;
01335     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01336     EXPECT_EQ(0x007F, value);
01337     value = 0x0003;
01338     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value);
01339     EXPECT_EQ(0x00FF, value);
01340     value = 0x0003;
01341     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01342     EXPECT_EQ(0x01FF, value);
01343     value = 0x0003;
01344     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01345     EXPECT_EQ(0x03FF, value);
01346     value = 0x0003;
01347     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value);
01348     EXPECT_EQ(0x07FF, value);
01349     value = 0x0003;
01350     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value);
01351     EXPECT_EQ(0x0FFF, value);
01352     value = 0x0003;
01353     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01354     EXPECT_EQ(0x1FFF, value);
01355     value = 0x0003;
01356     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01357     EXPECT_EQ(0x3FFF, value);
01358     value = 0x0003;
01359     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01360     EXPECT_EQ(0x7FFF, value);
01361     value = 0x0003;
01362     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01363     EXPECT_EQ(0xFFFF, value);
01364     value = 0x0003;
01365     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01366     EXPECT_EQ(0xFFFF, value);
01367     value = 0x0003;
01368     bitWizard.setBits(0xFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01369     EXPECT_EQ(0xFFFF, value);
01370 }
01371 
01372 TEST(BitWizardTest, SetBits32)
01373 {
01374     BitWizard<uint32_t> bitWizard;
01375 
01376     uint32_t value = 0;
01377     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value);
01378     EXPECT_EQ(0, value);
01379     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value);
01380     EXPECT_EQ(0, value);
01381     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value);
01382     EXPECT_EQ(0, value);
01383     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01384     EXPECT_EQ(0, value);
01385     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01386     EXPECT_EQ(0, value);
01387     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value);
01388     EXPECT_EQ(0, value);
01389     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01390     EXPECT_EQ(0, value);
01391     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01392     EXPECT_EQ(0, value);
01393     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value);
01394     EXPECT_EQ(0, value);
01395     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value);
01396     EXPECT_EQ(0, value);
01397     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01398     EXPECT_EQ(0, value);
01399     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01400     EXPECT_EQ(0, value);
01401     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01402     EXPECT_EQ(0, value);
01403     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01404     EXPECT_EQ(0, value);
01405     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01406     EXPECT_EQ(0, value);
01407     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01408     EXPECT_EQ(0, value);
01409     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value);
01410     EXPECT_EQ(0, value);
01411     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value);
01412     EXPECT_EQ(0, value);
01413     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::NINETEEN_BIT_MASK, value);
01414     EXPECT_EQ(0, value);
01415     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTY_BIT_MASK, value);
01416     EXPECT_EQ(0, value);
01417     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value);
01418     EXPECT_EQ(0, value);
01419     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value);
01420     EXPECT_EQ(0, value);
01421     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value);
01422     EXPECT_EQ(0, value);
01423     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value);
01424     EXPECT_EQ(0, value);
01425     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value);
01426     EXPECT_EQ(0, value);
01427     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value);
01428     EXPECT_EQ(0, value);
01429     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value);
01430     EXPECT_EQ(0, value);
01431     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value);
01432     EXPECT_EQ(0, value);
01433     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value);
01434     EXPECT_EQ(0, value);
01435     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTY_BIT_MASK, value);
01436     EXPECT_EQ(0, value);
01437     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value);
01438     EXPECT_EQ(0, value);
01439     bitWizard.setBits(0, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value);
01440     EXPECT_EQ(0, value);
01441 
01442     value = 0;
01443     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::ONE_BIT_MASK, value);
01444     EXPECT_EQ(0x00000001, value);
01445     value = 0;
01446     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWO_BIT_MASK, value);
01447     EXPECT_EQ(0x00000003, value);
01448     value = 0;
01449     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THREE_BIT_MASK, value);
01450     EXPECT_EQ(0x00000007, value);
01451     value = 0;
01452     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01453     EXPECT_EQ(0x0000000F, value);
01454     value = 0;
01455     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01456     EXPECT_EQ(0x0000001F, value);
01457     value = 0;
01458     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SIX_BIT_MASK, value);
01459     EXPECT_EQ(0x0000003F, value);
01460     value = 0;
01461     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01462     EXPECT_EQ(0x0000007F, value);
01463     value = 0;
01464     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01465     EXPECT_EQ(0x000000FF, value);
01466     value = 0;
01467     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::NINE_BIT_MASK, value);
01468     EXPECT_EQ(0x000001FF, value);
01469     value = 0;
01470     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TEN_BIT_MASK, value);
01471     EXPECT_EQ(0x000003FF, value);
01472     value = 0;
01473     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01474     EXPECT_EQ(0x000007FF, value);
01475     value = 0;
01476     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01477     EXPECT_EQ(0x00000FFF, value);
01478     value = 0;
01479     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01480     EXPECT_EQ(0x00001FFF, value);
01481     value = 0;
01482     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01483     EXPECT_EQ(0x00003FFF, value);
01484     value = 0;
01485     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01486     EXPECT_EQ(0x00007FFF, value);
01487     value = 0;
01488     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01489     EXPECT_EQ(0x0000FFFF, value);
01490     value = 0;
01491     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value);
01492     EXPECT_EQ(0x0001FFFF, value);
01493     value = 0;
01494     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value);
01495     EXPECT_EQ(0x0003FFFF, value);
01496     value = 0;
01497     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::NINETEEN_BIT_MASK, value);
01498     EXPECT_EQ(0x0007FFFF, value);
01499     value = 0;
01500     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTY_BIT_MASK, value);
01501     EXPECT_EQ(0x000FFFFF, value);
01502     value = 0;
01503     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value);
01504     EXPECT_EQ(0x001FFFFF, value);
01505     value = 0;
01506     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value);
01507     EXPECT_EQ(0x003FFFFF, value);
01508     value = 0;
01509     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value);
01510     EXPECT_EQ(0x007FFFFF, value);
01511     value = 0;
01512     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value);
01513     EXPECT_EQ(0x00FFFFFF, value);
01514     value = 0;
01515     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value);
01516     EXPECT_EQ(0x01FFFFFF, value);
01517     value = 0;
01518     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value);
01519     EXPECT_EQ(0x03FFFFFF, value);
01520     value = 0;
01521     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value);
01522     EXPECT_EQ(0x07FFFFFF, value);
01523     value = 0;
01524     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value);
01525     EXPECT_EQ(0x0FFFFFFF, value);
01526     value = 0;
01527     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value);
01528     EXPECT_EQ(0x1FFFFFFF, value);
01529     value = 0;
01530     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTY_BIT_MASK, value);
01531     EXPECT_EQ(0x3FFFFFFF, value);
01532     value = 0;
01533     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value);
01534     EXPECT_EQ(0x7FFFFFFF, value);
01535     value = 0;
01536     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_ZERO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value);
01537     EXPECT_EQ(0xFFFFFFFF, value);
01538 
01539     value = 0;
01540     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value);
01541     EXPECT_EQ(0x00000004, value);
01542     value = 0;
01543     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value);
01544     EXPECT_EQ(0x0000000C, value);
01545     value = 0;
01546     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value);
01547     EXPECT_EQ(0x0000001C, value);
01548     value = 0;
01549     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01550     EXPECT_EQ(0x0000003C, value);
01551     value = 0;
01552     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01553     EXPECT_EQ(0x0000007C, value);
01554     value = 0;
01555     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value);
01556     EXPECT_EQ(0x000000FC, value);
01557     value = 0;
01558     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01559     EXPECT_EQ(0x000001FC, value);
01560     value = 0;
01561     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01562     EXPECT_EQ(0x000003FC, value);
01563     value = 0;
01564     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value);
01565     EXPECT_EQ(0x000007FC, value);
01566     value = 0;
01567     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value);
01568     EXPECT_EQ(0x00000FFC, value);
01569     value = 0;
01570     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01571     EXPECT_EQ(0x00001FFC, value);
01572     value = 0;
01573     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01574     EXPECT_EQ(0x00003FFC, value);
01575     value = 0;
01576     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01577     EXPECT_EQ(0x00007FFC, value);
01578     value = 0;
01579     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01580     EXPECT_EQ(0x0000FFFC, value);
01581     value = 0;
01582     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01583     EXPECT_EQ(0x0001FFFC, value);
01584     value = 0;
01585     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01586     EXPECT_EQ(0x0003FFFC, value);
01587     value = 0;
01588     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value);
01589     EXPECT_EQ(0x0007FFFC, value);
01590     value = 0;
01591     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value);
01592     EXPECT_EQ(0x000FFFFC, value);
01593     value = 0;
01594     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::NINETEEN_BIT_MASK, value);
01595     EXPECT_EQ(0x001FFFFC, value);
01596     value = 0;
01597     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTY_BIT_MASK, value);
01598     EXPECT_EQ(0x003FFFFC, value);
01599     value = 0;
01600     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value);
01601     EXPECT_EQ(0x007FFFFC, value);
01602     value = 0;
01603     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value);
01604     EXPECT_EQ(0x00FFFFFC, value);
01605     value = 0;
01606     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value);
01607     EXPECT_EQ(0x01FFFFFC, value);
01608     value = 0;
01609     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value);
01610     EXPECT_EQ(0x03FFFFFC, value);
01611     value = 0;
01612     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value);
01613     EXPECT_EQ(0x07FFFFFC, value);
01614     value = 0;
01615     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value);
01616     EXPECT_EQ(0x0FFFFFFC, value);
01617     value = 0;
01618     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value);
01619     EXPECT_EQ(0x1FFFFFFC, value);
01620     value = 0;
01621     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value);
01622     EXPECT_EQ(0x3FFFFFFC, value);
01623     value = 0;
01624     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value);
01625     EXPECT_EQ(0x7FFFFFFC, value);
01626     value = 0;
01627     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTY_BIT_MASK, value);
01628     EXPECT_EQ(0xFFFFFFFC, value);
01629     value = 0;
01630     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value);
01631     EXPECT_EQ(0xFFFFFFFC, value);
01632     value = 0;
01633     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value);
01634     EXPECT_EQ(0xFFFFFFFC, value);
01635 
01636     value = 0x00000003;
01637     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ONE_BIT_MASK, value);
01638     EXPECT_EQ(0x00000007, value);
01639     value = 0x00000003;
01640     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWO_BIT_MASK, value);
01641     EXPECT_EQ(0x0000000F, value);
01642     value = 0x00000003;
01643     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THREE_BIT_MASK, value);
01644     EXPECT_EQ(0x0000001F, value);
01645     value = 0x00000003;
01646     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOUR_BIT_MASK, value);
01647     EXPECT_EQ(0x0000003F, value);
01648     value = 0x00000003;
01649     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIVE_BIT_MASK, value);
01650     EXPECT_EQ(0x0000007F, value);
01651     value = 0x00000003;
01652     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIX_BIT_MASK, value);
01653     EXPECT_EQ(0x000000FF, value);
01654     value = 0x00000003;
01655     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVEN_BIT_MASK, value);
01656     EXPECT_EQ(0x000001FF, value);
01657     value = 0x00000003;
01658     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHT_BIT_MASK, value);
01659     EXPECT_EQ(0x000003FF, value);
01660     value = 0x00000003;
01661     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::NINE_BIT_MASK, value);
01662     EXPECT_EQ(0x000007FF, value);
01663     value = 0x00000003;
01664     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TEN_BIT_MASK, value);
01665     EXPECT_EQ(0x00000FFF, value);
01666     value = 0x00000003;
01667     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::ELEVEN_BIT_MASK, value);
01668     EXPECT_EQ(0x00001FFF, value);
01669     value = 0x00000003;
01670     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWELVE_BIT_MASK, value);
01671     EXPECT_EQ(0x00003FFF, value);
01672     value = 0x00000003;
01673     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTEEN_BIT_MASK, value);
01674     EXPECT_EQ(0x00007FFF, value);
01675     value = 0x00000003;
01676     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FOURTEEN_BIT_MASK, value);
01677     EXPECT_EQ(0x0000FFFF, value);
01678     value = 0x00000003;
01679     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::FIFTEEN_BIT_MASK, value);
01680     EXPECT_EQ(0x0001FFFF, value);
01681     value = 0x00000003;
01682     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SIXTEEN_BIT_MASK, value);
01683     EXPECT_EQ(0x0003FFFF, value);
01684     value = 0x00000003;
01685     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::SEVENTEEN_BIT_MASK, value);
01686     EXPECT_EQ(0x0007FFFF, value);
01687     value = 0x00000003;
01688     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::EIGHTEEN_BIT_MASK, value);
01689     EXPECT_EQ(0x000FFFFF, value);
01690     value = 0x00000003;
01691     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::NINETEEN_BIT_MASK, value);
01692     EXPECT_EQ(0x001FFFFF, value);
01693     value = 0x00000003;
01694     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTY_BIT_MASK, value);
01695     EXPECT_EQ(0x003FFFFF, value);
01696     value = 0x00000003;
01697     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYONE_BIT_MASK, value);
01698     EXPECT_EQ(0x007FFFFF, value);
01699     value = 0x00000003;
01700     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTWO_BIT_MASK, value);
01701     EXPECT_EQ(0x00FFFFFF, value);
01702     value = 0x00000003;
01703     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYTHREE_BIT_MASK, value);
01704     EXPECT_EQ(0x01FFFFFF, value);
01705     value = 0x00000003;
01706     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFOUR_BIT_MASK, value);
01707     EXPECT_EQ(0x03FFFFFF, value);
01708     value = 0x00000003;
01709     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYFIVE_BIT_MASK, value);
01710     EXPECT_EQ(0x07FFFFFF, value);
01711     value = 0x00000003;
01712     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSIX_BIT_MASK, value);
01713     EXPECT_EQ(0x0FFFFFFF, value);
01714     value = 0x00000003;
01715     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYSEVEN_BIT_MASK, value);
01716     EXPECT_EQ(0x1FFFFFFF, value);
01717     value = 0x00000003;
01718     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYEIGHT_BIT_MASK, value);
01719     EXPECT_EQ(0x3FFFFFFF, value);
01720     value = 0x00000003;
01721     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::TWENTYNINE_BIT_MASK, value);
01722     EXPECT_EQ(0x7FFFFFFF, value);
01723     value = 0x00000003;
01724     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTY_BIT_MASK, value);
01725     EXPECT_EQ(0xFFFFFFFF, value);
01726     value = 0x00000003;
01727     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYONE_BIT_MASK, value);
01728     EXPECT_EQ(0xFFFFFFFF, value);
01729     value = 0x00000003;
01730     bitWizard.setBits(0xFFFFFFFF, BitMinion::BIT_TWO_INDEX, BitMinion::THIRTYTWO_BIT_MASK, value);
01731     EXPECT_EQ(0xFFFFFFFF, value);
01732 }
01733 
01734 int main(int argc, char** argv)
01735 {
01736     testing::InitGoogleTest(&argc, argv);
01737     return RUN_ALL_TESTS();
01738 }


robot_instance
Author(s):
autogenerated on Sat Jun 8 2019 20:43:12