| 1 | module html |
| 2 | |
| 3 | fn test_parse() { |
| 4 | doc := parse('<html><body><h1 class="title">Hello world!</h1></body></html>') |
| 5 | tags := doc.get_tags(name: 'h1') |
| 6 | assert tags.len == 1 |
| 7 | h1_tag := tags[0] // <h1>Hello world!</h1> |
| 8 | assert h1_tag.name == 'h1' |
| 9 | assert h1_tag.content == 'Hello world!' |
| 10 | assert h1_tag.attributes.len == 2 |
| 11 | // TODO: do not remove. Attributes must not have an empty attr. |
| 12 | // assert h1_tag.attributes.len == 1 |
| 13 | assert h1_tag.str() == '<h1 class="title" >Hello world!</h1>' |
| 14 | // assert h1_tag.str() == '<h1 class="title">Hello world!</h1>' |
| 15 | } |
| 16 | |
| 17 | fn test_parse_inline_tags() { |
| 18 | doc := parse('<html><body><p>before <span>in between</span> after</p></body></html>') |
| 19 | tags := doc.get_tags(name: 'span') |
| 20 | assert tags.len == 1 |
| 21 | |
| 22 | span_tag := tags[0] |
| 23 | assert span_tag.str() == '<span>in between</span>' |
| 24 | |
| 25 | p_tags := doc.get_tags(name: 'p') |
| 26 | assert p_tags.len == 1 |
| 27 | |
| 28 | p_tag := p_tags[0] |
| 29 | assert p_tag.content == 'before <span>in between</span> after' |
| 30 | assert p_tag.str() == '<p>before <span>in between</span> after</p>' |
| 31 | |
| 32 | assert p_tag.text() == 'before in between after' |
| 33 | } |
| 34 | |
| 35 | fn test_parse_content_with_nested_tags() { |
| 36 | doc := parse('<tr id="line"><td><a href="#">wom<nobr>All</a></td></tr>') |
| 37 | td_tag := doc.get_tags(name: 'td')[0] |
| 38 | a_tag := td_tag.get_tags('a')[0] |
| 39 | assert td_tag.content == '<a href="#" >wom<nobr>All</nobr></a>' |
| 40 | assert a_tag.content == 'wom<nobr>All</nobr>' |
| 41 | assert td_tag.text() == 'womAll' |
| 42 | } |
| 43 | |