Advertisement
Guest User

Untitled

a guest
May 28th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. use std::mem;
  2.  
  3. #[repr(u8)]
  4. #[derive(PartialEq, Debug)]
  5. enum Field {
  6. Invalid = 0x00, // FIXME: this is ugly
  7. A = 0x01,
  8. B = 0x02,
  9. C = 0x03
  10. }
  11.  
  12. impl Field {
  13. fn from(byte: u8) -> Field {
  14. match byte {
  15. 1 ... 3 => unsafe{ mem::transmute(byte) },
  16. _ => Field::Invalid
  17. }
  18. }
  19. }
  20.  
  21. #[test]
  22. fn field_from_byte_test() {
  23. assert_eq!(Field::from(0x00), Field::Invalid);
  24. assert_eq!(Field::from(0x04), Field::Invalid);
  25. assert_eq!(Field::from(0x05), Field::Invalid);
  26.  
  27. assert_eq!(Field::from(0x01), Field::A);
  28. assert_eq!(Field::from(0x02), Field::B);
  29. assert_eq!(Field::from(0x03), Field::C);
  30. }
  31.  
  32. fn parse_field(byte: u8) -> Option<Field> {
  33. match byte {
  34. 1 ... 3 => Some(unsafe{ mem::transmute(byte) }),
  35. _ => None
  36. }
  37. }
  38.  
  39. #[test]
  40. fn parse_field_test() {
  41. assert_eq!(parse_field(0x00), None);
  42. assert_eq!(parse_field(0x04), None);
  43. assert_eq!(parse_field(0x05), None);
  44.  
  45. assert_eq!(parse_field(0x01), Some(Field::A));
  46. assert_eq!(parse_field(0x02), Some(Field::B));
  47. assert_eq!(parse_field(0x03), Some(Field::C));
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement