diff options
author | Jingkui Wang <jkwang@google.com> | 2019-03-18 15:51:13 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-03-28 19:04:03 -0700 |
commit | 85fa41f7b2b74fafa15660de09b6d20e4341be8b (patch) | |
tree | 4b457ee4a4492990463ecfb585be89f9c6c22a94 /bit_field/tests | |
parent | ca224cd547568623dc2479c8cfaca43b091c7650 (diff) | |
download | crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.tar crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.tar.gz crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.tar.bz2 crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.tar.lz crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.tar.xz crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.tar.zst crosvm-85fa41f7b2b74fafa15660de09b6d20e4341be8b.zip |
implement bitfield for enum with a width
If we know the width of an enum type, we don't need 'power of 2' number of variants. BUG=None TEST=cargo test Change-Id: I8148b28f86bb8e4fd4f67d8a6382fc713dad1439 Reviewed-on: https://chromium-review.googlesource.com/1530455 Commit-Ready: Jingkui Wang <jkwang@google.com> Tested-by: Jingkui Wang <jkwang@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Tolnay <dtolnay@chromium.org>
Diffstat (limited to 'bit_field/tests')
-rw-r--r-- | bit_field/tests/test_enum.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/bit_field/tests/test_enum.rs b/bit_field/tests/test_enum.rs index d926d9c..8746b06 100644 --- a/bit_field/tests/test_enum.rs +++ b/bit_field/tests/test_enum.rs @@ -12,10 +12,21 @@ enum TwoBits { } #[bitfield] +#[bits = 3] +#[derive(Debug, PartialEq)] +enum ThreeBits { + Zero = 0b00, + One = 0b01, + Two = 0b10, + Three = 0b111, +} + +#[bitfield] struct Struct { prefix: BitField1, two_bits: TwoBits, - suffix: BitField5, + three_bits: ThreeBits, + suffix: BitField2, } #[test] @@ -30,5 +41,10 @@ fn test_enum() { s.set(0, 8, 0b_1010_1010); // ^^ TwoBits + // ^^_^ Three Bits. assert_eq!(s.get_two_bits(), TwoBits::One); + assert_eq!(s.get_three_bits().unwrap_err().raw_val(), 0b101); + + s.set_three_bits(ThreeBits::Two); + assert_eq!(s.get(0, 8), 0b_1001_0010); } |