GFramework/GFramework.Core.Tests/Extensions/GuardExtensionsTests.cs
GeWuYou fb14d7122c docs(style): 更新文档中的命名空间导入格式
- 将所有小写的命名空间导入更正为首字母大写格式
- 统一 GFramework 框架的命名空间引用规范
- 修复 core、ecs、godot 等模块的命名空间导入错误
- 标准化文档示例代码中的 using 语句格式
- 确保所有文档中的命名空间引用保持一致性
- 更新 global using 语句以匹配正确的命名空间格式
2026-03-10 07:18:49 +08:00

168 lines
4.6 KiB
C#

using GFramework.Core.Extensions;
using NUnit.Framework;
namespace GFramework.Core.Tests.Extensions;
/// <summary>
/// 测试 GuardExtensions 扩展方法的功能
/// </summary>
[TestFixture]
public class GuardExtensionsTests
{
const string TestParamName = "testParam";
/// <summary>
/// 测试ThrowIfNull方法在值不为null时返回值本身
/// </summary>
[Test]
public void ThrowIfNull_Should_Return_Value_When_Value_Is_Not_Null()
{
// Arrange
var value = "test";
// Act
var result = value.ThrowIfNull();
// Assert
Assert.That(result, Is.EqualTo("test"));
}
/// <summary>
/// 测试ThrowIfNull方法在值为null时抛出ArgumentNullException
/// </summary>
[Test]
public void ThrowIfNull_Should_Throw_ArgumentNullException_When_Value_Is_Null()
{
// Arrange
string? value = null;
// Act & Assert
Assert.Throws<ArgumentNullException>(() => value.ThrowIfNull());
}
/// <summary>
/// 测试ThrowIfNull方法在抛出异常时包含参数名称
/// </summary>
[Test]
public void ThrowIfNull_Should_Include_ParamName_In_Exception()
{
// Arrange
string? value = null;
// Act & Assert
var ex = Assert.Throws<ArgumentNullException>(() => value.ThrowIfNull(TestParamName));
Assert.That(ex?.ParamName, Is.EqualTo(TestParamName));
}
/// <summary>
/// 测试ThrowIfNullOrEmpty方法在值不为空时返回值本身
/// </summary>
[Test]
public void ThrowIfNullOrEmpty_Should_Return_Value_When_Value_Is_Not_Empty()
{
// Arrange
var value = "test";
// Act
var result = value.ThrowIfNullOrEmpty();
// Assert
Assert.That(result, Is.EqualTo("test"));
}
/// <summary>
/// 测试ThrowIfNullOrEmpty方法在值为null时抛出ArgumentNullException
/// </summary>
[Test]
public void ThrowIfNullOrEmpty_Should_Throw_ArgumentNullException_When_Value_Is_Null()
{
// Arrange
string? value = null;
// Act & Assert
Assert.Throws<ArgumentNullException>(() => value.ThrowIfNullOrEmpty());
}
/// <summary>
/// 测试ThrowIfNullOrEmpty方法在值为空时抛出ArgumentException
/// </summary>
[Test]
public void ThrowIfNullOrEmpty_Should_Throw_ArgumentException_When_Value_Is_Empty()
{
// Arrange
var value = string.Empty;
// Act & Assert
Assert.Throws<ArgumentException>(() => value.ThrowIfNullOrEmpty());
}
/// <summary>
/// 测试ThrowIfNullOrEmpty方法在抛出异常时包含参数名称
/// </summary>
[Test]
public void ThrowIfNullOrEmpty_Should_Include_ParamName_In_Exception()
{
// Arrange
var value = string.Empty;
// Act & Assert
var ex = Assert.Throws<ArgumentException>(() => value.ThrowIfNullOrEmpty(TestParamName));
Assert.That(ex?.ParamName, Is.EqualTo(TestParamName));
}
/// <summary>
/// 测试ThrowIfEmpty方法在集合有元素时返回集合本身
/// </summary>
[Test]
public void ThrowIfEmpty_Should_Return_Collection_When_Collection_Has_Elements()
{
// Arrange
var collection = new[] { 1, 2, 3 };
// Act
var result = collection.ThrowIfEmpty();
// Assert
Assert.That(result, Is.EqualTo(collection));
}
/// <summary>
/// 测试ThrowIfEmpty方法在集合为null时抛出ArgumentNullException
/// </summary>
[Test]
public void ThrowIfEmpty_Should_Throw_ArgumentNullException_When_Collection_Is_Null()
{
// Arrange
IEnumerable<int>? collection = null;
// Act & Assert
Assert.Throws<ArgumentNullException>(() => collection.ThrowIfEmpty());
}
/// <summary>
/// 测试ThrowIfEmpty方法在集合为空时抛出ArgumentException
/// </summary>
[Test]
public void ThrowIfEmpty_Should_Throw_ArgumentException_When_Collection_Is_Empty()
{
// Arrange
var collection = Array.Empty<int>();
// Act & Assert
Assert.Throws<ArgumentException>(() => collection.ThrowIfEmpty());
}
/// <summary>
/// 测试ThrowIfEmpty方法在抛出异常时包含参数名称
/// </summary>
[Test]
public void ThrowIfEmpty_Should_Include_ParamName_In_Exception()
{
// Arrange
var collection = Array.Empty<int>();
// Act & Assert
var ex = Assert.Throws<ArgumentException>(() => collection.ThrowIfEmpty(TestParamName));
Assert.That(ex?.ParamName, Is.EqualTo(TestParamName));
}
}