def test_add_link(self):
     from morphology.related_form import RelatedForm
     input = Element("RelatedForm", targets="lx")
     form = RelatedForm()
     form.set_lexical_entry(LexicalEntry(id="lx_id"))
     # Create output element and sub-elements
     output = Element("RelatedForm", targets="lx")
     sub = SubElement(output, "a")
     sub.attrib["href"] = "lx_id1"
     # Fill in text
     sub.text = "lx"
     result = add_link(form, input)
     self.assertEqual(result[0], form)
     self.assertEqual(tostring(result[1]), tostring(output))
Beispiel #2
0
 def create_related_form(self, lexeme, semantic_relation):
     """! @brief Create a related form.
     @param lexeme Related lexeme.
     @param semantic_relation The semantic relation existing between this lexical entry and the related lexeme to create.
     @return RelatedForm instance.
     """
     return RelatedForm(lexeme).set_semanticRelation(semantic_relation)
Beispiel #3
0
 def create_and_add_related_form(self, lexeme, semantic_relation):
     """! @brief Create and add a related form to the lexical entry.
     @param lexeme Related lexeme.
     @param semantic_relation The semantic relation existing between this lexical entry and the related lexeme to create.
     @return LexicalEntry instance.
     """
     # Check if this related form already exists
     for related_form in self.get_related_forms():
         if related_form.get_lexeme() == lexeme:
             return self
     self.related_form.append(
         RelatedForm(lexeme).set_semanticRelation(semantic_relation))
     return self
class TestRelatedFormFunctions(unittest.TestCase):

    def setUp(self):
        # Instantiate a RelatedForm object
        self.related_form = RelatedForm()

    def tearDown(self):
        # Release instantiated objects
        del self.related_form

    def test_init(self):
        self.assertListEqual(self.related_form.form_representation, [])
        self.assertIsNone(self.related_form.semanticRelation)
        self.assertIsNone(self.related_form.targets)
        self.assertIsNone(self.related_form.get_lexical_entry())

    def test_set_semanticRelation(self):
        # Test error case
        self.related_form.set_semanticRelation("whatever")
        # Test nominal case
        relation = "homonym"
        self.assertIs(self.related_form.set_semanticRelation(relation), self.related_form)
        self.assertEqual(self.related_form.semanticRelation, relation)

    def test_get_semanticRelation(self):
        # Set semantic relation
        relation = "whatever"
        self.related_form.semanticRelation = relation
        # Test get semantic relation
        self.assertEqual(self.related_form.get_semanticRelation(), relation)

    def test_get_lexeme(self):
        # Set lexeme
        lexeme = "hello"
        self.related_form.targets = lexeme
        # Test get lexeme
        self.assertEqual(self.related_form.get_lexeme(), lexeme)

    def test_set_get_lexical_entry(self):
        # Create a lexical entry
        entry = LexicalEntry()
        # Test set lexical entry
        self.assertEqual(self.related_form.set_lexical_entry(entry), self.related_form)
        # Test get lexical entry
        self.assertEqual(self.related_form.get_lexical_entry(), entry)
        # Test lexical entry modifications
        entry.lexeme = "toto"
        self.assertEqual(self.related_form.get_lexical_entry().lexeme, "toto")
        # Release lexical entry
        del entry

    def test_create_and_add_form_representations(self):
        # Test create and add form representations to the related form
        form = "form1"
        language = "lang1"
        self.assertIs(self.related_form.create_and_add_form_representation(form, language), self.related_form)
        self.assertEqual(len(self.related_form.form_representation), 1)
        self.assertEqual(self.related_form.form_representation[0].writtenForm, form)
        self.assertEqual(self.related_form.form_representation[0].language, language)
        form = "form2"
        language = "lang2"
        self.assertIs(self.related_form.create_and_add_form_representation(form, language), self.related_form)
        self.assertEqual(len(self.related_form.form_representation), 2)
        self.assertEqual(self.related_form.form_representation[1].writtenForm, form)
        self.assertEqual(self.related_form.form_representation[1].language, language)
        # Release FormRepresentation instances
        del self.related_form.form_representation[1], self.related_form.form_representation[0]

    def test_find_written_forms(self):
        # Create several form representations with different languages
        form1 = FormRepresentation().set_language("langA")
        form2 = FormRepresentation().set_language("langB")
        form3 = FormRepresentation().set_language("langA")
        form4 = FormRepresentation().set_language("langC")
        # Add form representations to the related form
        self.related_form.form_representation = [form1, form2, form3, form4]
        # Test find form representations
        self.assertListEqual(self.related_form.find_written_forms("langB"), [form2.writtenForm])
        # List is randomly ordered => create a set to avoid random results
        self.assertEqual(set(self.related_form.find_written_forms("langA")), set([form1.writtenForm, form3.writtenForm]))
        # Release FormRepresentation instances
        del self.related_form.form_representation[:]
        del form1, form2, form3, form4
 def setUp(self):
     # Instantiate a RelatedForm object
     self.related_form = RelatedForm()