sudoku solution validator

HTML

<script src="http://searls.github.io/jasmine-all/jasmine-all-min.js"></script>

CoffeeScript

gridStrings = [
 '751843926893625174642179583425316798176982345938754612364297851289531467517468239' # valid
 '751843927893625174642179583425316798176982345938754612364297851289531467517468239' # invalid
 '571843926893625174642179583425316798176982345938754612364297851289531467517468239' # invalid
 '851743926693825174142679583425316798976182345738954612364297851289531467517468239' # invalid
]

isValidSolution = (gridString) ->
    return false if gridString.length isnt 81
    gridArray = gridStringToArray gridString
    return false unless checkRows gridArray
    return false unless checkColumns gridArray
    return false unless checkBoxes gridArray
    true

checkRows = (gridArray) ->
    for y in [0...9]
        arrCopy = gridArray[y].slice 0
        unless arrCopy.sort().join('') is '123456789'
            return false
    true

checkColumns = (gridArray) ->
    swappedGrid = []
    for y in [0...9]
        for x in [0...9]
            swappedGrid[y] = [] unless swappedGrid[y]
            swappedGrid[y][x] = gridArray[x][y]
    return checkRows swappedGrid

checkBoxes = (gridArray) ->
    for boxY in [0...3]
        for boxX in [0...3]
            boxCells = []
            for y in [0...3]
                for x in [0...3]
                    xIndex = x + (boxX * 3)
                    yIndex = y + (boxY * 3)
                    boxCells.push gridArray[yIndex][xIndex]
            return false unless boxCells.sort('').join('') is '123456789'
    true

gridStringToArray = (gridString) ->
    gridArray = gridString.split ''
    width = 9
    arr = []
    for y in [0...9]
        arr[y] = []
        for x in [0...9]
            arr[y][x] = gridArray[y * width + x]
    arr

describe 'isValidSolution', ->
    it 'checks for incorrect string length', ->
        invalidGridString = 'hello'
        expect(isValidSolution(invalidGridString)).toEqual false
    
    it 'handles correct case', ->
        expect(isValidSolution(gridStrings[0])).toEqual true

    it 'handles...