def setUp(self):
     self.i = FuncIntellect()
class TestFuncIntellect(unittest.TestCase):


    def setUp(self):
        self.i = FuncIntellect()


    def testGetIntellectPath(self):
        """ Создаём фейковый параметр в реестре и тестируем на нём. Тестируем для разных платформ:
        """
        # Создаём временный ключ реестра для испытаний:
        self.i.regPath = "SOFTWARE\\Kirs_temp"
        handle = _winreg.CreateKey(_winreg.HKEY_LOCAL_MACHINE, self.i.regPath)
        # Тесты:
        _winreg.SetValueEx(handle, "InstallPath", 0, _winreg.REG_SZ, "Z:\\fff\\xxx.exe")
        self.assertEquals(self.i.getIntellectPath(), "Z:\\fff\\xxx.exe")  # При существующем параметре с корректным именем.
        _winreg.SetValueEx(handle, "InstallPath", 0, _winreg.REG_SZ, "Alskd;Test")
        self.assertRaises(ValueError, self.i.getIntellectPath)  # При некорректном параметре.
        _winreg.DeleteValue(handle, "InstallPath")
        self.assertEquals(self.i.getIntellectPath(), None)  # При отсутсвующем параметре.
        # Очищаем параметры.
        _winreg.CloseKey(handle)
        _winreg.DeleteKey(_winreg.HKEY_LOCAL_MACHINE, self.i.regPath)


    def testGetIntellectType(self):
        # Создаём временный ключ реестра для испытаний:
        self.i.regPath = "SOFTWARE\\Kirs_temp"
        handle = _winreg.CreateKey(_winreg.HKEY_LOCAL_MACHINE, self.i.regPath)
        # Тесты:
        _winreg.SetValueEx(handle, "InstallType", 0, _winreg.REG_SZ, "server")
        self.assertEquals(self.i.getIntellectType(), "server")  # При существующем параметре с корректным именем.
        _winreg.SetValueEx(handle, "InstallType", 0, _winreg.REG_SZ, "Alskd;Test")
        self.assertRaises(ValueError, self.i.getIntellectType)  # При некорректном параметре.
        _winreg.DeleteValue(handle, "InstallType")
        self.assertEquals(self.i.getIntellectType(), None)  # При отсутсвующем параметре.
        # Очищаем параметры.
        _winreg.CloseKey(handle)
        _winreg.DeleteKey(_winreg.HKEY_LOCAL_MACHINE, self.i.regPath)


    def testGetIntellectVersion(self):
        # Создаём временный ключ реестра для испытаний:
        self.i.regPath = "SOFTWARE\\Kirs_temp"
        handle = _winreg.CreateKey(_winreg.HKEY_LOCAL_MACHINE, self.i.regPath)
        # Тесты:
        _winreg.SetValueEx(handle, "InstallVersion", 0, _winreg.REG_SZ, "4.7.8.123")
        self.assertEquals(self.i.getIntellectVersion(), "4.7.8.123")  # При существующем параметре с корректным именем.
        _winreg.SetValueEx(handle, "InstallVersion", 0, _winreg.REG_SZ, "Alskd;Test")
        self.assertRaises(ValueError, self.i.getIntellectVersion)  # При некорректном параметре.
        _winreg.DeleteValue(handle, "InstallVersion")
        self.assertEquals(self.i.getIntellectVersion(), None)  # При отсутсвующем параметре.
        # Очищаем параметры.
        _winreg.CloseKey(handle)
        _winreg.DeleteKey(_winreg.HKEY_LOCAL_MACHINE, self.i.regPath)


    def testGetIntellectExecState(self):
        class tempClass:  # Временный класс для подмены используемых тестируемым методом методов.
            def __init__(self):
                self.processList = []
                self.intellectType = ""
            def getProcessList(self):
                return self.processList
            def getIntellectType(self):
                return self.intellectType
        temp = tempClass()
        # Переназначение используемым методом вспомогательных методов:
        self.i.getProcessList = temp.getProcessList
        self.i.getIntellectType = temp.getIntellectType
        # Тесты:
        temp.processList = ["1.exe", "intellect.exe", "slave.exe", "2.exe"]
        temp.intellectType = "server"
        self.assertEquals(self.i.getIntellectExecState(), "server")
        temp.intellectType = "admin"
        self.assertEquals(self.i.getIntellectExecState(), "admin")
        temp.intellectType = "client"
        self.assertEquals(self.i.getIntellectExecState(), "client")
        #
        temp.processList = ["1.exe", "slave.exe", "2.exe"]
        temp.intellectType = "server"
        self.assertEquals(self.i.getIntellectExecState(), "client")
        temp.intellectType = "admin"
        self.assertEquals(self.i.getIntellectExecState(), "client")
        temp.intellectType = "client"
        self.assertEquals(self.i.getIntellectExecState(), "client")
        #
        temp.processList = ["1.exe", "intellect.exe", "2.exe"]
        temp.intellectType = "server"
        self.assertEquals(self.i.getIntellectExecState(), "server")
        temp.intellectType = "admin"
        self.assertEquals(self.i.getIntellectExecState(), "admin")
        temp.intellectType = "client"
        self.assertEquals(self.i.getIntellectExecState(), "client")
        #
        temp.processList = ["1.exe", "2.exe"]
        temp.intellectType = "server"
        self.assertEquals(self.i.getIntellectExecState(), None)
        temp.intellectType = "admin"
        self.assertEquals(self.i.getIntellectExecState(), None)
        temp.intellectType = "client"
        self.assertEquals(self.i.getIntellectExecState(), None)