Coverage for hdl_registers/generator/html/test/test_html_translator.py: 100%

46 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-12 11:11 +0000

1# -------------------------------------------------------------------------------------------------- 

2# Copyright (c) Lukas Vik. All rights reserved. 

3# 

4# This file is part of the hdl-registers project, an HDL register generator fast enough to run 

5# in real time. 

6# https://hdl-registers.com 

7# https://github.com/hdl-registers/hdl-registers 

8# -------------------------------------------------------------------------------------------------- 

9 

10import pytest 

11 

12from hdl_registers.generator.html.html_translator import HtmlTranslator 

13 

14 

15@pytest.fixture 

16def html_translator(): 

17 return HtmlTranslator() 

18 

19 

20def test_markdown_parser_can_handle_annotating_sentences(html_translator): 

21 expected = "This sentence <strong>should have a large portion</strong> in bold face" 

22 text = r"This sentence **should have a large portion** in bold face" 

23 assert expected in html_translator.translate(text) 

24 

25 expected = "This sentence <em>should have a large portion</em> in italics" 

26 text = "This sentence *should have a large portion* in italics" 

27 assert expected in html_translator.translate(text) 

28 

29 

30def test_markdown_parser_can_handle_escaped_asterisks(html_translator): 

31 expected = "Part of this sentence **should be surrounded** by double asterisks" 

32 text = r"Part of this sentence \*\*should be surrounded\*\* by double asterisks" 

33 assert expected in html_translator.translate(text) 

34 

35 expected = "Part of this sentence *should be surrounded* by asterisks" 

36 text = r"Part of this sentence \*should be surrounded\* by asterisks" 

37 assert expected in html_translator.translate(text) 

38 

39 expected = "Part of this sentence <em>*should be in italics and surrounded*</em> by asterisks" 

40 text = r"Part of this sentence *\*should be in italics and surrounded\** by asterisks" 

41 assert expected in html_translator.translate(text) 

42 

43 expected = "Part of this sentence should have an <em>*</em> in italics" 

44 text = r"Part of this sentence should have an *\** in italics" 

45 assert expected in html_translator.translate(text) 

46 

47 

48def test_line_breaks(html_translator): 

49 expected = "Two empty lines</p>\n<p>between paragraphs." 

50 text = "Two empty lines\n\nbetween paragraphs." 

51 assert expected in html_translator.translate(text) 

52 

53 expected = "Three empty lines</p>\n<p>between paragraphs." 

54 text = "Three empty lines\n\n\nbetween paragraphs." 

55 assert expected in html_translator.translate(text) 

56 

57 expected = r"Escaped nnn should not result in paragraph break." 

58 text = r"Escaped \n\n\n should not result in paragraph break." 

59 assert expected in html_translator.translate(text) 

60 

61 expected = "<p>One empty line\nmeans same paragraph.</p>" 

62 text = "One empty line\nmeans same paragraph." 

63 assert expected in html_translator.translate(text) 

64 

65 

66def test_literal_underscore_can_be_used(html_translator): 

67 # We do not translate underscores, unlike some markdown 

68 expected = "This sentence <strong>contains_underscores</strong> in some_places" 

69 text = r"This sentence **contains_underscores** in some_places" 

70 assert expected in html_translator.translate(text) 

71 

72 

73def test_angle_brackets_should_be_translated_to_html(html_translator): 

74 expected = "This string &lt;&lt; contains &gt; brackets &gt;&lt;" 

75 text = "This string << contains > brackets ><" 

76 assert expected in html_translator.translate(text)