Example #1
0
    def getSudokuString(self):
        """
        This method asks to the user for the Sudoku game to be solved.

        If the option selected is Console, the input expected is a string with
        the matrix unsolved:
        '001093000000100004020060370700000005080504060400000008092080010100009000000340600'

        If the option selected is File, the input expected is the filename
        which contains the matrix unsolved in .txt or .csv format.
        i.e: 'SodukuGame.txt'
        """
        option = self.settingsSudoku.getSudokuOutputFormat()
        if option == "Console":
            return self.getUserInput("Enter the SUDOKU to be solved in a string line")
        if option == "File":
            fileNameFull = self.getUserInput("Please enter file name with extension")
            if os.path.exists(fileNameFull):
                fileName, fileExtension = os.path.splitext(fileNameFull)
                if fileExtension == ".txt":
                    txtFile = SudokuTXTReader(fileNameFull, self.settingsSudoku.getSudokuMatrixDimension())
                    return txtFile.readSudokuFromTXTFile()
                if fileExtension == ".csv":
                    csvFile = SudokuCSVReader(fileNameFull, self.settingsSudoku.getSudokuMatrixDimension())
                    return csvFile.getSudokuString()
 def setUp(self):
     self.txtObject = SudokuTXTReader("requiredtestfiles/sudokusolve.txt", 9)
 def testEachRowContainsSizeEntriesWhenProvidedWrongFormat(self):
     wrongFormatTXTObject = SudokuTXTReader\
                             ("requiredtestfiles/wrongsizesolve.txt", 9)
     expected = wrongFormatTXTObject._countRowsSizeEntries()
     self.assertFalse(expected)
class TestSudokuTXTReader(unittest.TestCase):

    def setUp(self):
        self.txtObject = SudokuTXTReader("requiredtestfiles/sudokusolve.txt", 9)

    def testReadSudokuStringFromTXTFile(self):
        expected =  "001700600090043000007000810003050900002" + \
                    "600075080000020040009002605021008000800040"
        review = self.txtObject.readSudokuFromTXTFile()
        self.assertEquals(expected, review)

    def testSizeOfSudokuStringFromTXTFile(self):
        expected = self.txtObject.isSizeAccurate()
        self.assertTrue(expected)

    def testSetTXTFileName(self):
        expected = "NewTXTFile.txt"
        self.txtObject.setTXTFileName(expected)
        self.assertEqual(expected, self.txtObject._txtFileName)

    def testAreOnlyAllowedNumbers(self):
        expected = self.txtObject.areOnlyAllowedNumbers()
        self.assertTrue(expected)

    def testProvideWrongValuesUsingAlphanumericCharsInsteadOfDigits(self):
        self.txtObject.__init__("requiredtestfiles/wrongsudokusolve.txt", 9)
        expected = self.txtObject.areOnlyAllowedNumbers()
        self.assertFalse(expected)
        self.txtObject.__init__("requiredtestfiles/sudokusolve.txt", 9)

    def testCountLinesProvidedInTXTFile(self):
        expected = self.txtObject.isDimensionAccurate()
        self.assertTrue(expected)

    def testISFileProvidedAccurate(self):
        expected = self.txtObject.isTXTContentValid()
        self.assertTrue(expected)

    def testEachRowContainsSizeEntriesWhenProvidedWrongFormat(self):
        wrongFormatTXTObject = SudokuTXTReader\
                                ("requiredtestfiles/wrongsizesolve.txt", 9)
        expected = wrongFormatTXTObject._countRowsSizeEntries()
        self.assertFalse(expected)