# -*- coding: utf-8 -*- import aligner import unittest class TestAnchorWordHit(unittest.TestCase): def setUp(self): self.anchorWordHit = aligner.AnchorWordHit(1, 56, 2, 'julaften') def testGetIndex(self): self.assertEqual(self.anchorWordHit.getIndex(), 1) def testGetWord(self): self.assertEqual(self.anchorWordHit.getWord(), 'julaften') def testPos(self): self.assertEqual(self.anchorWordHit.getPos(), 2) self.assertEqual(self.anchorWordHit.setPos(80), self.anchorWordHit.getPos()) def testGetElementNumber(self): self.assertEqual(self.anchorWordHit.getElementNumber(), 56) class TestAnchorWordListEntry(unittest.TestCase): def setUp(self): self.alignerEntry = aligner.AnchorWordListEntry('de, dere, De, Dem, Dykk / doai, dii ') def testEntry(self): """Check that an entry is correct""" self.assertEqual(self.alignerEntry.getEntry(), [['de', 'dere', 'De', 'Dem', 'Dykk'], ['doai', 'dii']]) class TestAnchorWordList(unittest.TestCase): def setUp(self): self.anchorList = aligner.AnchorWordList() self.anchorList.loadFromFile('anchor-nor-sme.txt') def testSize(self): """Check that we have read the correct number of entries""" self.assertEqual(self.anchorList.getSize(), 1097) class TestAlignmentElement(unittest.TestCase): def setUp(self): self.alignmentElement = aligner.AlignmentElement('Julenissen kommer hver julaften', 1, 2) def testGetText(self): self.assertEqual(self.alignmentElement.getText(), 'Julenissen kommer hver julaften') def testGetId(self): self.assertEqual(self.alignmentElement.getId(), 1) def testGetElementNumber(self): self.assertEqual(self.alignmentElement.getElementNumber(), 2) def testAlignmentNumber(self): self.assertEqual(self.alignmentElement.getAlignmentNumber(), -1) self.alignmentElement.setAlignmentNumber(4) self.assertEqual(self.alignmentElement.getAlignmentNumber(), 4) class TestSentenceHandler(unittest.TestCase): def setUp(self): self.sentences = aligner.SentenceHandler('1999_1.doc.sent.xml') def testSize(self): self.assertEqual(self.sentences.getLength(), 4091) def testSentenceGetter(self): self.assertEqual(self.sentences.getSentence(401), 'Ragnhild Nystad ') def testFilenameGetter(self): self.assertEqual(self.sentences.getFilename(), '1999_1.doc.sent.xml') class TestAlignerHandler(unittest.TestCase): def setUp(self): self.aligner = aligner.AlignerHandler('anchor-nor-sme.txt', ['1999_1.doc.sent.xml','1999_1s.doc.sent.xml']) def testAlign(self): self.assertEqual(self.aligner.align(), '0') class TestBastPathScore(unittest.TestCase): def testDefaultValue(self): bps = aligner.BestPathScore() self.assertEqual(bps.getScore(), -1.0) def testSetValue(self): bps = aligner.BestPathScore(-0.5) self.assertEqual(bps.getScore(), -0.5) class TestAnchorWordHit(unittest.TestCase): def setUp(self): self.awh = aligner.AnchorWordHit(2, 4, 6, 'juste') def testGetIndex(self): self.assertEqual(self.awh.getIndex(), 2) def testGetWord(self): self.assertEqual(self.awh.getWord(), 'juste') def testGetPost(self): self.assertEqual(self.awh.getPos(), 6) def testGetElementNumber(self): self.assertEqual(self.awh.getElementNumber(), 4) def testSetPos(self): self.awh.setPos(8) self.assertEqual(self.awh.getPos(), 8) class TestScores(unittest.TestCase): def testDiceMatch(self): self.assertEqual(aligner.diceMatch('bargat', 'bargagoahtit'), 0.5) self.assertEqual(aligner.diceMatch('čoallagoađán', 'bargagoahtit'), 0.25) def testDiceMatches(self): self.assertEqual(aligner.diceMatches('bargat', 'bargagoahtit', 'čoallagoađán', '1-2'), [0.5, 0.0]) self.assertEqual(aligner.diceMatches('bargat', 'bargagoahtit', 'čoallagoađán', '2-1'), [0.0, 0.25]) self.assertEqual(aligner.diceMatches('bargat', 'bargagoahtit'), [0.5]) def testAnchorMatch(self): self.assertEqual(aligner.anchorMatch('Afr*', 'Afrika'), True) self.assertEqual(aligner.anchorMatch('Afr*', 'Bengal'), False) def testBadLengthCorrelation(self): self.assertEqual(aligner.badLengthCorrelation(50, 20, 3, 7, 10), True) self.assertEqual(aligner.badLengthCorrelation(20, 50, 3, 7, 2), False) class TestElementInfo(unittest.TestCase): def setUp(self): al = aligner.AnchorWordList('anchor-nor-sme.txt') self.ei = aligner.ElementInfo(al, 'Julenissen kommer med julegaver hvert år', 1, 74) def testElementInfo(self): self.assertEqual(self.ei.getLength(), 41) self.assertEqual(self.ei.getWords(), 'Julenissen kommer med julegaver hvert år') class TestCompareMatrix(unittest.TestCase): def setUp(self): self.compareMatrix = aligner.CompareMatrix() self.compareMatrix.setScore([3, 4, 5, 6], 5.1) def testScore(self): self.assertEqual(self.compareMatrix.getScore([3, 4, 5, 6]), 5.1) class TestPathStep(unittest.TestCase): def testPathStep(self): ps = aligner.PathStep([1,1]) self.assertEqual(ps.is11(), True) ps = aligner.PathStep([1,0]) self.assertEqual(ps.is11(), False) ps = aligner.PathStep([0,1]) self.assertEqual(ps.is11(), False) ps = aligner.PathStep([1,2]) self.assertEqual(ps.is11(), False) class TestPath(unittest.TestCase): def testPath(self): path = aligner.Path([3,4]) self.assertEqual(path.position, [3,4]) ps1 = aligner.PathStep([1,1]) ps2 = aligner.PathStep([0,0]) path.extend(ps1) self.assertEqual(path.getSteps(), [ps1]) path.extend(ps2) self.assertEqual(path.getSteps(), [ps1, ps2]) path.setSteps([ps1, ps2]) self.assertEqual(path.getSteps(), [ps1, ps2]) self.assertEqual(path.getLengthInSentences(), 2) class TestQueueEntry(unittest.TestCase): def setUp(self): self.qe = aligner.QueueEntry([1,0], 5.1) def testGetPath(self): path = aligner.Path([3,4]) self.qe.setPath(path) self.assertEqual(self.qe.getPath(), path) def testRemoveEnd(self): self.assertEqual(self.qe.removed, False) self.assertEqual(self.qe.ended, False) self.qe.setRemoved() self.qe.setEnd() self.assertEqual(self.qe.getRemoved(), True) self.assertEqual(self.qe.getEnd(), True) class TestCompare(unittest.TestCase): def setUp(self): self.c = aligner.Compare() if __name__ == '__main__': unittest.main()