From 76bb23e89c001ae9a286d239d31161f39220d72e Mon Sep 17 00:00:00 2001 From: milde Date: Wed, 30 Oct 2019 15:35:28 +0000 Subject: Fix and add test for more use cases for nodes.set_id(). git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8409 929543f6-e4f2-0310-98a6-ba3bd3dd1d04 --- docutils/test/test_nodes.py | 89 +++++++++++++++++++++++++++++++-------------- 1 file changed, 62 insertions(+), 27 deletions(-) (limited to 'docutils/test') diff --git a/docutils/test/test_nodes.py b/docutils/test/test_nodes.py index 999fac967..125bb3202 100755 --- a/docutils/test/test_nodes.py +++ b/docutils/test/test_nodes.py @@ -661,6 +661,68 @@ class TreeCopyVisitorTests(unittest.TestCase): self.compare_trees(self.document, newtree) +class SetIdTests(unittest.TestCase): + + def setUp(self): + self.document = utils.new_document('test') + self.elements = [nodes.Element(names=['test']), + nodes.section(), # Name empty + nodes.section(names=['Test']), # duplicate id + nodes.footnote(names=['2019-10-30']), # id empty + ] + + def test_set_id_default(self): + # Default prefixes. + for element in self.elements: + self.document.set_id(element) + ids = [element['ids'] for element in self.elements] + self.assertEqual(ids, [['test'], ['id1'], ['id2'], ['id3']]) + + def test_set_id_custom(self): + # Custom prefixes. + + # Change settings. + self.document.settings.id_prefix = 'P-' + self.document.settings.auto_id_prefix = 'auto' + + for element in self.elements: + self.document.set_id(element) + ids = [element['ids'] for element in self.elements] + self.assertEqual(ids, [['P-test'], + ['P-auto1'], + ['P-auto2'], + ['P-auto3']]) + + def test_set_id_descriptive_auto_id(self): + # Use name or tag-name for auto-id. + + # Change setting. + self.document.settings.auto_id_prefix = '%' + + for element in self.elements: + self.document.set_id(element) + ids = [element['ids'] for element in self.elements] + self.assertEqual(ids, [['test'], + ['section-1'], + ['test-1'], + ['footnote-1']]) + + def test_set_id_custom_descriptive_auto_id(self): + # Custom prefixes and name or tag-name for auto-id. + + # Change settings. + self.document.settings.id_prefix = 'P:' + self.document.settings.auto_id_prefix = 'a-%' + + for element in self.elements: + self.document.set_id(element) + ids = [element['ids'] for element in self.elements] + self.assertEqual(ids, [['P:test'], + ['P:a-section-1'], + ['P:test-1'], + ['P:a-footnote-1']]) + + class MiscFunctionTests(unittest.TestCase): names = [('a', 'a'), ('A', 'a'), ('A a A', 'a a a'), @@ -672,33 +734,6 @@ class MiscFunctionTests(unittest.TestCase): normed = nodes.fully_normalize_name(input) self.assertEqual(normed, output) - def test_set_id_default(self): - # Default prefixes. - document = utils.new_document('test') - # From name. - element = nodes.Element(names=['test']) - document.set_id(element) - self.assertEqual(element['ids'], ['test']) - # Auto-generated. - element = nodes.Element() - document.set_id(element) - self.assertEqual(element['ids'], ['id1']) - - def test_set_id_custom(self): - # Custom prefixes. - document = utils.new_document('test') - # Change settings. - document.settings.id_prefix = 'prefix' - document.settings.auto_id_prefix = 'auto' - # From name. - element = nodes.Element(names=['test']) - document.set_id(element) - self.assertEqual(element['ids'], ['prefixtest']) - # Auto-generated. - element = nodes.Element() - document.set_id(element) - self.assertEqual(element['ids'], ['prefixauto1']) - if __name__ == '__main__': unittest.main() -- cgit v1.2.1