evmc_vm/
types.rs

1use evmc_sys as ffi;
2
3/// EVMC address
4pub type Address = ffi::evmc_address;
5
6/// EVMC 32 bytes value (used for hashes)
7pub type Bytes32 = ffi::evmc_bytes32;
8
9/// EVMC big-endian 256-bit integer
10pub type Uint256 = ffi::evmc_uint256be;
11
12/// EVMC call kind.
13pub type MessageKind = ffi::evmc_call_kind;
14
15/// EVMC message (call) flags.
16pub type MessageFlags = ffi::evmc_flags;
17
18/// EVMC status code.
19pub type StatusCode = ffi::evmc_status_code;
20
21/// EVMC access status.
22pub type AccessStatus = ffi::evmc_access_status;
23
24/// EVMC storage status.
25pub type StorageStatus = ffi::evmc_storage_status;
26
27/// EVMC VM revision.
28pub type Revision = ffi::evmc_revision;
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    // These tests check for Default, PartialEq and Clone traits.
35    #[test]
36    fn address_smoke_test() {
37        let a = ffi::evmc_address::default();
38        let b = Address::default();
39        assert_eq!(a.clone(), b.clone());
40    }
41
42    #[test]
43    fn bytes32_smoke_test() {
44        let a = ffi::evmc_bytes32::default();
45        let b = Bytes32::default();
46        assert_eq!(a.clone(), b.clone());
47    }
48
49    #[test]
50    fn uint26be_smoke_test() {
51        let a = ffi::evmc_uint256be::default();
52        let b = Uint256::default();
53        assert_eq!(a.clone(), b.clone());
54    }
55
56    #[test]
57    fn message_kind() {
58        assert_eq!(MessageKind::EVMC_CALL, ffi::evmc_call_kind::EVMC_CALL);
59        assert_eq!(
60            MessageKind::EVMC_CALLCODE,
61            ffi::evmc_call_kind::EVMC_CALLCODE
62        );
63        assert_eq!(
64            MessageKind::EVMC_DELEGATECALL,
65            ffi::evmc_call_kind::EVMC_DELEGATECALL
66        );
67        assert_eq!(MessageKind::EVMC_CREATE, ffi::evmc_call_kind::EVMC_CREATE);
68    }
69
70    #[test]
71    fn message_flags() {
72        assert_eq!(MessageFlags::EVMC_STATIC, ffi::evmc_flags::EVMC_STATIC);
73    }
74
75    #[test]
76    fn status_code() {
77        assert_eq!(
78            StatusCode::EVMC_SUCCESS,
79            ffi::evmc_status_code::EVMC_SUCCESS
80        );
81        assert_eq!(
82            StatusCode::EVMC_FAILURE,
83            ffi::evmc_status_code::EVMC_FAILURE
84        );
85    }
86
87    #[test]
88    fn access_status() {
89        assert_eq!(
90            AccessStatus::EVMC_ACCESS_COLD,
91            ffi::evmc_access_status::EVMC_ACCESS_COLD
92        );
93        assert_eq!(
94            AccessStatus::EVMC_ACCESS_WARM,
95            ffi::evmc_access_status::EVMC_ACCESS_WARM
96        );
97    }
98
99    #[test]
100    fn storage_status() {
101        assert_eq!(
102            StorageStatus::EVMC_STORAGE_UNCHANGED,
103            ffi::evmc_storage_status::EVMC_STORAGE_UNCHANGED
104        );
105        assert_eq!(
106            StorageStatus::EVMC_STORAGE_MODIFIED,
107            ffi::evmc_storage_status::EVMC_STORAGE_MODIFIED
108        );
109    }
110
111    #[test]
112    fn revision() {
113        assert_eq!(Revision::EVMC_FRONTIER, ffi::evmc_revision::EVMC_FRONTIER);
114        assert_eq!(Revision::EVMC_ISTANBUL, ffi::evmc_revision::EVMC_ISTANBUL);
115    }
116}