#!/usr/bin/python from PIPRes.nexus.primitives import * from PIPRes.testing import silentAssertRaises import unittest class IndexTest(unittest.TestCase): def testIndex(self): self.assertEqual(index(7, range(10), lambda a, b: a < b), 8) self.assertEqual(index(7, range(10), lambda a, b: a == b), 7) silentAssertRaises(self, ValueError, index, 70, range(10), lambda a, b: a == b) def testStrictTaxa(self): t = StrictTaxaManager(['a', 'b', 'c', 'd']) self.runABCDTests(t) silentAssertRaises(self, NexusIllegalName, StrictTaxaManager, ['a', 'b', 'c', '1']) silentAssertRaises(self, NexusIllegalName, StrictTaxaManager, ['a', 'b', 'c', '.']) def testAllowNumbersTaxa(self): t = AllowNumbersTaxaManager(['a', 'b', 'c', 'd']) self.runABCDTests(t) silentAssertRaises(self, NexusIllegalName, AllowNumbersTaxaManager, ['a', 'b', 'c', '.']) def runABCDTests(self, t): self.assertEqual(''.join([t.getTaxLabel(i) for i in range(4)]), 'abcd') self.assertEqual(''.join([t[i] for i in range(4)]), 'abcd') self.assertEqual(''.join(t[:4]), 'abcd') self.assertEqual(''.join(t[::-1]), 'dcba') silentAssertRaises(self, IndexError, t.__class__.getTaxLabel, t, 4) self.assertEqual([t.translateTaxLabel(i) for i in 'dbca'], [3, 1, 2, 0]) silentAssertRaises(self, NexusUnknownTaxonError, t.__class__.translateTaxLabel, t, 5) self.assertEqual(len(t), 4) self.assertEqual('a' in t, True) self.assertEqual('e' in t, False) self.assertEqual(''.join(t.getTaxLabels()), 'abcd') self.assertEqual(''.join([i for i in t]), 'abcd') self.assertEqual(t.taxaAreFinal(), False) silentAssertRaises(self, NexusIllegalName, t.__class__.addTaxa, t, 'a') t.addTaxa('e') self.assertEqual(''.join([t.getTaxLabel(i) for i in range(5)]), 'abcde') self.assertEqual(''.join([t[i] for i in range(5)]), 'abcde') self.assertEqual(''.join(t[:]), 'abcde') self.assertEqual(''.join(t[::-1]), 'edcba') silentAssertRaises(self, IndexError, t.__class__.getTaxLabel, t, 5) self.assertEqual([t.translateTaxLabel(i) for i in 'edbca'], [4, 3, 1, 2, 0]) silentAssertRaises(self, NexusUnknownTaxonError, t.__class__.translateTaxLabel, t, 6) self.assertEqual(len(t), 5) self.assertEqual('a' in t, True) self.assertEqual('e' in t, True) self.assertEqual('f' in t, False) self.assertEqual(''.join(t.getTaxLabels()), 'abcde') self.assertEqual(''.join([i for i in t]), 'abcde') self.assertEqual(t.taxaAreFinal(), False) t.finalizeTaxa() self.assertEqual(t.taxaAreFinal(), True) silentAssertRaises(self, AssertionError, t.__class__.addTaxa, t, 'e') if __name__ == '__main__': unittest.main()