v / vlib / net / html / html_test.v
42 lines · 35 sloc · 1.37 KB · e158655f4f28a73358b9e24e82963a193d9fc30e
Raw
1module html
2
3fn 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
17fn 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
35fn 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