def test_duplicate_addition(self): ''' RankingRun.add raises if iUnits were added more than once for the same QID ''' run = RankingRun('ORG-test-1', 'this is a test run') run.add('1', []) self.assertRaises(Exception, run.add, '1', [])
def test_bad_break(self): ''' Ensure no break in the first line ''' run = RankingRun('ORG-test-1', 'this is \n a test run') run.save('./tmp') with open('./tmp/ORG-test-1.tsv', 'r') as f: lines = f.readlines() self.assertEqual(len(lines), 1)
def test_ranking_run_save(self): ''' RankingRun.save ''' run = RankingRun('ORG-test-1', 'this is a test run') for task in self.tasks['E']: run.add(task.query.qid, [(i, 0) for i in task.iunits]) run.save('./tmp') self.assertTrue(os.path.exists('./tmp/ORG-test-1.tsv')) with open('./tmp/ORG-test-1.tsv', 'r') as f: lines = f.readlines() self.assertEqual(len(lines), sum([len(t.iunits) for t in self.tasks['E']]) + 1) self.assertEqual(lines[0].strip(), 'this is a test run') self.assertEqual(len(lines[1].split('\t')), 3)
def test_all_iunits(self): ''' Ensure all the iUnits are included ''' run = RankingRun('ORG-test-1', 'this is a test run') iunits = [] for task in self.tasks['E']: run.add(task.query.qid, [(i, 0) for i in task.iunits]) for i in task.iunits: iunits.append(i.uid) run.save('./tmp') output_iunits = set() with open('./tmp/ORG-test-1.tsv', 'r') as f: for lineno, line in enumerate(f): if lineno != 0: uid = line.split('\t')[1].strip() output_iunits.add(uid) self.assertEqual(len(set(iunits)), len(output_iunits)) for i in iunits: self.assertIn(i, output_iunits)
def test_validation(self): ''' Test the validation ''' run = RankingRun('ORG-test-1', 'this is a test run') for task in self.tasks['E'][:-2]: run.add(task.query.qid, [(i, 0) for i in task.iunits]) queries = [t.query for t in self.tasks['E']] self.assertFalse(run.validation(queries)) for task in self.tasks['E'][-2:]: run.add(task.query.qid, [(i, 0) for i in task.iunits]) self.assertTrue(run.validation(queries))