Skip to content

Commit b376740

Browse files
committed
test(extensions): 添加 ConvertToUnderLine 方法的单元测试
覆盖以下测试场景: - 空字符串抛出 ArgumentNullException - 空字符串返回空字符串 - 驼峰命名转换为小写下划线格式 - 驼峰命名转换为大写下划线格式 - 已包含下划线时返回原字符串 - 单个单词转换为小写/大写
1 parent 7a0fa62 commit b376740

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

GameFrameX.Foundation.Tests/Extensions/StringExtensionsTests.cs

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)