1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #include<__vic/bits.h>
- #include<iostream>
- #include<exception>
- #include<cassert>
- namespace tests {
- void nibble_tests()
- {
- char ch = '\xFA';
- std::cout << std::hex << std::uppercase <<
- __vic::hi_nibble(ch) << ' ' << __vic::lo_nibble(ch) << '\n';
- assert(__vic::hi_nibble(ch) == 0xF);
- assert(__vic::lo_nibble(ch) == 0xA);
- }
- void ones_test()
- {
- std::cout << __vic::lsb_ones<int>(5) << '\n';
- assert(__vic::lsb_ones<int>(5) == 0x1F);
- std::cout << unsigned(__vic::msb_ones<uint8_t>(5)) << '\n';
- assert(__vic::msb_ones<uint8_t>(5) == uint8_t('\xF8'));
- }
- void get_lsbs_test()
- {
- std::cout << __vic::get_lsbs(~int(0), 6) << '\n';
- assert(__vic::get_lsbs(~int(0), 6) == 0x3F);
- }
- void ord_test()
- {
- char ch = -20;
- std::cout << std::dec << __vic::ord(ch) << '\n';
- assert(__vic::ord(ch) == 236);
- }
- void swap_nibbles_test()
- {
- assert(__vic::swapped_nibbles(0x12) == 0x21);
- }
- void rot_tests()
- {
- assert(__vic::rotl(uint32_t(0x12345678), 8) == uint32_t(0x34567812));
- assert(__vic::rotr(uint32_t(0x12345678), 8) == uint32_t(0x78123456));
- }
- void run()
- {
- nibble_tests();
- ones_test();
- get_lsbs_test();
- ord_test();
- swap_nibbles_test();
- rot_tests();
- }
- } // namespace
- int main()
- {
- try
- {
- tests::run();
- return 0;
- }
- catch(const std::exception &ex)
- {
- std::cerr << ex.what() << '\n';
- }
- return 1;
- }
|