@@ -498,102 +498,82 @@ public void TestMethod()
498498 [ Fact ]
499499 public async Task EnumInStringInterpolationShouldHaveDiagnostic ( )
500500 {
501- var test = GetTestCode (
502- /* lang=c# */
503- """
504-
505- public class TestClass
506- {
507- public void TestMethod()
508- {
509- var value = TestEnum.First;
510- var str = $"{{{|NEEG004:value|}}}";
511- }
512- }
513-
514- """ ) ;
501+ var test = GetTestCode ( @"
502+ public class TestClass
503+ {
504+ public void TestMethod()
505+ {
506+ var value = TestEnum.First;
507+ var str = $""{value}"";
508+ }
509+ }
510+ " ) ;
515511
516- var fix = GetTestCode (
517- /* lang=c# */
518- """
512+ // The diagnostic is reported on the "value" identifier inside the interpolation
513+ var expected = Microsoft . CodeAnalysis . Testing . DiagnosticResult
514+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
515+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
516+ . WithSpan ( 18 , 34 , 18 , 39 )
517+ . WithArguments ( "TestEnum" ) ;
519518
520- public class TestClass
521- {
522- public void TestMethod()
523- {
524- var value = TestEnum.First;
525- var str = $"{value.ToStringFast()}";
526- }
527- }
528-
529- """ ) ;
530- await Verifier . VerifyCodeFixAsync ( test , fix ) ;
519+ await Verifier . VerifyAnalyzerAsync ( test , expected ) ;
531520 }
532521
533522 [ Fact ]
534523 public async Task EnumInStringInterpolationWithMultipleExpressionsShouldHaveDiagnostics ( )
535524 {
536- var test = GetTestCode (
537- /* lang=c# */
538- """
525+ var test = GetTestCode ( @"
539526 public class TestClass
540527 {
541528 public void TestMethod()
542529 {
543530 var value1 = TestEnum.First;
544531 var value2 = TestEnum.Second;
545- var str = $"Value1: {|NEEG004: value1| }, Value2: {|NEEG004: value2|} ";
532+ var str = $"" Value1: {value1}, Value2: {value2}" ";
546533 }
547534 }
548- """ ) ;
535+ " ) ;
549536
550- var fix = GetTestCode (
551- /* lang=c# */
552- """
553- public class TestClass
554- {
555- public void TestMethod()
556- {
557- var value1 = TestEnum.First;
558- var value2 = TestEnum.Second;
559- var str = $"Value1: {value1.ToStringFast()}, Value2: {value2.ToStringFast()}";
560- }
561- }
562- """ ) ;
563- await Verifier . VerifyCodeFixAsync ( test , fix ) ;
537+ var expected = new [ ]
538+ {
539+ Microsoft . CodeAnalysis . Testing . DiagnosticResult
540+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
541+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
542+ . WithSpan ( 19 , 42 , 19 , 48 )
543+ . WithArguments ( "TestEnum" ) ,
544+ Microsoft . CodeAnalysis . Testing . DiagnosticResult
545+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
546+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
547+ . WithSpan ( 19 , 60 , 19 , 66 )
548+ . WithArguments ( "TestEnum" )
549+ } ;
550+
551+ await Verifier . VerifyAnalyzerAsync ( test , expected ) ;
564552 }
565553
566554 [ Theory ]
567555 [ InlineData ( "g" ) ]
568556 [ InlineData ( "G" ) ]
569557 public async Task EnumInStringInterpolationWithCompatibleFormatShouldHaveDiagnostic ( string format )
570558 {
571- var test = GetTestCode (
572- /* lang=c# */
573- $$ """
574- public class TestClass
575- {
576- public void TestMethod()
577- {
578- var value = TestEnum.First;
579- var str = $"{|NEEG004:value|}:{{ format }} ";
580- }
581- }
582- """ ) ;
583-
584- var fix = GetTestCode (
585- /* lang=c# */
586- """
559+ var test = GetTestCode ( $@ "
587560 public class TestClass
588- {
561+ {{
589562 public void TestMethod()
590- {
563+ {{
591564 var value = TestEnum.First;
592- var str = $"{value.ToStringFast()}";
593- }
594- }
595- """ ) ;
596- await Verifier . VerifyCodeFixAsync ( test , fix ) ;
565+ var str = $""{{value:{ format } }}"";
566+ }}
567+ }}
568+ " ) ;
569+
570+ var expected = Microsoft . CodeAnalysis . Testing . DiagnosticResult
571+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
572+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
573+ . WithSpan ( 18 , 34 , 18 , 39 )
574+ . WithArguments ( "TestEnum" ) ;
575+
576+ await Verifier . VerifyAnalyzerAsync ( test , expected ) ;
597577 }
598578
599579 [ Theory ]
@@ -603,146 +583,117 @@ public void TestMethod()
603583 [ InlineData ( "D" ) ]
604584 public async Task EnumInStringInterpolationWithIncompatibleFormatShouldNotHaveDiagnostic ( string format )
605585 {
606- var test = GetTestCode (
607- /* lang=c# */
608- $$ """
586+ var test = GetTestCode ( $@ "
609587 public class TestClass
610- {
588+ {{
611589 public void TestMethod()
612- {
590+ {{
613591 var value = TestEnum.First;
614- var str = $"{ value:{{ format }} }";
615- }
616- }
617- """ ) ;
592+ var str = $""{{ value:{ format } }}" ";
593+ }}
594+ }}
595+ " ) ;
618596 await Verifier . VerifyAnalyzerAsync ( test ) ;
619597 }
620598
621599 [ Fact ]
622600 public async Task EnumDirectAccessInStringInterpolationShouldHaveDiagnostic ( )
623601 {
624- var test = GetTestCode (
625- /* lang=c# */
626- """
602+ var test = GetTestCode ( @"
627603 public class TestClass
628604 {
629605 public void TestMethod()
630606 {
631- var str = $"SomeValue: {|NEEG004: TestEnum.First|} ";
607+ var str = $"" SomeValue: {TestEnum.First}" ";
632608 }
633609 }
634- """ ) ;
610+ " ) ;
635611
636- var fix = GetTestCode (
637- /* lang=c# */
638- """
639- public class TestClass
640- {
641- public void TestMethod()
642- {
643- var str = $"SomeValue: {TestEnum.First.ToStringFast()}";
644- }
645- }
646- """ ) ;
647- await Verifier . VerifyCodeFixAsync ( test , fix ) ;
612+ var expected = Microsoft . CodeAnalysis . Testing . DiagnosticResult
613+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
614+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
615+ . WithSpan ( 17 , 45 , 17 , 59 )
616+ . WithArguments ( "TestEnum" ) ;
617+
618+ await Verifier . VerifyAnalyzerAsync ( test , expected ) ;
648619 }
649620
650621 [ Fact ]
651622 public async Task NonEnumInStringInterpolationShouldNotHaveDiagnostic ( )
652623 {
653- var test = GetTestCode (
654- /* lang=c# */
655- """
624+ var test = GetTestCode ( @"
656625 public class TestClass
657626 {
658627 public void TestMethod()
659628 {
660629 var value = 42;
661- var str = $"{value}";
630+ var str = $"" {value}" ";
662631 }
663632 }
664- """ ) ;
633+ " ) ;
665634 await Verifier . VerifyAnalyzerAsync ( test ) ;
666635 }
667636
668637 [ Fact ]
669638 public async Task EnumWithoutAttributeInStringInterpolationShouldNotHaveDiagnostic ( )
670639 {
671- var test = GetTestCode (
672- /* lang=c# */
673- """
640+ var test = GetTestCode ( @"
674641 public class TestClass
675642 {
676643 public void TestMethod()
677644 {
678645 var value = TestEnumWithoutAttribute.First;
679- var str = $"{value}";
646+ var str = $"" {value}" ";
680647 }
681648 }
682- """ ) ;
649+ " ) ;
683650 await Verifier . VerifyAnalyzerAsync ( test ) ;
684651 }
685652
686653 [ Fact ]
687654 public async Task ExternalEnumInStringInterpolationShouldHaveDiagnostic ( )
688655 {
689- var test = GetTestCodeWithExternalEnum (
690- /* lang=c# */
691- """
656+ var test = GetTestCodeWithExternalEnum ( @"
692657 public class TestClass
693658 {
694659 public void TestMethod()
695660 {
696661 var value = System.DateTimeKind.Local;
697- var str = $"{|NEEG004: value|} ";
662+ var str = $""{ value}" ";
698663 }
699664 }
700- """ ) ;
665+ " ) ;
701666
702- var fix = GetTestCodeWithExternalEnum (
703- /* lang=c# */
704- """
705- public class TestClass
706- {
707- public void TestMethod()
708- {
709- var value = System.DateTimeKind.Local;
710- var str = $"{value.ToStringFast()}";
711- }
712- }
713- """ ) ;
714- await Verifier . VerifyCodeFixAsync ( test , fix ) ;
667+ var expected = Microsoft . CodeAnalysis . Testing . DiagnosticResult
668+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
669+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
670+ . WithSpan ( 20 , 34 , 20 , 39 )
671+ . WithArguments ( "DateTimeKind" ) ;
672+
673+ await Verifier . VerifyAnalyzerAsync ( test , expected ) ;
715674 }
716675
717676 [ Fact ]
718677 public async Task ExternalEnumInStringInterpolationWithFormatShouldHaveDiagnostic ( )
719678 {
720- var test = GetTestCodeWithExternalEnum (
721- /* lang=c# */
722- """
679+ var test = GetTestCodeWithExternalEnum ( @"
723680 public class TestClass
724681 {
725682 public void TestMethod()
726683 {
727684 var value = System.DateTimeKind.Local;
728- var str = $"{|NEEG004: value|}:g ";
685+ var str = $""{ value:g}" ";
729686 }
730687 }
731- """ ) ;
688+ " ) ;
732689
733- var fix = GetTestCodeWithExternalEnum (
734- /* lang=c# */
735- """
736- public class TestClass
737- {
738- public void TestMethod()
739- {
740- var value = System.DateTimeKind.Local;
741- var str = $"{value.ToStringFast()}";
742- }
743- }
744- """ ) ;
745- await Verifier . VerifyCodeFixAsync ( test , fix ) ;
690+ var expected = Microsoft . CodeAnalysis . Testing . DiagnosticResult
691+ . CompilerError ( ToStringAnalyzer . DiagnosticId )
692+ . WithSeverity ( Microsoft . CodeAnalysis . DiagnosticSeverity . Info )
693+ . WithSpan ( 20 , 34 , 20 , 39 )
694+ . WithArguments ( "DateTimeKind" ) ;
695+
696+ await Verifier . VerifyAnalyzerAsync ( test , expected ) ;
746697 }
747698
748699 private static string GetTestCodeWithExternalEnum ( string testCode ) => $$ """
0 commit comments