Esempio n. 1
0
    def __init__(self, words_dict, ask_lang, ans_lang, avoid_repeat=True):
        if ask_lang == ans_lang:
            raise ValueError(u'Answer language cannot be the same as answer language (%s)' % ask_lang)
        self.words_dict = words_dict
        self.ask_lang = ask_lang
        self.ans_lang = ans_lang

        if avoid_repeat:
            self.randomizer = AvoidRepeatRandomizer(0, len(self.words_dict) - 1)
        else:
            self.randomizer = SimpleRandomizer(0, len(self.words_dict) - 1)
Esempio n. 2
0
class WordsTestEngine:
    def __init__(self, words_dict, ask_lang, ans_lang, avoid_repeat=True):
        if ask_lang == ans_lang:
            raise ValueError(u'Answer language cannot be the same as answer language (%s)' % ask_lang)
        self.words_dict = words_dict
        self.ask_lang = ask_lang
        self.ans_lang = ans_lang

        if avoid_repeat:
            self.randomizer = AvoidRepeatRandomizer(0, len(self.words_dict) - 1)
        else:
            self.randomizer = SimpleRandomizer(0, len(self.words_dict) - 1)

    def reset(self):
        self.randomizer.reset()

    def get_dict_entry(self, index=None):
        index = self.randomizer.next_random() if index is None else index
        return self.words_dict[index]

    def get_expected_answers(self, dict_entry):
        expected_answers_list = dict_entry[self.ans_lang]
        expected_answers = expected_answers_list.split(u'|')
        lowered_expected_answers = map(lambda s: s.lower(), expected_answers)
        return lowered_expected_answers

    def get_error(self, dict_entry, answer):
        lowered_answer = answer.lower()
        expected_answers = self.get_expected_answers(dict_entry)
        if lowered_answer not in expected_answers:
            question = dict_entry[self.ask_lang]
            return {
                u'expected': expected_answers,
                u'answer': answer,
                u'question': question,
            }
        else:
            return None