mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-23 03:04:29 +08:00
- 移除 EnumerableExtensions 扩展类及其 Map、Filter、Reduce 方法 - 从 ControlExtensions 中删除 Match、MatchOrDefault、If、IfElse 等控制流方法 - 重命名 FunctionExtensions 中的 Memoize 为 MemoizeUnbounded 并更新文档注释 - 重命名 FunctionExtensions 中的 Partial 相关方法并调整参数命名 - 在 PipeExtensions 中移除 Pipe、Then、After、Let 等方法,保留 Also 方法 - 删除多个功能性类型扩展文件,包括 Option、Result、NullableExtensions 等 - 移除功能扩展的 README.md 文档文件 - 更新相关命名空间引用和依赖关系 - [release ci]
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using GFramework.Core.functional.functions;
|
||
using NUnit.Framework;
|
||
|
||
namespace GFramework.Core.Tests.functional.functions;
|
||
|
||
/// <summary>
|
||
/// FunctionExtensions扩展方法测试类,用于验证高级函数式编程扩展方法的正确性
|
||
/// 包括柯里化、偏函数应用、重复执行、安全执行和缓存等功能的测试
|
||
/// </summary>
|
||
[TestFixture]
|
||
public class FunctionExtensionsTests
|
||
{
|
||
/// <summary>
|
||
/// 测试Partial方法 - 验证部分应用函数功能
|
||
/// </summary>
|
||
[Test]
|
||
public void Partial_Should_Fix_First_Argument_Of_Binary_Function()
|
||
{
|
||
// Arrange
|
||
Func<int, int, int> multiply = (x, y) => x * y;
|
||
|
||
// Act
|
||
var doubleFunction = multiply.Partial(2);
|
||
var result = doubleFunction(5);
|
||
|
||
// Assert
|
||
Assert.That(result, Is.EqualTo(10));
|
||
}
|
||
|
||
/// <summary>
|
||
/// 测试Repeat方法 - 验证重复执行函数功能
|
||
/// </summary>
|
||
[Test]
|
||
public void Repeat_Should_Execute_Function_N_Times()
|
||
{
|
||
// Arrange
|
||
var initialValue = 2;
|
||
|
||
// Act
|
||
var result = initialValue.Repeat(3, x => x * 2);
|
||
|
||
// Assert
|
||
// 2 -> 4 -> 8 -> 16 (3次重复)
|
||
Assert.That(result, Is.EqualTo(16));
|
||
}
|
||
} |