@@ -77,3 +77,195 @@ impl DefinitionVisitor {
77
77
self . node . clone ( )
78
78
}
79
79
}
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