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())
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()