starknet_selector_decoder/
lib.rs

1include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
2
3/// Returns the selector as a string if it is part of the known selector list,
4/// or None if it is not
5/// # Example
6/// ```rust
7///use starknet_selector_decoder::get_selector;
8///
9///let result =
10///    get_selector("0x0083afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e");
11///match result {
12///    Some(selector) => assert_eq!(selector, "transfer"),
13///    None => assert!(false),
14///}
15///```
16pub fn get_selector(keyword: &str) -> Option<&str> {
17    SELECTORS.get(keyword).cloned()
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn test_transfer() {
26        let result =
27            get_selector("0x0083afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e");
28        match result {
29            Some(selector) => assert_eq!(selector, "transfer"),
30            None => assert!(false),
31        }
32    }
33
34    #[test]
35    fn test_approve() {
36        let result =
37            get_selector("0x0219209e083275171774dab1df80982e9df2096516f06319c5c6d71ae0a8480c");
38        if let Some(selector) = result {
39            println!("{}", selector);
40        }
41        match result {
42            Some(selector) => assert_eq!(selector, "approve"),
43            None => assert!(false),
44        }
45    }
46
47    #[test]
48    fn test_selector_not_present() {
49        let result =
50            get_selector("0x0083afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12f");
51        match result {
52            Some(_) => assert!(false),
53            None => assert!(true),
54        }
55    }
56}