59 lines
1.8 KiB
C#
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);
|
|
}
|
|
} |