Пример #1
0
    def testChangeChildren(self):
        """ Tests modifying the children of a word """
        chosen_word = self.getWord("far")
        real_children = cf.loadWordChildren(chosen_word)
        word_dets = {"lang": "English", "text": ["banana", "pineapple"], "morpheme": "bannana", "def": "A fruity thing"}
        test_child = cf.createWord(word_dets)
        cf.validateWord(test_child)

        # Test output with good input
        # (chosen_word only has one child)
        new_children = list(real_children)
        new_children.append(test_child)
        cf.editWordChildren(chosen_word, new_children)
        self.assertEqual(cf.countWordChildren(chosen_word), 2)

        # This removes children from chosen_word
        cf.editWordChildren(chosen_word, None)
        self.assertEqual(cf.countWordChildren(chosen_word), 0)
        self.assertEqual(cf.loadWordParents(real_children[0]), None)
        self.assertEqual(cf.loadWordParents(test_child), None)

        # Let's add a child back on
        cf.editWordChildren(chosen_word, test_child)
        self.assertEqual(cf.countWordChildren(chosen_word), 1)
        self.assertEqual(cf.loadWordParents(test_child), chosen_word)
Пример #2
0
    def testValidateWord(self):
        """ Tests validating a word """
        # Test a known good word
        chosen_word = self.getWord("far")
        self.assertEqual(cf.validateWord(chosen_word), True)

        # Test some bad words
        # wrong tag
        test_word = ET.Element("gook")
        self.assertRaises(cf.EtymExceptWord, cf.validateWord, test_word)
        # right tag, no text
        test_word = ET.Element("word")
        self.assertRaises(cf.EtymExceptWord, cf.validateWord, test_word)
        # good tag and text, no details
        test_word.text = "testing"
        self.assertRaises(cf.EtymExceptWord, cf.validateWord, test_word)
        # Create some incomplete details
        word_det = ET.Element("lang")
        word_det.text = "asdf"
        test_word.append(word_det)
        self.assertRaises(cf.EtymExceptWord, cf.validateWord, test_word)
        word_det = ET.Element("def")
        word_det.text = "lkjfs"
        test_word.append(word_det)
        self.assertRaises(cf.EtymExceptWord, cf.validateWord, test_word)
        word_det = ET.Element("morpheme")
        word_det.text = "sdf0"
        test_word.append(word_det)
        self.assertRaises(cf.EtymExceptWord, cf.validateWord, test_word)
        word_det = ET.Element("text")
        word_det.text = "23rds"
        test_word.append(word_det)
        word_det = ET.Element("text")
        word_det.text = "230oudsf"
        test_word.append(word_det)
        self.assertEqual(cf.validateWord(chosen_word), True)
        # Make sure it gets saved in the right order
        test_word = ET.Element("word")
        word_det = ET.Element("text")
        word_det.text = "23rds"
        test_word.append(word_det)
        test_word.text = "testing"
        word_det = ET.Element("def")
        word_det.text = "lkjfs"
        test_word.append(word_det)
        word_det = ET.Element("text")
        word_det.text = "203fjklsdfj"
        test_word.append(word_det)
        word_det = ET.Element("lang")
        word_det.text = "asdf"
        test_word.append(word_det)
        word_det = ET.Element("morpheme")
        word_det.text = "sdf0"
        test_word.append(word_det)
        cf.validateWord(test_word)
        sort_output = (
            "<word>testing<lang>asdf</lang><text>23rds</text>"
            "<text>203fjklsdfj</text><morpheme>sdf0</morpheme>"
            "<def>lkjfs</def></word>"
        )
        self.assertEqual(ET.tostring(test_word), sort_output)