Files
QWERTYkez.Mensura/QWERTYkez.Mensura.Tests/CollectionsRootOfSquareExtensionsTest.cs

75 lines
1.9 KiB
C#
Raw Normal View History

2026-06-11 15:42:01 +07:00
namespace QWERTYkez.Mensura.Tests;
2026-06-12 23:34:00 +07:00
public class CollectionsRootOfSquareExtensionsTest
2026-06-11 15:42:01 +07:00
{
[Fact]
public void Sqrt_Array_ShouldCalculateCorrectly()
{
// Arrange
Length[] source = [new(4), new(9), new(16)];
// Act
Length[] result = source.Sqrt<Length, Length>();
// Assert
Assert.Equal(2, result[0]._Value);
Assert.Equal(3, result[1]._Value);
Assert.Equal(4, result[2]._Value);
}
[Fact]
public void Sqrt_NullableArray_ShouldHandleNulls()
{
// Arrange
Length?[] source = [new(25), null, new(100)];
// Act
Length?[] result = source.Sqrt<Length, Length>();
// Assert
Assert.Equal(5, result[0]?._Value);
2026-06-12 23:34:00 +07:00
Assert.Equal(0, result[1]?._Value);
2026-06-11 15:42:01 +07:00
Assert.Equal(10, result[2]?._Value);
}
[Fact]
public void Sqrt_List_ShouldReturnCorrectList()
{
// Arrange
var source = new List<Length> { new(1), new(4), new(9) };
// Act
var result = source.Sqrt<Length, Length>();
// Assert
Assert.Equal(3, result.Count);
Assert.Equal(1, result[0]._Value);
Assert.Equal(2, result[1]._Value);
Assert.Equal(3, result[2]._Value);
}
[Fact]
public void Sqrt_DestinationTooShort_ShouldThrowArgumentException()
{
// Arrange
Length[] source = [new(4), new(9)];
Length[] dest = new Length[1]; // Слишком мало
// Act & Assert
Assert.Throws<ArgumentException>(() => source.AsSpan().Sqrt(dest.AsSpan()));
}
[Fact]
public void Sqrt_IEnumerable_ShouldWorkWithGenericCollection()
{
// Arrange
IEnumerable<Length> source = new HashSet<Length> { new(16), new(64) };
// Act
var result = source.Sqrt<Length, Length>().ToList();
// Assert
Assert.Contains(result, x => x._Value == 4);
Assert.Contains(result, x => x._Value == 8);
}
}