Exemplo n.º 1
0
class JarvisTest(unittest.TestCase):
    def setUp(self):
        from jarvis import Jarvis

        self.he = Jarvis()

    def _word_database_builder(self):
        from database import WordDataBaseBuilder

        db_builder = WordDataBaseBuilder()
        db_builder.addTxtFile("sample.txt")

        return db_builder

    def _traning_database_builder(self):
        from database import TrainingDataBaseBuilder

        builder = TrainingDataBaseBuilder()
        builder.addTxtFile("traning_sample.txt")

        return builder

    def _abilities_builder(self):
        from database import AbilitiesDataBaseBuilder

        return AbilitiesDataBaseBuilder()

    def _innervoice_builder(self):
        from database import InnerVoiceDataBaseBuilder

        return InnerVoiceDataBaseBuilder()

    def test_dictionary(self):
        self.he.createWordsDataBase(self._word_database_builder())

    def test_respond_exception(self):
        from jarvis import JarvisException

        with self.assertRaises(JarvisException):
            self.he.respond("aaa bbb ccc")

    def test_respond_exception2(self):
        from jarvis import JarvisException

        self.he.createWordsDataBase(self._word_database_builder())

        with self.assertRaises(JarvisException):
            self.he.respond("aaa bbb ccc www")

    def test_createAbilitiesDataBase(self):
        self.he.createAbilitiesDataBase(self._abilities_builder())

    def test_train_exception(self):
        from jarvis import JarvisException

        with self.assertRaises(JarvisException):
            self.he.train()

    def test_train(self):
        self.he.createWordsDataBase(self._word_database_builder())
        self.he.createTrainingDataBase(self._traning_database_builder())
        self.he.train()

    def test_respond(self):
        self.he.createWordsDataBase(self._word_database_builder())
        self.he.createTrainingDataBase(self._traning_database_builder())
        self.he.createAbilitiesDataBase(self._abilities_builder())
        self.he.train()

        answer = self.he.respond("aaa bbb_1 ccc")
        self.assertEqual(answer,"abc abc zzz") #Neural network sometimes does not answer correctly

        answer = self.he.respond("abc abc")
        self.assertEqual(answer,"abc test")

    def test_start_stop(self):
        import threading
        import time

        self.he.createInnerVoiceDatabase(self._innervoice_builder())
        self.he.createWordsDataBase(self._word_database_builder())
        self.he.createTrainingDataBase(self._traning_database_builder())
        self.he.createAbilitiesDataBase(self._abilities_builder())
        self.he.train()

        start_thread = threading.Thread(target=self.he.start,name=self.he.start.func_name)
        start_thread.start()
        time.sleep(0.5)
        self.he.stop()
        start_thread.join()
        self.assertFalse(start_thread.isAlive())
Exemplo n.º 2
0
    from database import WordDataBaseBuilder
    from database import TrainingDataBaseBuilder
    from database import AbilitiesDataBaseBuilder
    from database import InnerVoiceDataBaseBuilder
    from interfaces import Console

    wd_builder = WordDataBaseBuilder()
    wd_builder.addTxtFile("learning_material/traning.txt")

    td_builder = TrainingDataBaseBuilder()
    td_builder.addTxtFile("learning_material/traning.txt")

    iv_builder = InnerVoiceDataBaseBuilder()
    iv_builder.addTxtFile("learning_material/inner_voices.txt")

    ab_builder = AbilitiesDataBaseBuilder()

    he = Jarvis()
    he.createWordsDataBase(wd_builder)
    he.createTrainingDataBase(td_builder)
    he.createAbilitiesDataBase(ab_builder)
    he.createInnerVoiceDatabase(iv_builder)
    he.train()

    console = Console()
    console.jarvis(he)
    console.start()

    he.start()