Ejemplo n.º 1
0
        protected unsafe void PerformManipulation <TOrigin, TTarget>(TOrigin[] origin, TTarget[] target, ArrayManipulationOperation <TOrigin, TTarget> operation)
            where TOrigin : unmanaged
            where TTarget : unmanaged
        {
            DebugAssertionHelpers.TestArrays(origin, target);

            fixed(TOrigin *o = origin)
            fixed(TTarget * t = target)
            {
                if (!operation(o, t, ArrayLength))
                {
                    UnsupportedInstructionSet();
                }

                for (int i = 0; i < ArrayLength; i++)
                {
                    Assert.AreEqual(GetExpectedResult <TOrigin, TTarget>(o, i), target[i], $"{i}/{ArrayLength}");
                }
            }

            // Clear for debugging purposes
            Array.Clear(target, 0, ArrayLength);
        }
Ejemplo n.º 2
0
 protected unsafe void PerformManipulationArray <TOrigin>(ArrayManipulationOperation <TOrigin, TOrigin> operation)
     where TOrigin : unmanaged
 {
     PerformManipulation(new TOrigin[ArrayLength], new TOrigin[ArrayLength], operation);
 }