Example #1
0
 def areDefaultSettingsSet(self):
     """
     This method returns True value after review if all of the current
     setting values are the default ones defined into UserDefaultSettings.xml
     file, False otherwise.
     """
     sudokuDefaultSettingsXMLHandler = ConfigurationXML(
                                         self.defaultSettingsFile)
     sudokuGameType = sudokuDefaultSettingsXMLHandler.\
                                             getUserSudokuGameOption()
     sudokuDifficultyLevel = sudokuDefaultSettingsXMLHandler.\
                                             getUserDifficultyLevel()
     sudokuAlgorithmOption = sudokuDefaultSettingsXMLHandler.\
                                             getUserAlgorithmOption()
     sudokuOutputFormat = sudokuDefaultSettingsXMLHandler.\
                                             getUserOutputFormat()
     sudokuPathFile = sudokuDefaultSettingsXMLHandler.getUserFilePath()
     sudokuMatrixDimension = sudokuDefaultSettingsXMLHandler.\
                                             getUserMatrixDimension()
     sudokuFileName = sudokuDefaultSettingsXMLHandler.getUserFileName()
     if(self._sudokuGameType == sudokuGameType and
        self._sudokuDifficultyLevel == sudokuDifficultyLevel and
        self._sudokuAlgorithmOption == sudokuAlgorithmOption and
        self._sudokuOutputFormat == sudokuOutputFormat and
        self._sudokuPathFile == sudokuPathFile and
        self._sudokuMatrixDimension == sudokuMatrixDimension and
        self._sudokuFileName == sudokuFileName):
         return True
     else:
         return False
Example #2
0
    def __init__(self, fileName, defaultSettingsFile):
        """
        This is the Settings Constructor method where it is initialized required
        values by default and it gets the information from the Configuration.xml
        file uses the ConfigurationXML class in order to read the stored values.

        Keyword arguments:
        fileName -- This is a String value of the XML settings File Name which
                    contains the user settings and the options that could be
                    used(i.e. "Configuration.xml").

        defaultSettingsFile --  This is a String value of the XML settings File
                                Name which contains the default settings used to
                                rollback any posible changes that sudoku game
                                user could do (i.e. "UserDefaultSettings.xml").
        """
        self._sudokuSettingsXMLHandler = ConfigurationXML(fileName)
        self.defaultSettingsFile = defaultSettingsFile
        self._sudokuGameType = self._sudokuSettingsXMLHandler.\
                                                    getUserSudokuGameOption()
        self._sudokuDifficultyLevel = self._sudokuSettingsXMLHandler.\
                                                    getUserDifficultyLevel()
        self._sudokuCustomLevel = ""
        self._sudokuAlgorithmOption = self._sudokuSettingsXMLHandler.\
                                                    getUserAlgorithmOption()
        self._sudokuOutputFormat = self._sudokuSettingsXMLHandler.\
                                                    getUserOutputFormat()
        self._sudokuPathFile = self._sudokuSettingsXMLHandler.\
                                                    getUserFilePath()
        self._sudokuFileName = self._sudokuSettingsXMLHandler.\
                                                    getUserFileName()
        self._sudokuMatrixDimension = self._sudokuSettingsXMLHandler.\
                                                    getUserMatrixDimension()
 def setUp(self):
     self.xmlSettingsFile = ConfigurationXML('../Configuration.xml')
class TestConfigurationXML(unittest.TestCase):
    def setUp(self):
        self.xmlSettingsFile = ConfigurationXML('../Configuration.xml')

    def testifGameOptionsareAddedintheXmlFile(self):
        gameType = self.xmlSettingsFile.getSudokuGameOptions()
        expectedOptionsList = ['Solve', 'Generate', 'Change Settings', 'Exit']
        self.assertEqual(expectedOptionsList, gameType)

    def testifDifficultyLevelandBottomTopLevelsareaAddedintheXmlFile(self):
        listOfLevels = self.xmlSettingsFile.getSudokuDifficultyLevels()
        firstLevel = Level(15, 20, "Easy")
        secondLevel = Level(21, 35, "Medium")
        thirdLevel = Level(36, 55, "Hard")
        levelListComparison = (listOfLevels[0] == firstLevel and
                        listOfLevels[1] == secondLevel and
                        listOfLevels[2] == thirdLevel)
        self.assertTrue(levelListComparison)

    def testifAlgorithmOptionsareAddedintheXmlFile(self):
        gameType = self.xmlSettingsFile.getSudokuAlgorithmOptions()
        expecteddificultList = ['BackTracking', 'Peter Norvig', 'Exact']
        self.assertEqual(expecteddificultList, gameType)

    def testifOutputFormatareAddedinthexXmlFile(self):
        gameType = self.xmlSettingsFile.getSudokuOutputFormat()
        expecteddificultList = ['Console', 'File']
        self.assertEqual(expecteddificultList, gameType)

    # Unit tests for write XML methods

    def testifGameOptionSelectedbyUserwasUpdatedinXML(self):
        setTestWriteGameOption = "Solve"
        expectedResult = "Solve"
        self.xmlSettingsFile.writeSudokuGameOptions(setTestWriteGameOption)
        self.assertEqual(expectedResult, self.xmlSettingsFile.\
            getUserSudokuGameOption())

    def testifDifficultyLevelSelectedbyUserwasUpdatedinXML(self):
        expectedResult = Level(21, 35 ,"Medium")
        self.xmlSettingsFile.writeSudokuDifficultyLevels\
            (expectedResult)
        self.assertEqual(expectedResult, self.xmlSettingsFile.\
            getUserDifficultyLevel())

    def testifAlgorithmOptionSelectedbyUserwasUpdatedinXML(self):
        setTestWriteAlgorithmOption = "Peter Norvig"
        expectedResult = "Peter Norvig"
        self.xmlSettingsFile.writeSudokuAlgorithmOptions\
            (setTestWriteAlgorithmOption)
        self.assertEqual(expectedResult, self.xmlSettingsFile.\
            getUserAlgorithmOption())

    def testifOutputFormatSelectedbyUserwasUpdatedinXML(self):
        setTestWriteOutputFormat = "Console"
        expectedResult = "Console"
        self.xmlSettingsFile.writeSudokuOutputFormat\
            (setTestWriteOutputFormat)
        self.assertEqual(expectedResult, self.xmlSettingsFile.\
            getUserOutputFormat())

    def testifOutputPathFileSelectedbyUserwasUpdatedinXML(self):
        setTestWriteOutputPathFile = "c:\\user\\SudokuFile.txt"
        expectedResult = "c:\\user\\SudokuFile.txt"
        self.xmlSettingsFile.writeSudokuFilePath\
            (setTestWriteOutputPathFile)
        self.assertEqual(expectedResult, self.xmlSettingsFile.\
            getUserFilePath())

    def testifMatrixDimensionSelectedwasUpdatedinXML(self):
        setTestWriteMatrixDimension = 9
        expectedResult = 9
        self.xmlSettingsFile.writeSudokuMatrixDimension\
            (setTestWriteMatrixDimension)
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserMatrixDimension())

    def testifGameOptionsetbyUserwasUpdatedinXmlFile(self):
        expectedResult = "Solve"
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserSudokuGameOption())

    def testifUserDifficultyLevelsetbyUserwasUpdatedinXmlFile(self):
        expectedResult = Level(21, 35 ,"Medium")
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserDifficultyLevel())

    def testifAlgorithmOptionsetbyUserwasUpdatedinXmlFile(self):
        expectedResult = "Peter Norvig"
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserAlgorithmOption())

    def testifOutputFormatsetbyUserwasUpdatedinXmlFile(self):
        expectedResult = "Console"
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserOutputFormat())

    def testifFilePathbyUserwasUpdatedinXmlFile(self):
        expectedResult = "c:\\user\\SudokuFile.txt"
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserFilePath())

    def testifFilePathbyUserwasUpdatedinXmlFile(self):
        expectedResult = 9
        self.assertEqual( expectedResult, self.xmlSettingsFile.\
            getUserMatrixDimension())
Example #5
0
class Settings:
    """
    Class Name: Settings
    Description: The Settings class will hold the Sudoku Game Settings that will
                obtain from a XML file at the beginning and also will be able to
                change and save current settings into the corresponding files.
    """

    def __init__(self, fileName, defaultSettingsFile):
        """
        This is the Settings Constructor method where it is initialized required
        values by default and it gets the information from the Configuration.xml
        file uses the ConfigurationXML class in order to read the stored values.

        Keyword arguments:
        fileName -- This is a String value of the XML settings File Name which
                    contains the user settings and the options that could be
                    used(i.e. "Configuration.xml").

        defaultSettingsFile --  This is a String value of the XML settings File
                                Name which contains the default settings used to
                                rollback any posible changes that sudoku game
                                user could do (i.e. "UserDefaultSettings.xml").
        """
        self._sudokuSettingsXMLHandler = ConfigurationXML(fileName)
        self.defaultSettingsFile = defaultSettingsFile
        self._sudokuGameType = self._sudokuSettingsXMLHandler.\
                                                    getUserSudokuGameOption()
        self._sudokuDifficultyLevel = self._sudokuSettingsXMLHandler.\
                                                    getUserDifficultyLevel()
        self._sudokuCustomLevel = ""
        self._sudokuAlgorithmOption = self._sudokuSettingsXMLHandler.\
                                                    getUserAlgorithmOption()
        self._sudokuOutputFormat = self._sudokuSettingsXMLHandler.\
                                                    getUserOutputFormat()
        self._sudokuPathFile = self._sudokuSettingsXMLHandler.\
                                                    getUserFilePath()
        self._sudokuFileName = self._sudokuSettingsXMLHandler.\
                                                    getUserFileName()
        self._sudokuMatrixDimension = self._sudokuSettingsXMLHandler.\
                                                    getUserMatrixDimension()
    def getSudokuGameTypeOptions(self):
        """
        Returns a list of string values with the options of game types(i.e
        "Solve", "Generate")
        """
        return self._sudokuSettingsXMLHandler.getSudokuGameOptions()

    def getSudokuDifficultyLevelOptions(self):
        """
        Returns a list of string values with the options of level types(i.e
        Level(50, 65, "Easy"), Level(40, 49, "Medium"))
        """
        return self._sudokuSettingsXMLHandler.getSudokuDifficultyLevels()

    def getSudokuAlgorithmSolutionOptions(self):
        """
        Returns a list of string values with the options of algorithm types(i.e
        "Backtracking", "Peter Norving"..)
        """
        return self._sudokuSettingsXMLHandler.getSudokuAlgorithmOptions()

    def getSudokuOutputFormatOptions(self):
        """
        Returns a list of string values with the output format options of game
        types(i.e ("Console", "File"))
        """
        return self._sudokuSettingsXMLHandler.getSudokuOutputFormat()


    def getSudokuGameType(self):
        """ Returns a string value of current game type i.e("Solve" or
        "Generate")"""
        return self._sudokuGameType

    def getSudokuDifficultyLevel(self):
        """
        Returns a Level object value of the current Level of sudoku game
        dificulty Level.
        """
        return self._sudokuDifficultyLevel

    def getSudokuAlgorithmOption(self):
        """
        Return the string value of wich algorithm has been choosed to resolve a
        sudoku game.
        """
        return self._sudokuAlgorithmOption

    def getSudokuOutputFormat(self):
        """
        Returns the string value of current output format to display or get the
        results for a sudoku game i.e "File" or "Console".
        """
        return self._sudokuOutputFormat

    def getSudokuPathFile(self):
        """
        Returns the string value of the file path where the output will be
        stored i.e. "..\\Results\\" .
        """
        return self._sudokuPathFile

    def getSudokuFileName(self):
        """
        Returns the string value of the file name where results will be
        solved/generated, i.e. "SudokuGame.txt".
        """
        return self._sudokuFileName

    def getSudokuMatrixDimension(self):
        """
        Returns an integer value of what dimension should have the sudoku matrix
        this is only for internal use, i.e. 9.
        """
        return self._sudokuMatrixDimension

    def setSudokuGameType(self, gameType):
        """
        This method allows set a new value of sudoku game type, posibles values
        are "Solve" or "Generate".

        Keyword arguments:
        gameType -- This is a String value for the new value of
                    self._sudokuGameType i.e. "Solve".
        """
        self._sudokuGameType = gameType

    def setSudokuDifficultyLevel(self, difficultyLevel):
        """
        This method allows set a new Level type value of sudoku difficulty level
        i.e. Level(50, 65, "Easy")

        Keyword arguments:
        difficultyLevel -- This is a Level type value for the new
                            self._difficultyLevel value i.e. Level(50, 65,
                            "Hard").
        """
        self._sudokuDifficultyLevel = difficultyLevel

    def setSudokuAlgorithmOption(self, algorithmOption):
        """
        This method allows set a new value of algorithm to be used to resolve a
        sudoku game.

        Keyword arguments:
        algorithmOption -- This is a String value for the new value of
                            self._algorithmOption i.e."BackTracking".
        """
        self._sudokuAlgorithmOption = algorithmOption

    def setSudokuOutputFormat(self, outputFormat):
        """
        This method allows set a new value of the output format that will be
        used to display the game results.

        Keyword arguments:
        outputFormat -- This is a String value for the new value of
                            self._sudokuOutputFormat i.e."File"
        """
        self._sudokuOutputFormat = outputFormat

    def setSudokuPathFile(self, pathFile):
        """
        This method allows set a new path file value where will be stored the
        sudoku game results.

        Keyword arguments:
        pathFile -- This is a String value for the new value of
                    self._sudokuPathFile i.e."..\\Solution\\"
        """
        self._sudokuPathFile = pathFile

    def setSudokuFileName(self, fileName):
        """
        This method allows set a new value of the filename where will be
        stored the sudoku game results/generation.

        Keyword arguments:
        fileName -- This is a String value for the new value of
                    self._sudokuFileName i.e."MyFile.txt"
        """
        self._sudokuFileName = fileName

    def setSudokuMatrixDimension(self, matrixDimension):
        """
        This method allows set a new value of matrix dimension that should have
        the sudoku game that will be used to solve or generate, this is only for
        internal validation.

        Keyword arguments:
        matrixDimension -- This is a integer value for the new value of
                    self._sudokuMatrixDimension i.e. 9
        """
        self._sudokuMatrixDimension = matrixDimension

    def restoreDefaultSettings(self):
        """
        This method allows restore user saved/current settings to the default
        settings stored at UserDefaultSettings.xml file(Default user settings
        XML), does not return anything.
        """
        sudokuDefaultSettingsXMLHandler = ConfigurationXML\
                                            (self.defaultSettingsFile)
        self._sudokuGameType = sudokuDefaultSettingsXMLHandler.\
                                                getUserSudokuGameOption()
        self._sudokuDifficultyLevel = sudokuDefaultSettingsXMLHandler.\
                                                getUserDifficultyLevel()
        self._sudokuAlgorithmOption = sudokuDefaultSettingsXMLHandler.\
                                                getUserAlgorithmOption()
        self._sudokuOutputFormat = sudokuDefaultSettingsXMLHandler.\
                                                getUserOutputFormat()
        self._sudokuPathFile = sudokuDefaultSettingsXMLHandler.\
                                                getUserFilePath()
        self._sudokuMatrixDimension = sudokuDefaultSettingsXMLHandler.\
                                                getUserMatrixDimension()
        self._sudokuFileName = sudokuDefaultSettingsXMLHandler.\
                                                getUserFileName()
        self.saveCurrentSettings()

    def saveCurrentSettings(self):
        """
        This method allows save the current User setting values of the
        corresponding Settings into the XML file hold on
        self._sudokuSettingsXMLHandler(Configuration.xml), does not return
        anything.
        """
        self._sudokuSettingsXMLHandler.\
                        writeSudokuGameOptions(self._sudokuGameType)
        self._sudokuSettingsXMLHandler.\
                        writeSudokuDifficultyLevels(self._sudokuDifficultyLevel)
        self._sudokuSettingsXMLHandler.\
                        writeSudokuAlgorithmOptions(self._sudokuAlgorithmOption)
        self._sudokuSettingsXMLHandler.\
                        writeSudokuOutputFormat(self._sudokuOutputFormat)
        self._sudokuSettingsXMLHandler.\
                        writeSudokuFilePath(self._sudokuPathFile)
        self._sudokuSettingsXMLHandler.\
                        writeSudokuMatrixDimension(self._sudokuMatrixDimension)
        self._sudokuSettingsXMLHandler.\
                        writeSudokuFileName(self._sudokuFileName)

    def areDefaultSettingsSet(self):
        """
        This method returns True value after review if all of the current
        setting values are the default ones defined into UserDefaultSettings.xml
        file, False otherwise.
        """
        sudokuDefaultSettingsXMLHandler = ConfigurationXML(
                                            self.defaultSettingsFile)
        sudokuGameType = sudokuDefaultSettingsXMLHandler.\
                                                getUserSudokuGameOption()
        sudokuDifficultyLevel = sudokuDefaultSettingsXMLHandler.\
                                                getUserDifficultyLevel()
        sudokuAlgorithmOption = sudokuDefaultSettingsXMLHandler.\
                                                getUserAlgorithmOption()
        sudokuOutputFormat = sudokuDefaultSettingsXMLHandler.\
                                                getUserOutputFormat()
        sudokuPathFile = sudokuDefaultSettingsXMLHandler.getUserFilePath()
        sudokuMatrixDimension = sudokuDefaultSettingsXMLHandler.\
                                                getUserMatrixDimension()
        sudokuFileName = sudokuDefaultSettingsXMLHandler.getUserFileName()
        if(self._sudokuGameType == sudokuGameType and
           self._sudokuDifficultyLevel == sudokuDifficultyLevel and
           self._sudokuAlgorithmOption == sudokuAlgorithmOption and
           self._sudokuOutputFormat == sudokuOutputFormat and
           self._sudokuPathFile == sudokuPathFile and
           self._sudokuMatrixDimension == sudokuMatrixDimension and
           self._sudokuFileName == sudokuFileName):
            return True
        else:
            return False