def test_matrix_minor_raises_if_idx_out_of_bounds():

    A = np.array([[3, 13, 14, 10, 12], [8, 15, 4, 16, 5], [6, 11, 7, 9, 17]])

    with raises(AssertionError):
        _ = matrix_minor(A, 0, 5)  # 5 exceeds index of final column

    with raises(AssertionError):
        _ = matrix_minor(A, 3, 0)  # 3 exceeds index of final row
def test_matrix_minor_raises_if_array_not_at_least_2x2():

    A = np.array([3, 13, 14, 10, 12]).reshape(1, 5)

    with raises(AssertionError):
        _ = matrix_minor(A, 0, 2)

    A = np.array([3, 13, 14, 10, 12]).reshape(5, 1)

    with raises(AssertionError):
        _ = matrix_minor(A, 2, 0)
def test_matrix_minor_2x2():

    A = np.array([[3, 13], [8, 15]])

    output = matrix_minor(A, 1, 1)
    expected = np.array([[3]])
    assert_allclose(output, expected)
def test_matrix_minor_interior():

    A = np.array([[3, 13, 14, 10, 12], [8, 15, 4, 16, 5], [6, 11, 7, 9, 17]])

    output = matrix_minor(A, 1, 3)
    expected = np.array([[3, 13, 14, 12], [6, 11, 7, 17]])

    assert_allclose(output, expected)
def test_matrix_minor():

    A = np.array([[3, 13, 14, 10, 12], [8, 15, 4, 16, 5],
                  [6, 11, 7, 9, 17]])  # <- eliminate this row (idx = 2)
    #                  \
    #                   eliminate this column (idx = 1)

    output = matrix_minor(A, 2, 1)
    expected = np.array([[3, 14, 10, 12], [8, 4, 16, 5]])

    assert_allclose(output, expected)