private bool CheckSortingResult(int[][] sortedArray, IRowSortingType rowSortingType, bool sortOrder)
        {
            if (sortedArray.Length == 1)
            {
                return(true);
            }

            var rowsPriority = new int[sortedArray.Length];

            for (int i = 0; i < sortedArray.Length; ++i)
            {
                rowsPriority[i] = rowSortingType.RowPriority(sortedArray[i]);
            }

            for (int i = 1; i < rowsPriority.Length; ++i)
            {
                if (sortOrder)
                {
                    if (rowsPriority[i - 1] > rowsPriority[i])
                    {
                        return(false);
                    }
                }
                else
                {
                    if (rowsPriority[i - 1] < rowsPriority[i])
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// The method sorts a two-dimensional array by rows.
        /// </summary>
        /// <param name="array">
        /// Array to sort.
        /// </param>
        /// <param name="rowSortingType">
        /// Sorting type.
        /// </param>
        /// <param name="sortOrder">
        /// Sort order.
        /// </param>
        /// <exception cref="ArgumentException">
        /// Array to sort is null.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// Array to sort length is zero.
        /// </exception>
        public static void SortByRows(this int[][] array, IRowSortingType rowSortingType, bool sortOrder)
        {
            SortByRowsInputValidation(array);

            var rowsPriority = new int[array.Length];

            for (int i = 0; i < array.Length; ++i)
            {
                rowsPriority[i] = rowSortingType.RowPriority(array[i]);
            }

            array.SortArrayByPriorityArray(rowsPriority, sortOrder);
        }
        public void SortByRows_NotEmptyArray_SortedByRowsArray(int[] arrayDimensions, int[] arrayElements, IRowSortingType rowSortingType, bool sortingOrder)
        {
            var array = CreateArrayFromData(arrayDimensions, arrayElements);

            array.SortByRows(rowSortingType, sortingOrder);

            Assert.IsTrue(CheckSortingResult(array, rowSortingType, sortingOrder));
        }
 public void SortByRows_ArrayLengthIsZero_ExpectedArgumentException(int[][] array, IRowSortingType rowSortingType, bool sortingOrder)
 => Assert.Throws <ArgumentException>(() => array.SortByRows(rowSortingType, sortingOrder));