net.html: add get_tags_by_class_name (#17024)

This commit is contained in:
Minsoo 2023-01-19 02:00:46 +09:00 committed by GitHub
parent 6688c0f3d7
commit d850d3caba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 97 additions and 0 deletions

View file

@ -54,3 +54,33 @@ fn test_access_tag_fields() {
assert id_tags[0].name == 'div'
assert id_tags[1].attributes['class'] == 'several-1'
}
fn generate_temp_html_with_classes() string {
mut temp_html := strings.new_builder(400)
temp_html.write_string('<!doctype html><html><head><title>Giant String</title></head><body>')
temp_html.write_string("<div class='single'>Single</div>")
for counter := 0; counter < 4; counter++ {
temp_html.write_string("<div id='name_${counter}' ")
temp_html.write_string("class='common'>Common No. ${counter}</div>")
}
temp_html.write_string("<div class='complex-0 complex-1 complex-2'>Complex</div>")
temp_html.write_string("<div class='complex-0 complex-2'>Partial</div>")
temp_html.write_string('</body></html>')
return temp_html.str()
}
fn test_search_by_class() {
dom := parse(generate_temp_html_with_classes())
single_class_tags := dom.get_tags_by_class_name('single')
common_class_tags := dom.get_tags_by_class_name('common')
complex_class_tags := dom.get_tags_by_class_name('complex-0', 'complex-1', 'complex-2')
partial_class_tags := dom.get_tags_by_class_name('complex-0', 'complex-2')
shuffled_class_tags := dom.get_tags_by_class_name('complex-2', 'complex-0', 'complex-1')
assert single_class_tags.len == 1
assert common_class_tags.len == 4
assert complex_class_tags.len == 1
assert complex_class_tags[0].attributes['class'] == 'complex-0 complex-1 complex-2'
assert partial_class_tags.len == 2
assert shuffled_class_tags.len == 1
assert shuffled_class_tags[0].attributes['class'] == 'complex-0 complex-1 complex-2'
}