bitwise: add bitfield tests

This commit is contained in:
Danny Robson 2019-02-03 14:03:38 +11:00
parent cf268a1960
commit 5d76fb7792

View File

@ -1,4 +1,5 @@
#include "bitwise.hpp" #include "bitwise.hpp"
#include "std.hpp"
#include "tap.hpp" #include "tap.hpp"
@ -52,6 +53,30 @@ test_reverse (cruft::TAP::logger &tap)
} }
//-----------------------------------------------------------------------------
void
test_bitfield (cruft::TAP::logger &tap)
{
union {
/// * lo is set to 1 and hi is set to 0 to establish bit ordering
/// * mid pattern tests behaviour across byte boundaries
u16 raw = 0b0111'0011'0000'0001;
// | |mid^---^ |
// highest^ | lowest^
// high^--^
cruft::bitfield<u16, 0,1> lowest;
cruft::bitfield<u16,15,1> highest;
cruft::bitfield<u16,12,4> high;
cruft::bitfield<u16, 6,4> mid;
};
tap.expect_eq (lowest, u16 { 0b1}, "bitfield lowest bit");
tap.expect_eq (highest, u16 { 0b0}, "bitfield highest bit");
tap.expect_eq (high, u16 {0b0111}, "bitfield high bits");
tap.expect_eq (mid, u16 {0b1100}, "bitfield byte boundary bits");
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int int
main (int, char**) main (int, char**)
@ -60,6 +85,7 @@ main (int, char**)
test_rotate (tap); test_rotate (tap);
test_reverse (tap); test_reverse (tap);
test_bitfield (tap);
return tap.status (); return tap.status ();
} }