Skip to content

Commit 9e282e5

Browse files
0xSwapFeeder0xmemorygrinder
authored andcommitted
test(lib/code-actions): added missing test utils and finished testing lib
1 parent f02fc7c commit 9e282e5

File tree

9 files changed

+3736
-2978
lines changed

9 files changed

+3736
-2978
lines changed

libs/code-actions/src/completions/auto_complete_provider.rs

+17
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,20 @@ impl AutoCompleteProvider {
104104
vec![]
105105
}
106106
}
107+
108+
#[cfg(test)]
109+
mod test {
110+
use crate::test_utils::{create_test_ast_file, create_test_ast_file_struct_definition};
111+
112+
use super::*;
113+
114+
#[test]
115+
fn test_get_suggestions() {
116+
let provider = AutoCompleteProvider::new();
117+
let uri = "test.sol";
118+
let position = Position { line: 10, column: 15 };
119+
let files = vec![create_test_ast_file(), create_test_ast_file_struct_definition()];
120+
let completes = provider.get_suggestions(uri, position, &files);
121+
assert_eq!(completes.len(), 4);
122+
}
123+
}

libs/code-actions/src/references/definition_visitor.rs

+192
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,195 @@ impl DefinitionVisitor {
7777
self.node.clone()
7878
}
7979
}
80+
81+
#[cfg(test)]
82+
mod test {
83+
use crate::test_utils::{create_test_ast_file_contract_definition, create_test_ast_file_enum_definition, create_test_ast_file_enum_value, create_test_ast_file_event_definition, create_test_ast_file_function_definition, create_test_ast_file_modifier_definition, create_test_ast_file_struct_definition, create_test_ast_file_variable_declaration};
84+
85+
use super::*;
86+
87+
#[test]
88+
fn test_find_contract_definition() {
89+
let id = 1;
90+
let file = create_test_ast_file_contract_definition();
91+
let mut visitor = DefinitionVisitor::new(id);
92+
let node = visitor.find(&file.ast);
93+
assert!(node.is_some());
94+
if let Some(InteractableNode::ContractDefinition(contract)) = node {
95+
assert_eq!(contract.id, id);
96+
} else {
97+
panic!("Expected ContractDefinition node");
98+
}
99+
}
100+
101+
#[test]
102+
fn test_find_contract_definition_not_found() {
103+
let id = 0;
104+
let file = create_test_ast_file_contract_definition();
105+
let mut visitor = DefinitionVisitor::new(id);
106+
let node = visitor.find(&file.ast);
107+
assert!(node.is_none());
108+
}
109+
110+
#[test]
111+
fn test_find_function_definition() {
112+
let id = 2;
113+
let file = create_test_ast_file_function_definition();
114+
let mut visitor = DefinitionVisitor::new(id);
115+
let node = visitor.find(&file.ast);
116+
assert!(node.is_some());
117+
if let Some(InteractableNode::FunctionDefinition(function)) = node {
118+
assert_eq!(function.id, id);
119+
} else {
120+
panic!("Expected FunctionDefinition node");
121+
}
122+
}
123+
124+
#[test]
125+
fn test_find_function_definition_not_found() {
126+
let id = 0;
127+
let file = create_test_ast_file_function_definition();
128+
let mut visitor = DefinitionVisitor::new(id);
129+
let node = visitor.find(&file.ast);
130+
assert!(node.is_none());
131+
}
132+
133+
#[test]
134+
fn test_find_modifier_definition() {
135+
let id = 4;
136+
let file = create_test_ast_file_modifier_definition();
137+
let mut visitor = DefinitionVisitor::new(id);
138+
let node = visitor.find(&file.ast);
139+
assert!(node.is_some());
140+
if let Some(InteractableNode::ModifierDefinition(modifier)) = node {
141+
assert_eq!(modifier.id, id);
142+
} else {
143+
panic!("Expected ModifierDefinition node");
144+
}
145+
}
146+
147+
#[test]
148+
fn test_find_modifier_definition_not_found() {
149+
let id = 0;
150+
let file = create_test_ast_file_modifier_definition();
151+
let mut visitor = DefinitionVisitor::new(id);
152+
let node = visitor.find(&file.ast);
153+
assert!(node.is_none());
154+
}
155+
156+
#[test]
157+
fn test_find_struct_definition() {
158+
let id = 5;
159+
let file = create_test_ast_file_struct_definition();
160+
let mut visitor = DefinitionVisitor::new(id);
161+
let node = visitor.find(&file.ast);
162+
assert!(node.is_some());
163+
if let Some(InteractableNode::StructDefinition(struct_def)) = node {
164+
assert_eq!(struct_def.id, id);
165+
} else {
166+
panic!("Expected StructDefinition node");
167+
}
168+
}
169+
170+
#[test]
171+
fn test_find_struct_definition_not_found() {
172+
let id = 0;
173+
let file = create_test_ast_file_struct_definition();
174+
let mut visitor = DefinitionVisitor::new(id);
175+
let node = visitor.find(&file.ast);
176+
assert!(node.is_none());
177+
}
178+
179+
#[test]
180+
fn test_find_enum_definition() {
181+
let id = 6;
182+
let file = create_test_ast_file_enum_definition();
183+
let mut visitor = DefinitionVisitor::new(id);
184+
let node = visitor.find(&file.ast);
185+
assert!(node.is_some());
186+
if let Some(InteractableNode::EnumDefinition(enum_def)) = node {
187+
assert_eq!(enum_def.id, id);
188+
} else {
189+
panic!("Expected EnumDefinition node");
190+
}
191+
}
192+
193+
#[test]
194+
fn test_find_enum_definition_not_found() {
195+
let id = 0;
196+
let file = create_test_ast_file_enum_definition();
197+
let mut visitor = DefinitionVisitor::new(id);
198+
let node = visitor.find(&file.ast);
199+
assert!(node.is_none());
200+
}
201+
202+
#[test]
203+
fn test_find_variable_declaration() {
204+
let id = 3;
205+
let file = create_test_ast_file_variable_declaration();
206+
let mut visitor = DefinitionVisitor::new(id);
207+
let node = visitor.find(&file.ast);
208+
assert!(node.is_some());
209+
if let Some(InteractableNode::VariableDeclaration(variable)) = node {
210+
assert_eq!(variable.id, id);
211+
} else {
212+
panic!("Expected VariableDeclaration node");
213+
}
214+
}
215+
216+
#[test]
217+
fn test_find_variable_declaration_not_found() {
218+
let id = 0;
219+
let file = create_test_ast_file_variable_declaration();
220+
let mut visitor = DefinitionVisitor::new(id);
221+
let node = visitor.find(&file.ast);
222+
assert!(node.is_none());
223+
}
224+
225+
#[test]
226+
fn test_find_enum_value() {
227+
let id = 8;
228+
let file = create_test_ast_file_enum_value();
229+
let mut visitor = DefinitionVisitor::new(id);
230+
let node = visitor.find(&file.ast);
231+
assert!(node.is_some());
232+
if let Some(InteractableNode::EnumValue(enum_def)) = node {
233+
assert_eq!(enum_def.id, id);
234+
} else {
235+
panic!("Expected EnumDefinition node");
236+
}
237+
}
238+
239+
#[test]
240+
fn test_find_enum_value_not_found() {
241+
let id = 0;
242+
let file = create_test_ast_file_enum_value();
243+
let mut visitor = DefinitionVisitor::new(id);
244+
let node = visitor.find(&file.ast);
245+
assert!(node.is_none());
246+
}
247+
248+
#[test]
249+
fn test_find_event_definition() {
250+
let id = 7;
251+
let file = create_test_ast_file_event_definition();
252+
let mut visitor = DefinitionVisitor::new(id);
253+
let node = visitor.find(&file.ast);
254+
assert!(node.is_some());
255+
if let Some(InteractableNode::EventDefinition(event)) = node {
256+
assert_eq!(event.id, id);
257+
} else {
258+
panic!("Expected EventDefinition node");
259+
}
260+
}
261+
262+
#[test]
263+
fn test_find_event_definition_not_found() {
264+
let id = 0;
265+
let file = create_test_ast_file_event_definition();
266+
let mut visitor = DefinitionVisitor::new(id);
267+
let node = visitor.find(&file.ast);
268+
assert!(node.is_none());
269+
}
270+
271+
}

0 commit comments

Comments
 (0)