-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmacros.rs
118 lines (101 loc) · 2.8 KB
/
macros.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
macro_rules! doit_signed {
($($Algo:ident),*) => ($(
impl $Algo for i8 {
#[inline]
fn swap_bits(self) -> i8 {
$Algo::swap_bits(self as u8) as i8
}
}
impl $Algo for i16 {
#[inline]
fn swap_bits(self) -> i16 {
$Algo::swap_bits(self as u16) as i16
}
}
impl $Algo for i32 {
#[inline]
fn swap_bits(self) -> i32 {
$Algo::swap_bits(self as u32) as i32
}
}
impl $Algo for i64 {
#[inline]
fn swap_bits(self) -> i64 {
$Algo::swap_bits(self as u64) as i64
}
}
#[cfg(feature = "u128")]
impl $Algo for i128 {
#[inline]
fn swap_bits(self) -> i128 {
$Algo::swap_bits(self as u128) as i128
}
}
impl $Algo for isize {
#[inline]
fn swap_bits(self) -> isize {
$Algo::swap_bits(self as usize) as isize
}
}
)*)
}
macro_rules! test_suite {
() => {
#[test]
fn reverse_u8() {
assert_eq!(0xABu8.swap_bits(), 0xD5u8);
}
#[test]
fn reverse_u16() {
assert_eq!(0xABCDu16.swap_bits(), 0xB3D5u16);
}
#[test]
fn reverse_u32() {
assert_eq!(0xABCD2345u32.swap_bits(), 0xA2C4B3D5u32);
}
#[test]
fn reverse_u64() {
assert_eq!(0x0123456789ABCDEFu64.swap_bits(), 0xF7B3D591E6A2C480u64);
}
#[cfg(feature = "u128")]
#[test]
fn reverse_u128() {
assert_eq!(
0x0123456789ABCDEF0123456789ABCDEFu128.swap_bits(),
0xF7B3D591E6A2C480F7B3D591E6A2C480u128
);
}
#[test]
fn reverse_usize() {
assert_eq!(0xFFusize.swap_bits(), 0xFFusize.swap_bytes());
}
#[test]
fn reverse_i8() {
assert_eq!(0xABi8.swap_bits(), 0xD5i8);
}
#[test]
fn reverse_i16() {
assert_eq!(0xABCDi16.swap_bits(), 0xB3D5i16);
}
#[test]
fn reverse_i32() {
assert_eq!(0xABCD2345i32.swap_bits(), 0xA2C4B3D5i32);
}
#[test]
fn reverse_i64() {
assert_eq!(0x0123456789ABCDEFi64.swap_bits(), 0xF7B3D591E6A2C480i64);
}
#[cfg(feature = "u128")]
#[test]
fn reverse_i128() {
assert_eq!(
0x0123456789ABCDEF0123456789ABCDEFi128.swap_bits(),
0xF7B3D591E6A2C480F7B3D591E6A2C480i128
);
}
#[test]
fn reverse_isize() {
assert_eq!(0xFFisize.swap_bits(), 0xFFisize.swap_bytes());
}
};
}