using GFramework.Core.Extensions; using NUnit.Framework; namespace GFramework.Core.Tests.Extensions; /// /// 测试 NumericExtensions 扩展方法的功能 /// [TestFixture] public class NumericExtensionsTests { /// /// 测试Between方法在值在范围内时返回true /// [Test] public void Between_Should_Return_True_When_Value_Is_Within_Range() { // Arrange var value = 50; // Act var result = value.Between(0, 100); // Assert Assert.That(result, Is.True); } /// /// 测试Between方法在值等于最小值时返回true /// [Test] public void Between_Should_Return_True_When_Value_Equals_Min() { // Arrange var value = 0; // Act var result = value.Between(0, 100); // Assert Assert.That(result, Is.True); } /// /// 测试Between方法在值等于最大值时返回true /// [Test] public void Between_Should_Return_True_When_Value_Equals_Max() { // Arrange var value = 100; // Act var result = value.Between(0, 100); // Assert Assert.That(result, Is.True); } /// /// 测试Between方法在值小于最小值时返回false /// [Test] public void Between_Should_Return_False_When_Value_Is_Less_Than_Min() { // Arrange var value = -10; // Act var result = value.Between(0, 100); // Assert Assert.That(result, Is.False); } /// /// 测试Between方法在值大于最大值时返回false /// [Test] public void Between_Should_Return_False_When_Value_Is_Greater_Than_Max() { // Arrange var value = 150; // Act var result = value.Between(0, 100); // Assert Assert.That(result, Is.False); } /// /// 测试Between方法在边界不包含时返回false /// [Test] public void Between_Should_Return_False_When_Value_Equals_Boundary_And_Not_Inclusive() { // Arrange var value = 0; // Act var result = value.Between(0, 100, inclusive: false); // Assert Assert.That(result, Is.False); } /// /// 测试Between方法在最小值大于最大值时抛出ArgumentException /// [Test] public void Between_Should_Throw_ArgumentException_When_Min_Is_Greater_Than_Max() { // Arrange var value = 50; // Act & Assert Assert.Throws(() => value.Between(100, 0)); } /// /// 测试Lerp方法在t为0时返回起始值 /// [Test] public void Lerp_Should_Return_From_When_T_Is_Zero() { // Arrange & Act var result = 0f.Lerp(100f, 0f); // Assert Assert.That(result, Is.EqualTo(0f)); } /// /// 测试Lerp方法在t为1时返回结束值 /// [Test] public void Lerp_Should_Return_To_When_T_Is_One() { // Arrange & Act var result = 0f.Lerp(100f, 1f); // Assert Assert.That(result, Is.EqualTo(100f)); } /// /// 测试Lerp方法在t为0.5时返回中间值 /// [Test] public void Lerp_Should_Return_Midpoint_When_T_Is_Half() { // Arrange & Act var result = 0f.Lerp(100f, 0.5f); // Assert Assert.That(result, Is.EqualTo(50f)); } /// /// 测试InverseLerp方法在值等于起始值时返回0 /// [Test] public void InverseLerp_Should_Return_Zero_When_Value_Equals_From() { // Arrange & Act var result = 0f.InverseLerp(0f, 100f); // Assert Assert.That(result, Is.EqualTo(0f)); } /// /// 测试InverseLerp方法在值等于结束值时返回1 /// [Test] public void InverseLerp_Should_Return_One_When_Value_Equals_To() { // Arrange & Act var result = 100f.InverseLerp(0f, 100f); // Assert Assert.That(result, Is.EqualTo(1f)); } /// /// 测试InverseLerp方法在值为中间值时返回0.5 /// [Test] public void InverseLerp_Should_Return_Half_When_Value_Is_Midpoint() { // Arrange & Act var result = 50f.InverseLerp(0f, 100f); // Assert Assert.That(result, Is.EqualTo(0.5f)); } /// /// 测试InverseLerp方法在起始值等于结束值时抛出DivideByZeroException /// [Test] public void InverseLerp_Should_Throw_DivideByZeroException_When_From_Equals_To() { // Arrange & Act & Assert Assert.Throws(() => 50f.InverseLerp(100f, 100f)); } }