Пример #1
0
def test_validate_rows():
    board = [
        [4, 2, 6, 8, 5, 3, 9, 9, 1],  # invalid first row
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.validate_rows() == False
    assert sv.validate_cols() == False

    board = [
        [4, 2, 6, 8, 5, 3, 7, 9, 1],  # invalid last row
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 9, 9, 1],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.validate_rows() == False
    assert sv.validate_cols() == False
Пример #2
0
def test_valid_squares():
    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 5, 3, 4, 8],
        [1, 9, 8, 3, 4, 2, 5, 6, 7],
        [8, 5, 9, 7, 6, 1, 4, 2, 3],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [9, 6, 1, 5, 3, 7, 2, 8, 4],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [3, 4, 5, 2, 8, 6, 1, 7, 9],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == True
    assert sv.validate_squares() == True

    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 5, 3, 4, 8],
        [1, 9, 8, 3, 4, 2, 5, 6, 7],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [3, 4, 5, 2, 8, 6, 1, 7, 9],
        [8, 5, 9, 7, 6, 1, 4, 2, 3],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [9, 6, 1, 5, 3, 7, 2, 8, 4],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == False
    assert sv.validate_squares() == False
Пример #3
0
def test_num_invalid_rows():
    board = [
        [4, 2, 6, 8, 5, 3, 9, 9, 1],  # invalid first row
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
    ]
    sv = validator.SudokuValidator(board)
    assert len(sv.invalid_rows) == 1
    assert 0 in sv.invalid_rows
    assert 3 not in sv.invalid_rows

    board = [
        [4, 2, 6, 8, 5, 3, 9, 9, 1],  # invalid first row
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 9, 9, 1],  # invalid row
    ]
    sv = validator.SudokuValidator(board)
    assert len(sv.invalid_rows) == 2
    assert 0 in sv.invalid_rows
    assert 8 in sv.invalid_rows
    assert 3 not in sv.invalid_rows
    assert sv.invalid_rows[0] == [4, 2, 6, 8, 5, 3, 9, 9, 1]
Пример #4
0
def test_validate_boards_9_by_9():
    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 0, 3, 4, 9],
        [1, 0, 0, 3, 4, 2, 5, 6, 0],
        [8, 5, 9, 7, 6, 1, 0, 2, 0],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [9, 0, 1, 5, 3, 7, 2, 1, 4],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [3, 0, 0, 4, 8, 1, 1, 7, 9],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == False

    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 5, 3, 4, 8],
        [1, 9, 8, 3, 4, 2, 5, 6, 7],
        [8, 5, 9, 7, 6, 1, 4, 2, 3],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [9, 6, 1, 5, 3, 7, 2, 8, 4],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [3, 4, 5, 2, 8, 6, 1, 7, 9],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == True
Пример #5
0
def test_validate_boards_4_by_4():
    board = [[4, 2, 1, 3], [1, 3, 4, 2], [3, 1, 2, 4], [2, 3, 1, 1]]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == False

    board = [[1, 3, 4, 2], [3, 1, 2, 4], [2, 4, 3, 1], [4, 2, 1, 3]]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == False

    board = [[4, 2, 1, 3], [1, 3, 4, 2], [3, 1, 2, 4], [2, 4, 3, 1]]
    sv = validator.SudokuValidator(board)
    assert sv.valid_board == True
Пример #6
0
def test_validate_cols():
    # invalid first col
    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 5, 3, 4, 8],
        [1, 9, 8, 3, 4, 2, 5, 6, 7],
        [8, 5, 9, 7, 6, 1, 4, 2, 3],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [9, 6, 1, 5, 3, 7, 2, 8, 4],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [1, 4, 5, 2, 8, 6, 1, 7, 9],
    ]

    sv = validator.SudokuValidator(board)
    assert sv.validate_rows() == False
    assert sv.validate_cols() == False

    # invalid last col
    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 5, 3, 4, 8],
        [1, 9, 8, 3, 4, 2, 5, 6, 7],
        [8, 5, 9, 7, 6, 1, 4, 2, 3],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [9, 6, 1, 5, 3, 7, 2, 8, 4],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [3, 4, 5, 2, 8, 6, 1, 7, 3],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.validate_rows() == False
    assert sv.validate_cols() == False

    # invalid middle col
    board = [
        [5, 3, 4, 6, 7, 8, 9, 1, 2],
        [6, 7, 2, 1, 9, 5, 3, 4, 8],
        [1, 9, 8, 3, 4, 2, 5, 6, 7],
        [8, 5, 9, 7, 6, 1, 4, 2, 3],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [7, 1, 3, 9, 2, 4, 8, 5, 6],
        [9, 6, 1, 5, 1, 7, 2, 8, 4],
        [2, 8, 7, 4, 1, 9, 6, 3, 5],
        [3, 4, 5, 2, 8, 6, 1, 7, 3],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.validate_rows() == False
    assert sv.validate_cols() == False
Пример #7
0
def test_validate_lines_duplicate_rows():
    board = [
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
        [4, 2, 6, 8, 5, 3, 7, 9, 1],
    ]
    sv = validator.SudokuValidator(board)
    assert sv.validate_rows() == True
    assert sv.validate_cols() == False