@@ -265,6 +265,7 @@ mod test {
265
265
line : 1 ,
266
266
column : 1 ,
267
267
} ;
268
+ //eprintln!("{:?}", file.ast);
268
269
let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
269
270
let node = visitor. find ( & file. ast ) ;
270
271
assert ! ( node. is_some( ) ) ;
@@ -326,5 +327,187 @@ mod test {
326
327
}
327
328
}
328
329
329
-
330
+ #[ test]
331
+ fn test_find_struct_definition ( ) {
332
+ let file = create_test_ast_file ( ) ;
333
+ let position = Position {
334
+ line : 1 ,
335
+ column : 1 ,
336
+ } ;
337
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
338
+ let node = visitor. find ( & file. ast ) ;
339
+ assert ! ( node. is_some( ) ) ;
340
+ if let Some ( InteractableNode :: StructDefinition ( struct_def) ) = node {
341
+ assert_eq ! ( struct_def. name, "TestStruct" ) ;
342
+ } else {
343
+ panic ! ( "Expected StructDefinition, got {:?}" , node) ;
344
+ }
345
+ }
346
+
347
+ #[ test]
348
+ fn test_find_user_defined_type_name ( ) {
349
+ let file = create_test_ast_file ( ) ;
350
+ let position = Position {
351
+ line : 1 ,
352
+ column : 1 ,
353
+ } ;
354
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
355
+ let node = visitor. find ( & file. ast ) ;
356
+ assert ! ( node. is_some( ) ) ;
357
+ if let Some ( InteractableNode :: UserDefinedTypeName ( udt) ) = node {
358
+ assert_eq ! ( udt. name, Some ( "TestStruct" . to_string( ) ) ) ;
359
+ } else {
360
+ panic ! ( "Expected UserDefinedTypeName, got {:?}" , node) ;
361
+ }
362
+ }
363
+
364
+ #[ test]
365
+ fn test_find_using_for_directive ( ) {
366
+ let file = create_test_ast_file ( ) ;
367
+ let position = Position {
368
+ line : 1 ,
369
+ column : 1 ,
370
+ } ;
371
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
372
+ let node = visitor. find ( & file. ast ) ;
373
+ assert ! ( node. is_some( ) ) ;
374
+ if let Some ( InteractableNode :: UsingForDirective ( _) ) = node {
375
+ assert_eq ! ( true , true ) ;
376
+ } else {
377
+ panic ! ( "Expected UsingForDirective, got {:?}" , node) ;
378
+ }
379
+ }
380
+
381
+ #[ test]
382
+ fn test_find_import_directive ( ) {
383
+ let file = create_test_ast_file ( ) ;
384
+ let position = Position {
385
+ line : 1 ,
386
+ column : 1 ,
387
+ } ;
388
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
389
+ let node = visitor. find ( & file. ast ) ;
390
+ assert ! ( node. is_some( ) ) ;
391
+ if let Some ( InteractableNode :: ImportDirective ( id) ) = node {
392
+ assert_eq ! ( true , true ) ;
393
+ } else {
394
+ panic ! ( "Expected ImportDirective, got {:?}" , node) ;
395
+ }
396
+ }
397
+
398
+ #[ test]
399
+ fn test_find_function_call ( ) {
400
+ let file = create_test_ast_file ( ) ;
401
+ let position = Position {
402
+ line : 8 ,
403
+ column : 22 ,
404
+ } ;
405
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
406
+ let node = visitor. find ( & file. ast ) ;
407
+ assert ! ( node. is_some( ) ) ;
408
+ if let Some ( InteractableNode :: FunctionCall ( _) ) = node {
409
+ assert_eq ! ( true , true ) ;
410
+ } else {
411
+ panic ! ( "Expected FunctionCall, got {:?}" , node) ;
412
+ }
413
+ }
414
+
415
+ #[ test]
416
+ fn test_find_modifier_invocation ( ) {
417
+ let file = create_test_ast_file ( ) ;
418
+ let position = Position {
419
+ line : 8 ,
420
+ column : 22 ,
421
+ } ;
422
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
423
+ let node = visitor. find ( & file. ast ) ;
424
+ assert ! ( node. is_some( ) ) ;
425
+ if let Some ( InteractableNode :: ModifierInvocation ( _) ) = node {
426
+ assert_eq ! ( true , true ) ;
427
+ } else {
428
+ panic ! ( "Expected ModifierInvocation, got {:?}" , node) ;
429
+ }
430
+ }
431
+
432
+ #[ test]
433
+ fn test_find_inheritance_specifier ( ) {
434
+ let file = create_test_ast_file ( ) ;
435
+ let position = Position {
436
+ line : 8 ,
437
+ column : 22 ,
438
+ } ;
439
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
440
+ let node = visitor. find ( & file. ast ) ;
441
+ assert ! ( node. is_some( ) ) ;
442
+ if let Some ( InteractableNode :: InheritanceSpecifier ( _) ) = node {
443
+ assert_eq ! ( true , true ) ;
444
+ } else {
445
+ panic ! ( "Expected InheritanceSpecifier, got {:?}" , node) ;
446
+ }
447
+ }
448
+
449
+ #[ test]
450
+ fn test_find_identifier ( ) {
451
+ let file = create_test_ast_file ( ) ;
452
+ let position = Position {
453
+ line : 8 ,
454
+ column : 22 ,
455
+ } ;
456
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
457
+ let node = visitor. find ( & file. ast ) ;
458
+ assert ! ( node. is_some( ) ) ;
459
+ if let Some ( InteractableNode :: Identifier ( _) ) = node {
460
+ assert_eq ! ( true , true ) ;
461
+ } else {
462
+ panic ! ( "Expected Identifier, got {:?}" , node) ;
463
+ }
464
+ }
465
+
466
+ #[ test]
467
+ fn test_find_member_access ( ) {
468
+ let file = create_test_ast_file ( ) ;
469
+ let position = Position {
470
+ line : 8 ,
471
+ column : 22 ,
472
+ } ;
473
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
474
+ let node = visitor. find ( & file. ast ) ;
475
+ assert ! ( node. is_some( ) ) ;
476
+ if let Some ( InteractableNode :: MemberAccess ( _) ) = node {
477
+ assert_eq ! ( true , true ) ;
478
+ } else {
479
+ panic ! ( "Expected MemberAccess, got {:?}" , node) ;
480
+ }
481
+ }
482
+
483
+ #[ test]
484
+ fn test_find_new_expression ( ) {
485
+ let file = create_test_ast_file ( ) ;
486
+ let position = Position {
487
+ line : 8 ,
488
+ column : 22 ,
489
+ } ;
490
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
491
+ let node = visitor. find ( & file. ast ) ;
492
+ assert ! ( node. is_some( ) ) ;
493
+ if let Some ( InteractableNode :: NewExpression ( _, _) ) = node {
494
+ assert_eq ! ( true , true ) ;
495
+ } else {
496
+ panic ! ( "Expected NewExpression, got {:?}" , node) ;
497
+ }
498
+ }
499
+
500
+
501
+ #[ test]
502
+ fn test_find_nothing ( ) {
503
+ let file = create_test_ast_file ( ) ;
504
+ let position = Position {
505
+ line : 100 ,
506
+ column : 100 ,
507
+ } ;
508
+ let mut visitor = PositionNodeVisitor :: new ( position, & file. file . content ) ;
509
+ let node = visitor. find ( & file. ast ) ;
510
+ assert ! ( node. is_none( ) ) ;
511
+ }
512
+
330
513
}
0 commit comments