checked_decimal_macro/
uint.rs

1//! Large uint types
2
3// required for clippy
4#![allow(clippy::assign_op_pattern)]
5#![allow(clippy::ptr_offset_with_cast)]
6#![allow(clippy::manual_range_contains)]
7
8use uint::construct_uint;
9
10construct_uint! {
11    pub struct U256(4);
12}
13construct_uint! {
14    pub struct U192(3);
15}
16
17#[allow(dead_code)]
18pub const fn to_u256(n: u128) -> U256 {
19    U256([n as u64, (n >> 64) as u64, 0, 0])
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn test_to_u256() {
28        {
29            let from = 0;
30            let result = to_u256(from);
31            let back = result.as_u128();
32            assert_eq!(from, back);
33        }
34        {
35            let from = 1;
36            let result = to_u256(from);
37            let back = result.as_u128();
38            assert_eq!(from, back);
39        }
40        {
41            let from = 1324342342433342342;
42            let result = to_u256(from);
43            let back = result.as_u128();
44            assert_eq!(from, back);
45        }
46        {
47            let from = u64::MAX as u128;
48            let result = to_u256(from);
49            let back = result.as_u128();
50            assert_eq!(from, back);
51        }
52        {
53            let from = u64::MAX as u128 + 1;
54            let result = to_u256(from);
55            let back = result.as_u128();
56            assert_eq!(from, back);
57        }
58        {
59            let from = u64::MAX as u128 + 2;
60            let result = to_u256(from);
61            let back = result.as_u128();
62            assert_eq!(from, back);
63        }
64        {
65            let from = u128::MAX;
66            let result = to_u256(from);
67            let back = result.as_u128();
68            assert_eq!(from, back);
69        }
70    }
71}