def parse_input_process_output(self):
            
            for type_of_token, tokens in self.parser.parse_single_line():
                line = ''
                for i in tokens:
                    line = line + i + ' '
                #print line 
                if type_of_token == 'ALIAS':
                    trade_symbol = TradeSymbol.parse_trade_symbol(tokens)
                    if isinstance(trade_symbol, str):
                        print trade_symbol , ' -> ' , line
                    else:
                        self.trade_symbols [ trade_symbol.get_name() ] = trade_symbol

                elif type_of_token == 'TRADE':
                    
                    trade_items = TradeItem.parse_trade_item( line , self.trade_symbols)
                    error_logged = False
                    for trade_item in trade_items:
                        if isinstance(trade_item,str) or trade_item == None:
                            if not error_logged:
                                print "Failed to parse line -> " , line
                                error_logged = True
                        else: 
                            self.trade_items[ trade_item.get_name() ] = trade_item

                elif type_of_token == 'UNKNOWN':
                        print "I have no idea what you are talking about -> " , line
                
                elif type_of_token == 'QUESTION':
                    q = Question(line)
                    q.parse_question(  self.trade_symbols, self.trade_items )
                    if not q.is_valid():
                        print q.get_answer() + ' -> ' + q.get_question()
                    else:    
                        print q.get_answer() 
Example #2
0
class test_question(unittest.TestCase):
    def setUp(self):
        self.q = Question(1, "some text", True)

    def test_get_question_id(self):
        id = self.q.get_question_id()
        assert id == 1

    def test_set_question_text(self):
        self.q.set_question_text("test is best")
        assert self.q.get_question_text() == "test is best"

    def test_set_has_difficulty_level(self):
        self.q.set_has_difficulty_level(True)
        assert self.q.get_has_difficulty_level() == True

    def test_add_alternative(self):
        self.q.add_alternative(0, "An alternative", True)
        self.q.add_alternative(1, "An alternative 2", False)
        alternatives = self.q.get_alternatives()
        assert len(alternatives) == 2

    def test_add_alternative_negative(self):
        self.q.add_alternative("A", "An alternative", True)
        alternatives = self.q.get_alternatives()
        assert len(alternatives) == 0

    def test_is_valid(self):
        self.q.set_question_text("test is best")
        self.q.add_alternative(0, "An alternative", True)
        self.q.add_alternative(1, "An alternative 2", False)
        valid = self.q.is_valid()
        assert valid == True

    def test_is_valid_id_negative(self):
        self.q.set_question_id(0)
        valid = self.q.is_valid()
        assert valid == False

    def test_is_valid_text_negative(self):
        self.q.set_question_id(1)
        self.q.set_question_text("")
        valid = self.q.is_valid()
        assert valid == False

    def test_is_valid_difficulty_level_negative(self):
        self.q.set_question_id(1)
        self.q.set_question_text("Test question")
        self.q.set_has_difficulty_level(None)
        valid = self.q.is_valid()
        assert valid == False

    def test_is_valid_alternatives_negative(self):
        self.q.set_question_id(1)
        self.q.set_question_text("Test question")
        self.q.set_has_difficulty_level(True)
        valid = self.q.is_valid()
        assert valid == False

    def test_to_json(self):
        self.q.set_question_text("test is best")
        self.q.add_alternative(0, "An alternative", True)
        json = self.q.to_json()
        assert "id" in json
        assert "question" in json
        assert "alternatives" in json
        assert "has_difficulty_level" in json
        assert "id" in json["alternatives"][0]
        assert "text" in json["alternatives"][0]
        assert "isCorrect" in json["alternatives"][0]

        assert json["id"] == 1
        assert json["question"] == "test is best"
        assert json["has_difficulty_level"] == True
        assert json["alternatives"][0]["id"] == 0
        assert json["alternatives"][0]["text"] == "An alternative"
        assert json["alternatives"][0]["isCorrect"] == True
Example #3
0
class test_question(unittest.TestCase):

    def setUp(self):
        self.q = Question(1, "some text", True)


    def test_get_question_id(self):
        id = self.q.get_question_id()
        assert id == 1

    def test_set_question_text(self):
        self.q.set_question_text("test is best")
        assert self.q.get_question_text() == "test is best"

    def test_set_has_difficulty_level(self):
        self.q.set_has_difficulty_level(True)
        assert self.q.get_has_difficulty_level() == True

    def test_add_alternative(self):
        self.q.add_alternative(0, "An alternative", True)
        self.q.add_alternative(1, "An alternative 2", False)
        alternatives = self.q.get_alternatives();
        assert len(alternatives) == 2

    def test_add_alternative_negative(self):
        self.q.add_alternative("A", "An alternative", True)
        alternatives = self.q.get_alternatives()
        assert len(alternatives) == 0

    def test_is_valid(self):
        self.q.set_question_text("test is best")
        self.q.add_alternative(0, "An alternative", True)
        self.q.add_alternative(1, "An alternative 2", False)
        valid = self.q.is_valid()
        assert valid == True

    def test_is_valid_id_negative(self):
        self.q.set_question_id(0)
        valid = self.q.is_valid()
        assert valid == False

    def test_is_valid_text_negative(self):
        self.q.set_question_id(1)
        self.q.set_question_text("")
        valid = self.q.is_valid()
        assert valid == False

    def test_is_valid_difficulty_level_negative(self):
        self.q.set_question_id(1)
        self.q.set_question_text("Test question")
        self.q.set_has_difficulty_level(None)
        valid = self.q.is_valid()
        assert valid == False

    def test_is_valid_alternatives_negative(self):
        self.q.set_question_id(1)
        self.q.set_question_text("Test question")
        self.q.set_has_difficulty_level(True)
        valid = self.q.is_valid()
        assert valid == False

    def test_to_json(self):
        self.q.set_question_text("test is best")
        self.q.add_alternative(0, "An alternative", True)
        json = self.q.to_json()
        assert "id" in json
        assert "question" in json
        assert "alternatives" in json
        assert "has_difficulty_level" in json
        assert "id" in json["alternatives"][0]
        assert "text" in json["alternatives"][0]
        assert "isCorrect" in json["alternatives"][0]

        assert json["id"] == 1
        assert json["question"] == "test is best"
        assert json["has_difficulty_level"] == True
        assert json["alternatives"][0]["id"] == 0
        assert json["alternatives"][0]["text"] == "An alternative"
        assert json["alternatives"][0]["isCorrect"] == True
Example #4
0
    for line in sys.stdin:
        if line.strip() == "":  # empty line cannot be parsed, causes crashes if not skipped
            continue

        lines = line.split('\t')

        if not lines:
            continue

        if len(lines) == 1:  # solely for testing, so that we don't have to use official format
            question = Question("", lines[0].strip())
        else:
            question = Question(lines[0], lines[1].strip())

        if not question.is_valid():
            continue

        pre_process.process(question)
        # print(question)

        syntax_parser.parse(question)

        for token in question.syntax[question.syntax_root].subtree:
            # print('\t'.join((token.text, token.lemma_, token.pos_, token.tag_, token.dep_, token.head.lemma_, str(token.i))))
            if token.dep_ == "pobj" and token.tag_ == "CD" and not question.time_filter:  # save the first of multiple years
                question.set_time_filter(token.text)

        if question.time_filter:
            if standardStrategy(question.syntax, question.syntax_root):
                continue