snarkvm_synthesizer_program/import/
mod.rs1mod bytes;
17mod parse;
18
19use console::{
20 network::prelude::*,
21 program::{Identifier, ProgramID},
22};
23
24#[derive(Clone, PartialEq, Eq, Hash)]
27pub struct Import<N: Network> {
28 program_id: ProgramID<N>,
30}
31
32impl<N: Network> Import<N> {
33 #[inline]
35 pub const fn program_id(&self) -> &ProgramID<N> {
36 &self.program_id
37 }
38
39 #[inline]
41 pub const fn name(&self) -> &Identifier<N> {
42 self.program_id.name()
43 }
44
45 #[inline]
47 pub const fn network(&self) -> &Identifier<N> {
48 self.program_id.network()
49 }
50}
51
52impl<N: Network> TypeName for Import<N> {
53 #[inline]
55 fn type_name() -> &'static str {
56 "import"
57 }
58}
59
60impl<N: Network> Ord for Import<N> {
61 fn cmp(&self, other: &Self) -> Ordering {
63 self.program_id.cmp(&other.program_id)
64 }
65}
66
67impl<N: Network> PartialOrd for Import<N> {
68 fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
70 Some(self.cmp(other))
71 }
72}
73
74#[cfg(test)]
75mod tests {
76 use super::*;
77 use console::network::MainnetV0;
78
79 type CurrentNetwork = MainnetV0;
80
81 #[test]
82 fn test_import_type_name() -> Result<()> {
83 assert_eq!(Import::<CurrentNetwork>::type_name(), "import");
84 Ok(())
85 }
86
87 #[test]
88 fn test_import_partial_ord() -> Result<()> {
89 let import1 = Import::<CurrentNetwork>::from_str("import bar.aleo;")?;
90 let import2 = Import::<CurrentNetwork>::from_str("import foo.aleo;")?;
91
92 let import3 = Import::<CurrentNetwork>::from_str("import bar.aleo;")?;
93 let import4 = Import::<CurrentNetwork>::from_str("import foo.aleo;")?;
94
95 assert_eq!(import1.partial_cmp(&import1), Some(Ordering::Equal));
96 assert_eq!(import1.partial_cmp(&import2), Some(Ordering::Less));
97 assert_eq!(import1.partial_cmp(&import3), Some(Ordering::Equal));
98 assert_eq!(import1.partial_cmp(&import4), Some(Ordering::Less));
99
100 assert_eq!(import2.partial_cmp(&import1), Some(Ordering::Greater));
101 assert_eq!(import2.partial_cmp(&import2), Some(Ordering::Equal));
102 assert_eq!(import2.partial_cmp(&import3), Some(Ordering::Greater));
103 assert_eq!(import2.partial_cmp(&import4), Some(Ordering::Equal));
104
105 assert_eq!(import3.partial_cmp(&import1), Some(Ordering::Equal));
106 assert_eq!(import3.partial_cmp(&import2), Some(Ordering::Less));
107 assert_eq!(import3.partial_cmp(&import3), Some(Ordering::Equal));
108 assert_eq!(import3.partial_cmp(&import4), Some(Ordering::Less));
109
110 assert_eq!(import4.partial_cmp(&import1), Some(Ordering::Greater));
111 assert_eq!(import4.partial_cmp(&import2), Some(Ordering::Equal));
112 assert_eq!(import4.partial_cmp(&import3), Some(Ordering::Greater));
113 assert_eq!(import4.partial_cmp(&import4), Some(Ordering::Equal));
114
115 Ok(())
116 }
117}