public void TestConcate() { Matrix<float> mat = new Matrix<float>(30, 40); mat.SetRandUniform(new MCvScalar(0), new MCvScalar(255)); Matrix<float> m1 = mat.GetSubRect(new Rectangle(0, 0, mat.Cols, 20)); Matrix<float> m2 = mat.GetSubRect(new Rectangle(0, 20, mat.Cols, mat.Rows - 20)); Matrix<float> mat2 = m1.ConcateVertical(m2); Assert.IsTrue(mat.Equals(mat2)); Matrix<float> m3 = mat.GetSubRect(new Rectangle(0, 0, 10, mat.Rows)); Matrix<float> m4 = mat.GetSubRect(new Rectangle(10, 0, mat.Cols - 10, mat.Rows)); Matrix<float> mat3 = m3.ConcateHorizontal(m4); Assert.IsTrue(mat.Equals(mat3)); Matrix<float> m5 = mat.GetRows(0, 5, 1); Matrix<float> m6 = mat.GetRows(5, 6, 1); Matrix<float> m7 = mat.GetRows(6, mat.Rows, 1); Assert.IsTrue(mat.RemoveRows(5, 6).Equals(m5.ConcateVertical(m7))); Assert.IsTrue(mat.RemoveRows(0, 1).Equals(mat.GetRows(1, mat.Rows, 1))); Assert.IsTrue(mat.RemoveRows(mat.Rows - 1, mat.Rows).Equals(mat.GetRows(0, mat.Rows - 1, 1))); }
public void RemoveRowsTest() { IMatrix<int> matrix = new Matrix<int>(10, 10); int number = 0; for (int r = 0; r < matrix.Rows; r++) { for (int c = 0; c < matrix.Columns; c++) { matrix[r, c] = number++; } } int orgRows = matrix.Rows; matrix.RemoveRows(5); Assert.AreEqual(orgRows - 5, matrix.Rows); number = 0; for (int r = 0; r < orgRows; r++) { for (int c = 0; c < matrix.Columns; c++) { if (r < matrix.Rows) { Assert.AreEqual(number++, matrix[r, c]); } else { number++; } } } matrix.RemoveRows(5); // 0 Assert.AreEqual(0, matrix.Rows); AssertHelpers.ThrowsException<MatrixException>(() => { matrix.RemoveRows(1); }); matrix.RemoveRows(-5); Assert.AreEqual(5, matrix.Rows); }