Files
QWERTYkez.Mensura/QWERTYkez.Mensura.Tests/CollectionsRootOfCubeExtensions.cs
melekhin 790a5f8e10 tests
2026-06-11 15:42:01 +07:00

59 lines
1.8 KiB
C#

namespace QWERTYkez.Mensura.Tests;
public class CollectionsRootOfCubeExtensions
{
[Fact]
public void Cbrt_Array_CalculatesCorrectly()
{
Length[] source = [new(4), new(9), new(16), new(25)];
// Ожидаем корень, но важно: Math.Sqrt(4) = 2.
// Если ваш код делает специфичные преобразования, адаптируйте Assert.
var result = source.Cbrt<Length, Length>();
Assert.Equal(2, result[0]._Value);
Assert.Equal(3, result[1]._Value);
Assert.Equal(4, result[2]._Value);
Assert.Equal(5, result[3]._Value);
}
[Fact]
public void Cbrt_NullableArray_HandlesNulls()
{
Length?[] source = [new(16), null, new(36)];
var result = source.Cbrt<Length, Length>();
Assert.Equal(4, result[0]?._Value);
Assert.Null(result[1]);
Assert.Equal(6, result[2]?._Value);
}
[Fact]
public void Cbrt_DestinationTooShort_ThrowsArgumentException()
{
Length[] source = [new(1), new(4)];
Length[] dest = new Length[1];
Assert.Throws<ArgumentException>(() => source.Cbrt(dest));
}
[Fact]
public void Cbrt_List_WorksCorrectly()
{
var list = new List<Length> { new(1), new(4) };
var result = list.Cbrt<Length, Length>();
Assert.Equal(2, result.Count);
Assert.Equal(1, result[0]._Value);
Assert.Equal(2, result[1]._Value);
}
[Fact]
public void Cbrt_IEnumerable_NoExtraAllocations()
{
IEnumerable<Length> source = new HashSet<Length> { new(9), new(81) };
var result = source.Cbrt<Length, Length>().ToList();
Assert.Contains(result, x => x._Value == 3);
Assert.Contains(result, x => x._Value == 9);
}
}