public void Test_ParallelHelper_ForEach_Ref()
        {
            foreach (int count in TestForCounts)
            {
                using UnmanagedSpanOwner <int> data = CreateRandomData(count);
                using UnmanagedSpanOwner <int> copy = new UnmanagedSpanOwner <int>(count);

                data.GetSpan().CopyTo(copy.GetSpan());

                foreach (ref int n in copy.GetSpan())
                {
                    n = unchecked (n * 397);
                }

                ParallelHelper.ForEach(data.Memory, new Multiplier(397));

                Span <int> dataSpan = data.GetSpan();
                Span <int> copySpan = copy.GetSpan();

                for (int i = 0; i < data.Length; i++)
                {
                    if (dataSpan[i] != copySpan[i])
                    {
                        Assert.Fail($"Item #{i} was not a match, was {dataSpan[i]} instead of {copySpan[i]}");
                    }
                }
            }
        }
        public unsafe void Test_ParallelHelper_ForEach_In()
        {
            foreach (int count in TestForCounts)
            {
                using UnmanagedSpanOwner <int> data = CreateRandomData(count);

                int sum = 0;

                ParallelHelper.ForEach <int, Summer>(data.Memory, new Summer(&sum));

                int expected = 0;

                foreach (int n in data.GetSpan())
                {
                    expected += n;
                }

                Assert.AreEqual(sum, expected, $"The sum doesn't match, was {sum} instead of {expected}");
            }
        }
        public unsafe void Test_ParallelHelper_For2DWithRanges()
        {
            foreach (var size in TestFor2DSizes)
            {
                using UnmanagedSpanOwner <int> data = new UnmanagedSpanOwner <int>(size.Height * size.Width);

                data.GetSpan().Clear();

                ParallelHelper.For2D(..size.Height, ..size.Width, new Assigner2D(size.Height, size.Width, data.Ptr));

                for (int i = 0; i < size.Height; i++)
                {
                    for (int j = 0; j < size.Width; j++)
                    {
                        if (data.Ptr[(i * size.Width) + j] != unchecked (i * 397 ^ j))
                        {
                            Assert.Fail($"Invalid item at position [{i},{j}], value was {data.Ptr[(i * size.Width) + j]} instead of {unchecked(i * 397 ^ j)}");
                        }
                    }
                }
            }
        }