예제 #1
0
        //
        //Puede utilizar los siguientes atributos adicionales mientras escribe sus pruebas:
        //
        //Use ClassInitialize para ejecutar código antes de ejecutar la primera prueba en la clase
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //Use ClassCleanup para ejecutar código después de haber ejecutado todas las pruebas en una clase
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //Use TestInitialize para ejecutar código antes de ejecutar cada prueba
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //Use TestCleanup para ejecutar código después de que se hayan ejecutado todas las pruebas
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion


        /// <summary>
        ///Una prueba de GetIndexFromPositionOnMatrix
        ///</summary>
        public void GetIndexFromPositionOnMatrixTestHelper <T>(int rowCount, int columnCount)
        {
            var matrix = new MatrixRotation.Matrix <int>(rowCount, columnCount);

            for (int r = 0; r < matrix.RowCount; r++)
            {
                for (int c = 0; c < matrix.ColumnCount; c++)
                {
                    matrix[r, c] = r * 10 + c;
                }
            }

            int frameCount = Math.Min(matrix.RowCount, matrix.ColumnCount) / 2;

            for (int frameIndex = 0; frameIndex < frameCount; frameIndex++)
            {
                var frame = Frame <int> .FromMatrix(matrix, frameIndex, 0);

                var frameAccesor = new PrivateObject(frame);
                var enumerable   = new MatrixRotation.PositionOnMatrixFrameStyleEnumerable(matrix.RowCount, matrix.ColumnCount, frameIndex);
                var i            = 0;

                foreach (MatrixRotation.PositionOnMatrix pos in enumerable)
                {
                    Assert.AreEqual(i, frameAccesor.Invoke("GetIndexFromPositionOnMatrix", pos));
                    i++;
                }
            }
        }
예제 #2
0
        public void SetFrameInMatrix(ref Matrix <T> matrix)
        {
            var enumerable = new PositionOnMatrixFrameStyleEnumerable(_rowCount, _columnCount, _frameIndex);

            foreach (PositionOnMatrix p in enumerable)
            {
                matrix[p.Row, p.Column] = this[GetIndexFromPositionOnMatrix(p)];
            }
        }
예제 #3
0
        public static Frame <T> FromMatrix(Matrix <T> matrix, int frameIndex, int startIndex)
        {
            if (frameIndex >= Math.Min(matrix.RowCount, matrix.ColumnCount) / 2)
            {
                throw new ArgumentOutOfRangeException("frameIndex", "frameIndex must be lower than Math.Min(matrix.RowCount, matrix.ColumnCount) / 2");
            }

            var enumerable = new PositionOnMatrixFrameStyleEnumerable(matrix.RowCount, matrix.ColumnCount, frameIndex);
            var values     = enumerable.Select(x => matrix[x.Row, x.Column]).ToArray();

            return(new Frame <T>(values, startIndex, frameIndex, matrix.RowCount, matrix.ColumnCount));
        }