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(); 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(); 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(() => source.Cbrt(dest)); } [Fact] public void Cbrt_List_WorksCorrectly() { var list = new List { new(1), new(4) }; var result = list.Cbrt(); Assert.Equal(2, result.Count); Assert.Equal(1, result[0]._Value); Assert.Equal(2, result[1]._Value); } [Fact] public void Cbrt_IEnumerable_NoExtraAllocations() { IEnumerable source = new HashSet { new(9), new(81) }; var result = source.Cbrt().ToList(); Assert.Contains(result, x => x._Value == 3); Assert.Contains(result, x => x._Value == 9); } }