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