@@ -615,6 +615,98 @@ public void ConvertToSnakeCase_WithLeadingUnderscore_ShouldPreserveUnderscore()
615615
616616 #endregion
617617
618+ #region ConvertToUnderLine Tests
619+
620+ [ Fact ]
621+ public void ConvertToUnderLine_NullString_ShouldThrowArgumentNullException ( )
622+ {
623+ // Arrange
624+ string str = null ;
625+
626+ // Act & Assert
627+ Assert . Throws < ArgumentNullException > ( ( ) => str . ConvertToUnderLine ( ) ) ;
628+ }
629+
630+ [ Fact ]
631+ public void ConvertToUnderLine_EmptyString_ShouldReturnEmptyString ( )
632+ {
633+ // Arrange
634+ var str = string . Empty ;
635+
636+ // Act
637+ var result = str . ConvertToUnderLine ( ) ;
638+
639+ // Assert
640+ Assert . Equal ( string . Empty , result ) ;
641+ }
642+
643+ [ Fact ]
644+ public void ConvertToUnderLine_CamelCase_ShouldConvertToLowerCaseWithUnderscores ( )
645+ {
646+ // Arrange
647+ var str = "HelloWorld" ;
648+
649+ // Act
650+ var result = str . ConvertToUnderLine ( ) ;
651+
652+ // Assert
653+ Assert . Equal ( "hello_world" , result ) ;
654+ }
655+
656+ [ Fact ]
657+ public void ConvertToUnderLine_CamelCaseToUpperCase_ShouldConvertToUpperCaseWithUnderscores ( )
658+ {
659+ // Arrange
660+ var str = "HelloWorld" ;
661+
662+ // Act
663+ var result = str . ConvertToUnderLine ( true ) ;
664+
665+ // Assert
666+ Assert . Equal ( "HELLO_WORLD" , result ) ;
667+ }
668+
669+ [ Fact ]
670+ public void ConvertToUnderLine_AlreadyHasUnderscore_ShouldReturnOriginalString ( )
671+ {
672+ // Arrange
673+ var str = "hello_world" ;
674+
675+ // Act
676+ var result = str . ConvertToUnderLine ( ) ;
677+
678+ // Assert
679+ Assert . Equal ( "hello_world" , result ) ;
680+ }
681+
682+ [ Fact ]
683+ public void ConvertToUnderLine_SingleWord_ShouldConvertToLowerCase ( )
684+ {
685+ // Arrange
686+ var str = "Hello" ;
687+
688+ // Act
689+ var result = str . ConvertToUnderLine ( ) ;
690+
691+ // Assert
692+ Assert . Equal ( "hello" , result ) ;
693+ }
694+
695+ [ Fact ]
696+ public void ConvertToUnderLine_SingleWordToUpperCase_ShouldConvertToUpperCase ( )
697+ {
698+ // Arrange
699+ var str = "Hello" ;
700+
701+ // Act
702+ var result = str . ConvertToUnderLine ( true ) ;
703+
704+ // Assert
705+ Assert . Equal ( "HELLO" , result ) ;
706+ }
707+
708+ #endregion
709+
618710 #region TrimZhCn Tests
619711
620712 [ Fact ]
0 commit comments