module html
import strings
fn test_parse_empty_string() {
mut parser := Parser{}
parser.parse_html('')
assert parser.tags.len == 0
}
fn test_parse_text() {
mut parser := Parser{}
text_content := 'test\nparse\ntext'
parser.parse_html(text_content)
assert parser.tags.len == 1
assert parser.tags.first().text() == text_content
}
fn test_parse_one_tag_with_text() {
mut parser := Parser{}
text_content := 'tag\nwith\ntext'
p_tag := '
${text_content}
'
parser.parse_html(p_tag)
assert parser.tags.first().text() == text_content
}
fn test_split_parse() {
mut parser := Parser{}
parser.init()
parser.split_parse(' Hum... ')
parser.split_parse('A Tit')
parser.split_parse('\nle')
parser.split_parse('\nhead>\t\t\t')
parser.split_parse('Nice Test!
')
parser.split_parse('')
parser.finalize()
assert parser.tags.len == 11
assert parser.tags[3].content == ' Hum... A Tit\nle'
}
fn test_giant_string() {
mut temp_html := strings.new_builder(200)
mut parser := Parser{}
temp_html.write_string('Giant String')
for counter := 0; counter < 2000; counter++ {
temp_html.write_string("Look at ${counter}
")
}
temp_html.write_string('')
parser.parse_html(temp_html.str())
assert parser.tags.len == 4009
}
fn test_script_tag() {
mut parser := Parser{}
script_content := '\nvar googletag = googletag || {};\ngoogletag.cmd = googletag.cmd || [];if(3 > 5) {console.log("Quoted \'message\'");}\n'
temp_html := ''
parser.parse_html(temp_html)
assert parser.tags[2].content.len == script_content.len
}