summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/DOMTSHandler.pm91
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection04.xml.kfail59
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection05.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection02.xml.kfail)29
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection09.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl)16
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection12.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection03.xml.kfail)21
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement05.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement11.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement12.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement13.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement13.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement14.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement14.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement15.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement15.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement16.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement16.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement17.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement18.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement19.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement20.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement20.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail4
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement22.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement22.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement23.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement23.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail4
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement25.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement25.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement26.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement26.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableElement27.xml (renamed from test/testcases/tests/level1/html/HTMLTableElement27.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement02.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement03.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement04.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement06.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement07.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement08.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement09.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTableRowElement10.xml (renamed from test/testcases/tests/level1/html/HTMLTableRowElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/anchor01.xml (renamed from test/testcases/tests/level1/html/anchor01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor02.xml (renamed from test/testcases/tests/level1/html/anchor02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor03.xml (renamed from test/testcases/tests/level1/html/anchor03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor04.xml.kfail (renamed from test/testcases/tests/level1/html/anchor04.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor05.xml (renamed from test/testcases/tests/level1/html/anchor05.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/anchor06.xml (renamed from test/testcases/tests/level1/html/anchor06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/dlist01.xml (renamed from test/testcases/tests/level1/html/dlist01.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/table01.xml (renamed from test/testcases/tests/level1/html/table01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table02.xml (renamed from test/testcases/tests/level1/html/table02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table03.xml (renamed from test/testcases/tests/level1/html/table03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table04.xml (renamed from test/testcases/tests/level1/html/table04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table08.xml (renamed from test/testcases/tests/level1/html/table08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table09.xml (renamed from test/testcases/tests/level1/html/table09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table10.xml (renamed from test/testcases/tests/level1/html/table10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table12.xml (renamed from test/testcases/tests/level1/html/table12.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table17.xml (renamed from test/testcases/tests/level1/html/table17.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table18.xml (renamed from test/testcases/tests/level1/html/table18.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table19.xml (renamed from test/testcases/tests/level1/html/table19.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table20.xml (renamed from test/testcases/tests/level1/html/table20.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table21.xml (renamed from test/testcases/tests/level1/html/table21.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table22.xml (renamed from test/testcases/tests/level1/html/table22.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table23.xml (renamed from test/testcases/tests/level1/html/table23.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table24.xml (renamed from test/testcases/tests/level1/html/table24.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table25.xml (renamed from test/testcases/tests/level1/html/table25.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table26.xml (renamed from test/testcases/tests/level1/html/table26.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table27.xml (renamed from test/testcases/tests/level1/html/table27.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table28.xml (renamed from test/testcases/tests/level1/html/table28.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table29.xml (renamed from test/testcases/tests/level1/html/table29.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table30.xml (renamed from test/testcases/tests/level1/html/table30.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table31.xml (renamed from test/testcases/tests/level1/html/table31.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table32.xml (renamed from test/testcases/tests/level1/html/table32.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table33.xml (renamed from test/testcases/tests/level1/html/table33.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table34.xml (renamed from test/testcases/tests/level1/html/table34.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table35.xml (renamed from test/testcases/tests/level1/html/table35.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table36.xml (renamed from test/testcases/tests/level1/html/table36.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table37.xml (renamed from test/testcases/tests/level1/html/table37.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table38.xml (renamed from test/testcases/tests/level1/html/table38.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table39.xml (renamed from test/testcases/tests/level1/html/table39.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table40.xml (renamed from test/testcases/tests/level1/html/table40.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table41.xml (renamed from test/testcases/tests/level1/html/table41.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table42.xml (renamed from test/testcases/tests/level1/html/table42.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table43.xml (renamed from test/testcases/tests/level1/html/table43.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table44.xml (renamed from test/testcases/tests/level1/html/table44.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table45.xml (renamed from test/testcases/tests/level1/html/table45.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table46.xml (renamed from test/testcases/tests/level1/html/table46.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table47.xml (renamed from test/testcases/tests/level1/html/table47.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table48.xml (renamed from test/testcases/tests/level1/html/table48.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table49.xml (renamed from test/testcases/tests/level1/html/table49.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table50.xml (renamed from test/testcases/tests/level1/html/table50.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table51.xml (renamed from test/testcases/tests/level1/html/table51.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table52.xml (renamed from test/testcases/tests/level1/html/table52.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/table53.xml (renamed from test/testcases/tests/level1/html/table53.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement34.xml (renamed from test/testcases/tests/level2/html/HTMLTableElement34.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement35.xml (renamed from test/testcases/tests/level2/html/HTMLTableElement35.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement36.xml (renamed from test/testcases/tests/level2/html/HTMLTableElement36.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement37.xml (renamed from test/testcases/tests/level2/html/HTMLTableElement37.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement38.xml (renamed from test/testcases/tests/level2/html/HTMLTableElement38.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail5
-rw-r--r--test/testcases/tests/level2/html/HTMLTableRowElement15.xml (renamed from test/testcases/tests/level2/html/HTMLTableRowElement15.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableRowElement16.xml (renamed from test/testcases/tests/level2/html/HTMLTableRowElement16.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableRowElement17.xml (renamed from test/testcases/tests/level2/html/HTMLTableRowElement17.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableRowElement18.xml (renamed from test/testcases/tests/level2/html/HTMLTableRowElement18.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableRowElement19.xml (renamed from test/testcases/tests/level2/html/HTMLTableRowElement19.xml.kfail)0
-rw-r--r--test/testcases/tests/level2/html/HTMLTableSectionElement30.xml.kfail55
-rw-r--r--test/testcases/tests/level2/html/HTMLTableSectionElement31.xml.kfail53
-rw-r--r--test/testcases/tests/level2/html/files/table.html78
-rw-r--r--test/testcases/tests/level2/html/files/table.xhtml81
-rw-r--r--test/testcases/tests/level2/html/files/table.xml81
-rw-r--r--test/testcases/tests/level2/html/files/table1.html12
-rw-r--r--test/testcases/tests/level2/html/files/table1.xhtml15
-rw-r--r--test/testcases/tests/level2/html/files/table1.xml15
-rw-r--r--test/testcases/tests/level2/html/files/tablerow.html59
-rw-r--r--test/testcases/tests/level2/html/files/tablerow.xhtml62
-rw-r--r--test/testcases/tests/level2/html/files/tablerow.xml62
-rw-r--r--test/testutils/domtsasserts.c4
116 files changed, 756 insertions, 50 deletions
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 78d5e7e..8953047 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -44,6 +44,10 @@ our %special_type = (
CDATASection => "dom_cdata_section *",
HTMLAnchorElement => "dom_html_anchor_element *",
HTMLElement => "dom_html_element *",
+ HTMLTableCaptionElement => "dom_html_table_caption_element *",
+ HTMLTableSectionElement => "dom_html_table_section_element *",
+ HTMLTableElement => "dom_html_table_element *",
+ HTMLTableRowElement => "dom_html_table_row_element *",
);
our %special_prefix = (
DOMString => "dom_string",
@@ -57,6 +61,20 @@ our %special_prefix = (
HTMLHRElement => "dom_html_hr_element",
HTMLBRElement => "dom_html_br_element",
HTMLLIElement => "dom_html_li_element",
+ HTMLTableCaptionElement => "dom_html_table_caption_element",
+ HTMLTableSectionElement => "dom_html_table_section_element",
+ HTMLIsIndexElement => "dom_html_isindex_element",
+ caption => "dom_html_table_caption_element *",
+ section => "dom_html_table_section_element *",
+ createCaption => "dom_html_element *",
+ createTHead => "dom_html_element *",
+ createTFoot => "dom_html_element *",
+ deleteCaption => "dom_html_element *",
+ deleteTHead => "dom_html_element *",
+ deleteTFoot => "dom_html_element *",
+ insertRow => "dom_html_element *",
+ deleteRow => "dom_html_element *",
+ form => "dom_html_form_element *",
);
our %unref_prefix = (
@@ -164,10 +182,14 @@ sub new {
# The name of the current List/Collection
list_name => "",
# The number of items of the current List/Collection
+ list_last_name => [],
+ # The number of items of the current List/Collection
list_num => 0,
# Whether List/Collection has members
list_hasmem => 0,
# The type of the current List/Collection
+ member_list_declared => 0,
+ # The type of the current List/Collection
list_type => "",
# Whether we are in exception assertion
exception => 0,
@@ -389,6 +411,7 @@ int main(int argc, char **argv)
perror("chdir (\\"$self->{chdir})\\"");
return 1;
}
+ int list_temp[100], count = -1;
__EOF__
}
@@ -442,7 +465,6 @@ sub generate_list {
# Yes, we are in List/Collection declaration
# Firstly, enclose the Array declaration
print "};\n";
-
# Now, we should create the list * for the List/Collection
# Note, we should deal with "int" or "string" type with different params.
if ($self->{"list_type"} eq "char *") {
@@ -450,18 +472,37 @@ sub generate_list {
}
if ($self->{"list_type"} eq "int *") {
print $self->{"list_name"}." = list_new(INT);\n";
+ while(defined ($x = pop @{$self->{"list_last_name"}})) {
+ print $x." = list_new(INT);\n";
+ }
}
+ while(defined($x = pop(@{$self->{"list_last_name"}}))) {
+ print $x." = list_new(DOM_STRING);\n";
+ }
+ $self->{"member_list_declared"} = 1;
if ($self->{"list_type"} eq "") {
die "A List/Collection has children member but no type is impossible!";
}
- for (my $i = 0; $i < $self->{"list_num"}; $i++) {
- # Use *(char **) to convert char *[] to char *
- print "list_add(".$self->{"list_name"}.", *(char **)(".$self->{"list_name"}."Array + $i));\n";
+ if ($self->{"list_type"} eq "int *") {
+
+ for (my $i = 0; $i < $self->{"list_num"}; $i++) {
+ # Use *(char **) to convert char *[] to char *
+ print "list_add(".$self->{"list_name"}.", (int *)(".$self->{"list_name"}."Array) + $i);\n";
+ }
+ } else {
+ for (my $i = 0; $i < $self->{"list_num"}; $i++) {
+ # Use *(char **) to convert char *[] to char *
+ print "list_add(".$self->{"list_name"}.", *(char **)(".$self->{"list_name"}."Array + $i));\n";
+ }
}
} else {
if ($self->{"list_name"} ne "") {
#TODO: generally, we set the list type as dom_string, but it may be dom_node
- print $self->{"list_name"}." = list_new(DOM_STRING);\n";
+ if( $self->{"member_list_declared"} eq 1) {
+ print $self->{"list_name"}." = list_new(DOM_STRING);\n";
+ } else {
+ push(@{$self->{"list_last_name"}}, $self->{"list_name"});
+ }
$self->{"list_type"} = "DOMString";
}
}
@@ -553,14 +594,19 @@ sub generate_framework_statement {
if (exists $ats->{"obj"}) {
$obj = $ats->{"obj"};
} else {
- $obj = $ats->{"item"}
+ $obj = $ats->{"item"};
}
-
+
if (not $self->{"var"}->{$col} =~ /^(List|Collection)/) {
die "Append data to some non-list type!";
}
-
- print "list_add($col, $obj);\n";
+ $type = $self->{"var"}->{$obj};
+ if ($type eq "int") {
+ print "\nlist_temp[++count] =$obj;\n";
+ print "list_add($col, &list_temp[count]);\n\n";
+ } else {
+ print "list_add($col, $obj);\n";
+ }
}
case [qw(plus subtract mult divide)] {
@@ -681,6 +727,8 @@ sub generate_method {
$method = to_cmethod($ats{'interface'}, $en);
my $cast = to_attribute_cast($ats{'interface'});
+ my $get_attribute = $node->getAttribute("name");
+ my $cast_get_attribute = to_get_attribute_cast($get_attribute);
my $ns = $dd->find("parameters/param", $node);
my $params = "${cast}$ats{'obj'}";
for ($count = 1; $count <= $ns->size; $count++) {
@@ -746,7 +794,7 @@ sub generate_method {
# Indicate that we have created a temp node
$temp_node = 1;
} else {
- $params = $params.", (void *) \&$ats{'var'}";
+ $params = $params.", $cast_get_attribute\&$ats{'var'}";
$unref = $self->param_unref($ats{'var'});
}
}
@@ -808,6 +856,8 @@ sub generate_attribute_fetcher {
my $fetcher = to_attribute_fetcher($ats{'interface'}, "$en");
my $cast = to_attribute_cast($ats{'interface'});
+ my $get_attribute = $node->getAttribute("name");
+ my $cast_get_attribute = to_get_attribute_cast($get_attribute);
my $unref = 0;
my $temp_node = 0;
# Deal with the situation like
@@ -833,7 +883,7 @@ sub generate_attribute_fetcher {
$temp_node = 1;
} else {
$unref = $self->param_unref($ats{'var'});
- print "\texp = $fetcher(${cast}$ats{'obj'}, \&$ats{'var'});\n";
+ print "\texp = $fetcher(${cast}$ats{'obj'}, ${cast_get_attribute}\&$ats{'var'});\n";
}
@@ -1424,7 +1474,26 @@ sub get_prefix {
}
return $prefix;
}
+sub to_get_attribute_cast {
+ my $type = shift;
+ my $ret = get_get_attribute_prefix($type);
+ if($ret eq "") {
+ return $ret;
+ }
+ $ret =~ s/h_t_m_l/html/;
+ return "(${ret} *)";
+}
+sub get_get_attribute_prefix {
+ my $type = shift;
+
+ if (exists $special_prefix{$type}) {
+ $prefix = $special_prefix{$type};
+ } else {
+ $prefix = "";
+ }
+ return $prefix;
+}
# This function remain unsed
sub get_suffix {
my $type = shift;
diff --git a/test/testcases/tests/level1/html/HTMLCollection04.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection04.xml.kfail
new file mode 100644
index 0000000..5d78405
--- /dev/null
+++ b/test/testcases/tests/level1/html/HTMLCollection04.xml.kfail
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
+
+<!--
+
+Copyright (c) 2001 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. This program is distributed under the W3C's Software
+Intellectual Property License. This program is distributed in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+
+-->
+<!DOCTYPE test SYSTEM "dom1.dtd">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection04">
+<metadata>
+<title>HTMLCollection04</title>
+<creator>NIST</creator>
+<description>
+ HTMLCollections are live, they are automatically updated when the
+ underlying document is changed.
+
+ Create a HTMLCollection object by invoking the rows attribute of the
+ first TABLE element and examine its length, then add a new row and
+ re-examine the length.
+</description>
+<contributor>Rick Rivello</contributor>
+<date qualifier="created">2002-05-01</date>
+<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-40057551"/>
+</metadata>
+<var name="nodeList" type="NodeList"/>
+<var name="testNode" type="Node"/>
+<var name="rowLength1" type="int"/>
+<var name="rowLength2" type="int"/>
+<var name="rowsnodeList" type="HTMLCollection"/>
+<var name="newRow" type="HTMLElement"/>
+<var name="vrowindex" type="int" />
+<var name="doc" type="Document"/>
+<var name="result" type="List"/>
+<var name="expectedResult" type="List">
+<member>4</member>
+<member>5</member>
+</var>
+<load var="doc" href="collection" willBeModified="true"/>
+<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"table"'/>
+<assertSize collection="nodeList" size="1" id="Asize"/>
+<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
+<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="rowLength1"/>
+<append collection="result" item="rowLength1"/>
+<insertRow interface="HTMLTableElement" obj="testNode" var="newRow" index="4"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="rowLength2"/>
+<append collection="result" item="rowLength2"/>
+<assertEquals actual="result" expected="expectedResult" id="rowIndexLink" ignoreCase="false"/>
+</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection05.xml.kfail
index 521d5ae..ffb7d13 100644
--- a/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection05.xml.kfail
@@ -16,34 +16,31 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-->
<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection02">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection05">
<metadata>
-<title>HTMLCollection02</title>
+<title>HTMLCollection05</title>
<creator>NIST</creator>
<description>
- An individual node may be accessed by either ordinal index, the node's
- name or id attributes. (Test node name).
+ The length attribute specifies the length or size of the list.
- Retrieve the first FORM element and create a HTMLCollection by invoking
- the elements attribute. The first SELECT element is further retrieved
- using the elements name attribute.
+ Retrieve the first TABLE element and create a HTMLCollection by invoking
+ the "rows" attribute. Retrieve the length attribute of the HTMLCollection
+ object.
</description>
<contributor>Rick Rivello</contributor>
<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-76728479"/>
+<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-40057551"/>
</metadata>
<var name="nodeList" type="NodeList"/>
<var name="testNode" type="Node"/>
-<var name="formNode" type="Node"/>
-<var name="formsnodeList" type="HTMLCollection"/>
-<var name="vname" type="DOMString" />
+<var name="rowsnodeList" type="HTMLCollection"/>
+<var name="rowLength" type="int" />
<var name="doc" type="Document"/>
<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"form"'/>
+<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"table"'/>
<assertSize collection="nodeList" size="1" id="Asize"/>
<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<elements interface="HTMLFormElement" obj="testNode" var="formsnodeList"/>
-<namedItem obj="formsnodeList" var="formNode" name='"select1"'/>
-<nodeName obj="formNode" var="vname"/>
-<assertEquals actual="vname" expected='"SELECT"' id="nameIndexLink" ignoreCase="auto"/>
+<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="rowLength"/>
+<assertEquals actual="rowLength" expected="4" id="rowIndexLink" ignoreCase="false"/>
</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection09.xml.kfail
index fd2cfe4..f81e7af 100644
--- a/test/testcases/tests/level1/html/HTMLCollection01.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection09.xml.kfail
@@ -16,17 +16,16 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-->
<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection01">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection09">
<metadata>
-<title>HTMLCollection01</title>
+<title>HTMLCollection09</title>
<creator>NIST</creator>
<description>
- An individual node may be accessed by either ordinal index, the node's
- name or id attributes. (Test ordinal index).
+ The item(index) method returns null if the index is out of range.
Retrieve the first TABLE element and create a HTMLCollection by invoking
- the "rows" attribute. The item located at ordinal index 0 is further
- retrieved and its "rowIndex" attribute is examined.
+ the "rows" attribute. Invoke the item(index) method with an index
+ of 5. This index is out of range and should return null.
</description>
<contributor>Rick Rivello</contributor>
<date qualifier="created">2002-05-01</date>
@@ -43,7 +42,6 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<assertSize collection="nodeList" size="1" id="Asize"/>
<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="0"/>
-<rowIndex interface="HTMLTableRowElement" obj="rowNode" var="vrowindex"/>
-<assertEquals actual="vrowindex" expected="0" id="rowIndexLink" ignoreCase="false"/>
+<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="5"/>
+<assertNull actual="rowNode" id="rowIndexLink"/>
</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection12.xml.kfail
index 36d489e..d7feb3d 100644
--- a/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection12.xml.kfail
@@ -16,17 +16,20 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-->
<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection03">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection12">
<metadata>
-<title>HTMLCollection03</title>
+<title>HTMLCollection12</title>
<creator>NIST</creator>
<description>
- An individual node may be accessed by either ordinal index, the node's
- name or id attributes. (Test id attribute).
+ The namedItem(name) method retrieves a node using a name. It first
+ searches for a node with a matching id attribute. If it doesn't find
+ one, it then searches for a Node with a matching name attribute, but only
+ on those elements that are allowed a name attribute. If there isn't
+ a matching node the method returns null.
Retrieve the first FORM element and create a HTMLCollection by invoking
- the "element" attribute. The first SELECT element is further retrieved
- using the elements id.
+ the elements attribute. The method returns null since there is not a
+ match of the name or id attribute.
</description>
<contributor>Rick Rivello</contributor>
<date qualifier="created">2002-05-01</date>
@@ -36,14 +39,12 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<var name="testNode" type="Node"/>
<var name="formNode" type="Node"/>
<var name="formsnodeList" type="HTMLCollection"/>
-<var name="vname" type="DOMString" />
<var name="doc" type="Document"/>
<load var="doc" href="collection" willBeModified="false"/>
<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"form"'/>
<assertSize collection="nodeList" size="1" id="Asize"/>
<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
<elements interface="HTMLFormElement" obj="testNode" var="formsnodeList"/>
-<namedItem obj="formsnodeList" var="formNode" name='"selectId"'/>
-<nodeName obj="formNode" var="vname"/>
-<assertEquals actual="vname" expected='"select"' id="nameIndexLink" ignoreCase="auto"/>
+<namedItem obj="formsnodeList" var="formNode" name='"select9"'/>
+<assertNull actual="formNode" id="nameIndexLink" />
</test>
diff --git a/test/testcases/tests/level1/html/HTMLTableElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement01.xml
index 7135fd7..7135fd7 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement02.xml
index fb9fa8f..fb9fa8f 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement03.xml
index 0b59fe6..0b59fe6 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement04.xml
index 1e254b3..1e254b3 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement05.xml
index 15de11c..15de11c 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement06.xml
index e18b8f8..e18b8f8 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement07.xml
index 44be1c3..44be1c3 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement08.xml
index 1a744b1..1a744b1 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement09.xml
index a0aecf3..a0aecf3 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement10.xml
index 160afeb..160afeb 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement11.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement11.xml
index 785c4d0..785c4d0 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement11.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement12.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement12.xml
index 811a147..811a147 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement12.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement12.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement13.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement13.xml
index 4a18d8d..4a18d8d 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement13.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement13.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement14.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement14.xml
index 478e9c9..478e9c9 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement14.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement14.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement15.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement15.xml
index 51f9763..51f9763 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement15.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement15.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement16.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement16.xml
index 7166437..7166437 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement16.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement16.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement17.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement17.xml
index 9337c09..9337c09 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement17.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement17.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement18.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement18.xml
index 210e2b1..210e2b1 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement18.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement18.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement19.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement19.xml
index 152174d..152174d 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement19.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement19.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement20.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement20.xml
index 032725b..032725b 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement20.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement20.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail
index 3903b69..b50a007 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement21.xml.kfail
@@ -35,8 +35,8 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<var name="nodeList" type="NodeList"/>
<var name="rowsnodeList" type="HTMLCollection"/>
<var name="testNode" type="Node"/>
-<var name="vsection1" type="HTMLTableElement" />
-<var name="vsection2" type="HTMLTableElement" />
+<var name="vsection1" type="HTMLTableSectionElement" />
+<var name="vsection2" type="HTMLTableSectionElement" />
<var name="vrows" type="int"/>
<var name="doc" type="Document"/>
<var name="result" type="List"/>
diff --git a/test/testcases/tests/level1/html/HTMLTableElement22.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement22.xml
index 6649b0f..6649b0f 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement22.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement22.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement23.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement23.xml
index 1f53f03..1f53f03 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement23.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement23.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail
index d6f993c..58af66e 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement24.xml.kfail
@@ -35,8 +35,8 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<var name="nodeList" type="NodeList"/>
<var name="rowsnodeList" type="HTMLCollection"/>
<var name="testNode" type="Node"/>
-<var name="vsection1" type="HTMLTableElement" />
-<var name="vsection2" type="HTMLTableElement" />
+<var name="vsection1" type="HTMLTableSectionElement" />
+<var name="vsection2" type="HTMLTableSectionElement" />
<var name="vrows" type="int"/>
<var name="doc" type="Document"/>
<var name="result" type="List"/>
diff --git a/test/testcases/tests/level1/html/HTMLTableElement25.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement25.xml
index a28ae65..a28ae65 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement25.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement25.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement26.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement26.xml
index 5517f2f..5517f2f 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement26.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement26.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableElement27.xml.kfail b/test/testcases/tests/level1/html/HTMLTableElement27.xml
index c387d69..c387d69 100644
--- a/test/testcases/tests/level1/html/HTMLTableElement27.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableElement27.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement01.xml
index 0dbd008..0dbd008 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement02.xml
index 284bc84..284bc84 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement03.xml
index 341c2a5..341c2a5 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement04.xml
index bca05d4..bca05d4 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement06.xml
index 55fc2ac..55fc2ac 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement07.xml
index c586f6a..c586f6a 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement08.xml
index 751ef9e..751ef9e 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement09.xml
index eda033b..eda033b 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLTableRowElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLTableRowElement10.xml
index 3554fb6..3554fb6 100644
--- a/test/testcases/tests/level1/html/HTMLTableRowElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTableRowElement10.xml
diff --git a/test/testcases/tests/level1/html/anchor01.xml.notimpl b/test/testcases/tests/level1/html/anchor01.xml
index 19a2711..19a2711 100644
--- a/test/testcases/tests/level1/html/anchor01.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor01.xml
diff --git a/test/testcases/tests/level1/html/anchor02.xml.notimpl b/test/testcases/tests/level1/html/anchor02.xml
index 61486a7..61486a7 100644
--- a/test/testcases/tests/level1/html/anchor02.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor02.xml
diff --git a/test/testcases/tests/level1/html/anchor03.xml.notimpl b/test/testcases/tests/level1/html/anchor03.xml
index e6bd32e..e6bd32e 100644
--- a/test/testcases/tests/level1/html/anchor03.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor03.xml
diff --git a/test/testcases/tests/level1/html/anchor04.xml.notimpl b/test/testcases/tests/level1/html/anchor04.xml.kfail
index b5ce201..b5ce201 100644
--- a/test/testcases/tests/level1/html/anchor04.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor04.xml.kfail
diff --git a/test/testcases/tests/level1/html/anchor05.xml.notimpl b/test/testcases/tests/level1/html/anchor05.xml
index 27b34ac..27b34ac 100644
--- a/test/testcases/tests/level1/html/anchor05.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor05.xml
diff --git a/test/testcases/tests/level1/html/anchor06.xml.notimpl b/test/testcases/tests/level1/html/anchor06.xml
index 31190be..31190be 100644
--- a/test/testcases/tests/level1/html/anchor06.xml.notimpl
+++ b/test/testcases/tests/level1/html/anchor06.xml
diff --git a/test/testcases/tests/level1/html/dlist01.xml.notimpl b/test/testcases/tests/level1/html/dlist01.xml
index 35cbe2c..35cbe2c 100644
--- a/test/testcases/tests/level1/html/dlist01.xml.notimpl
+++ b/test/testcases/tests/level1/html/dlist01.xml
diff --git a/test/testcases/tests/level1/html/table01.xml.kfail b/test/testcases/tests/level1/html/table01.xml
index 4cee6f7..4cee6f7 100644
--- a/test/testcases/tests/level1/html/table01.xml.kfail
+++ b/test/testcases/tests/level1/html/table01.xml
diff --git a/test/testcases/tests/level1/html/table02.xml.kfail b/test/testcases/tests/level1/html/table02.xml
index 2433751..2433751 100644
--- a/test/testcases/tests/level1/html/table02.xml.kfail
+++ b/test/testcases/tests/level1/html/table02.xml
diff --git a/test/testcases/tests/level1/html/table03.xml.kfail b/test/testcases/tests/level1/html/table03.xml
index b8c3ef6..b8c3ef6 100644
--- a/test/testcases/tests/level1/html/table03.xml.kfail
+++ b/test/testcases/tests/level1/html/table03.xml
diff --git a/test/testcases/tests/level1/html/table04.xml.kfail b/test/testcases/tests/level1/html/table04.xml
index 2d4fcf8..2d4fcf8 100644
--- a/test/testcases/tests/level1/html/table04.xml.kfail
+++ b/test/testcases/tests/level1/html/table04.xml
diff --git a/test/testcases/tests/level1/html/table08.xml.kfail b/test/testcases/tests/level1/html/table08.xml
index ea77b80..ea77b80 100644
--- a/test/testcases/tests/level1/html/table08.xml.kfail
+++ b/test/testcases/tests/level1/html/table08.xml
diff --git a/test/testcases/tests/level1/html/table09.xml.kfail b/test/testcases/tests/level1/html/table09.xml
index fcb9018..fcb9018 100644
--- a/test/testcases/tests/level1/html/table09.xml.kfail
+++ b/test/testcases/tests/level1/html/table09.xml
diff --git a/test/testcases/tests/level1/html/table10.xml.kfail b/test/testcases/tests/level1/html/table10.xml
index aa05594..aa05594 100644
--- a/test/testcases/tests/level1/html/table10.xml.kfail
+++ b/test/testcases/tests/level1/html/table10.xml
diff --git a/test/testcases/tests/level1/html/table12.xml.kfail b/test/testcases/tests/level1/html/table12.xml
index 93e475b..93e475b 100644
--- a/test/testcases/tests/level1/html/table12.xml.kfail
+++ b/test/testcases/tests/level1/html/table12.xml
diff --git a/test/testcases/tests/level1/html/table17.xml.kfail b/test/testcases/tests/level1/html/table17.xml
index 7223562..7223562 100644
--- a/test/testcases/tests/level1/html/table17.xml.kfail
+++ b/test/testcases/tests/level1/html/table17.xml
diff --git a/test/testcases/tests/level1/html/table18.xml.kfail b/test/testcases/tests/level1/html/table18.xml
index db8c161..db8c161 100644
--- a/test/testcases/tests/level1/html/table18.xml.kfail
+++ b/test/testcases/tests/level1/html/table18.xml
diff --git a/test/testcases/tests/level1/html/table19.xml.kfail b/test/testcases/tests/level1/html/table19.xml
index e88be88..e88be88 100644
--- a/test/testcases/tests/level1/html/table19.xml.kfail
+++ b/test/testcases/tests/level1/html/table19.xml
diff --git a/test/testcases/tests/level1/html/table20.xml.kfail b/test/testcases/tests/level1/html/table20.xml
index 2205987..2205987 100644
--- a/test/testcases/tests/level1/html/table20.xml.kfail
+++ b/test/testcases/tests/level1/html/table20.xml
diff --git a/test/testcases/tests/level1/html/table21.xml.kfail b/test/testcases/tests/level1/html/table21.xml
index fa22103..fa22103 100644
--- a/test/testcases/tests/level1/html/table21.xml.kfail
+++ b/test/testcases/tests/level1/html/table21.xml
diff --git a/test/testcases/tests/level1/html/table22.xml.kfail b/test/testcases/tests/level1/html/table22.xml
index 7c097b4..7c097b4 100644
--- a/test/testcases/tests/level1/html/table22.xml.kfail
+++ b/test/testcases/tests/level1/html/table22.xml
diff --git a/test/testcases/tests/level1/html/table23.xml.kfail b/test/testcases/tests/level1/html/table23.xml
index 4ea8ace..4ea8ace 100644
--- a/test/testcases/tests/level1/html/table23.xml.kfail
+++ b/test/testcases/tests/level1/html/table23.xml
diff --git a/test/testcases/tests/level1/html/table24.xml.kfail b/test/testcases/tests/level1/html/table24.xml
index 7606917..7606917 100644
--- a/test/testcases/tests/level1/html/table24.xml.kfail
+++ b/test/testcases/tests/level1/html/table24.xml
diff --git a/test/testcases/tests/level1/html/table25.xml.kfail b/test/testcases/tests/level1/html/table25.xml
index b8e10dd..b8e10dd 100644
--- a/test/testcases/tests/level1/html/table25.xml.kfail
+++ b/test/testcases/tests/level1/html/table25.xml
diff --git a/test/testcases/tests/level1/html/table26.xml.kfail b/test/testcases/tests/level1/html/table26.xml
index 9f09d4f..9f09d4f 100644
--- a/test/testcases/tests/level1/html/table26.xml.kfail
+++ b/test/testcases/tests/level1/html/table26.xml
diff --git a/test/testcases/tests/level1/html/table27.xml.kfail b/test/testcases/tests/level1/html/table27.xml
index e0dc78d..e0dc78d 100644
--- a/test/testcases/tests/level1/html/table27.xml.kfail
+++ b/test/testcases/tests/level1/html/table27.xml
diff --git a/test/testcases/tests/level1/html/table28.xml.kfail b/test/testcases/tests/level1/html/table28.xml
index d445a1c..d445a1c 100644
--- a/test/testcases/tests/level1/html/table28.xml.kfail
+++ b/test/testcases/tests/level1/html/table28.xml
diff --git a/test/testcases/tests/level1/html/table29.xml.kfail b/test/testcases/tests/level1/html/table29.xml
index ae483d4..ae483d4 100644
--- a/test/testcases/tests/level1/html/table29.xml.kfail
+++ b/test/testcases/tests/level1/html/table29.xml
diff --git a/test/testcases/tests/level1/html/table30.xml.kfail b/test/testcases/tests/level1/html/table30.xml
index 837be29..837be29 100644
--- a/test/testcases/tests/level1/html/table30.xml.kfail
+++ b/test/testcases/tests/level1/html/table30.xml
diff --git a/test/testcases/tests/level1/html/table31.xml.kfail b/test/testcases/tests/level1/html/table31.xml
index f5c3fa6..f5c3fa6 100644
--- a/test/testcases/tests/level1/html/table31.xml.kfail
+++ b/test/testcases/tests/level1/html/table31.xml
diff --git a/test/testcases/tests/level1/html/table32.xml.kfail b/test/testcases/tests/level1/html/table32.xml
index cf7e0cd..cf7e0cd 100644
--- a/test/testcases/tests/level1/html/table32.xml.kfail
+++ b/test/testcases/tests/level1/html/table32.xml
diff --git a/test/testcases/tests/level1/html/table33.xml.kfail b/test/testcases/tests/level1/html/table33.xml
index 5c0e447..5c0e447 100644
--- a/test/testcases/tests/level1/html/table33.xml.kfail
+++ b/test/testcases/tests/level1/html/table33.xml
diff --git a/test/testcases/tests/level1/html/table34.xml.kfail b/test/testcases/tests/level1/html/table34.xml
index 07443ef..07443ef 100644
--- a/test/testcases/tests/level1/html/table34.xml.kfail
+++ b/test/testcases/tests/level1/html/table34.xml
diff --git a/test/testcases/tests/level1/html/table35.xml.kfail b/test/testcases/tests/level1/html/table35.xml
index 32cce60..32cce60 100644
--- a/test/testcases/tests/level1/html/table35.xml.kfail
+++ b/test/testcases/tests/level1/html/table35.xml
diff --git a/test/testcases/tests/level1/html/table36.xml.kfail b/test/testcases/tests/level1/html/table36.xml
index 2bdded8..2bdded8 100644
--- a/test/testcases/tests/level1/html/table36.xml.kfail
+++ b/test/testcases/tests/level1/html/table36.xml
diff --git a/test/testcases/tests/level1/html/table37.xml.kfail b/test/testcases/tests/level1/html/table37.xml
index cdf5b73..cdf5b73 100644
--- a/test/testcases/tests/level1/html/table37.xml.kfail
+++ b/test/testcases/tests/level1/html/table37.xml
diff --git a/test/testcases/tests/level1/html/table38.xml.kfail b/test/testcases/tests/level1/html/table38.xml
index fad8dfe..fad8dfe 100644
--- a/test/testcases/tests/level1/html/table38.xml.kfail
+++ b/test/testcases/tests/level1/html/table38.xml
diff --git a/test/testcases/tests/level1/html/table39.xml.kfail b/test/testcases/tests/level1/html/table39.xml
index 1fd66db..1fd66db 100644
--- a/test/testcases/tests/level1/html/table39.xml.kfail
+++ b/test/testcases/tests/level1/html/table39.xml
diff --git a/test/testcases/tests/level1/html/table40.xml.kfail b/test/testcases/tests/level1/html/table40.xml
index 31a9763..31a9763 100644
--- a/test/testcases/tests/level1/html/table40.xml.kfail
+++ b/test/testcases/tests/level1/html/table40.xml
diff --git a/test/testcases/tests/level1/html/table41.xml.kfail b/test/testcases/tests/level1/html/table41.xml
index 4030b09..4030b09 100644
--- a/test/testcases/tests/level1/html/table41.xml.kfail
+++ b/test/testcases/tests/level1/html/table41.xml
diff --git a/test/testcases/tests/level1/html/table42.xml.kfail b/test/testcases/tests/level1/html/table42.xml
index 8fa86f1..8fa86f1 100644
--- a/test/testcases/tests/level1/html/table42.xml.kfail
+++ b/test/testcases/tests/level1/html/table42.xml
diff --git a/test/testcases/tests/level1/html/table43.xml.kfail b/test/testcases/tests/level1/html/table43.xml
index ea9e5de..ea9e5de 100644
--- a/test/testcases/tests/level1/html/table43.xml.kfail
+++ b/test/testcases/tests/level1/html/table43.xml
diff --git a/test/testcases/tests/level1/html/table44.xml.kfail b/test/testcases/tests/level1/html/table44.xml
index a893f76..a893f76 100644
--- a/test/testcases/tests/level1/html/table44.xml.kfail
+++ b/test/testcases/tests/level1/html/table44.xml
diff --git a/test/testcases/tests/level1/html/table45.xml.kfail b/test/testcases/tests/level1/html/table45.xml
index b1717db..b1717db 100644
--- a/test/testcases/tests/level1/html/table45.xml.kfail
+++ b/test/testcases/tests/level1/html/table45.xml
diff --git a/test/testcases/tests/level1/html/table46.xml.kfail b/test/testcases/tests/level1/html/table46.xml
index 096b892..096b892 100644
--- a/test/testcases/tests/level1/html/table46.xml.kfail
+++ b/test/testcases/tests/level1/html/table46.xml
diff --git a/test/testcases/tests/level1/html/table47.xml.kfail b/test/testcases/tests/level1/html/table47.xml
index 4d8340b..4d8340b 100644
--- a/test/testcases/tests/level1/html/table47.xml.kfail
+++ b/test/testcases/tests/level1/html/table47.xml
diff --git a/test/testcases/tests/level1/html/table48.xml.kfail b/test/testcases/tests/level1/html/table48.xml
index 1910883..1910883 100644
--- a/test/testcases/tests/level1/html/table48.xml.kfail
+++ b/test/testcases/tests/level1/html/table48.xml
diff --git a/test/testcases/tests/level1/html/table49.xml.kfail b/test/testcases/tests/level1/html/table49.xml
index 1db690b..1db690b 100644
--- a/test/testcases/tests/level1/html/table49.xml.kfail
+++ b/test/testcases/tests/level1/html/table49.xml
diff --git a/test/testcases/tests/level1/html/table50.xml.kfail b/test/testcases/tests/level1/html/table50.xml
index 8f60638..8f60638 100644
--- a/test/testcases/tests/level1/html/table50.xml.kfail
+++ b/test/testcases/tests/level1/html/table50.xml
diff --git a/test/testcases/tests/level1/html/table51.xml.kfail b/test/testcases/tests/level1/html/table51.xml
index c917f27..c917f27 100644
--- a/test/testcases/tests/level1/html/table51.xml.kfail
+++ b/test/testcases/tests/level1/html/table51.xml
diff --git a/test/testcases/tests/level1/html/table52.xml.kfail b/test/testcases/tests/level1/html/table52.xml
index bf94572..bf94572 100644
--- a/test/testcases/tests/level1/html/table52.xml.kfail
+++ b/test/testcases/tests/level1/html/table52.xml
diff --git a/test/testcases/tests/level1/html/table53.xml.kfail b/test/testcases/tests/level1/html/table53.xml
index 210c7e1..210c7e1 100644
--- a/test/testcases/tests/level1/html/table53.xml.kfail
+++ b/test/testcases/tests/level1/html/table53.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableElement34.xml.kfail b/test/testcases/tests/level2/html/HTMLTableElement34.xml
index d774498..d774498 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement34.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableElement34.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableElement35.xml.kfail b/test/testcases/tests/level2/html/HTMLTableElement35.xml
index 6410e89..6410e89 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement35.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableElement35.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableElement36.xml.kfail b/test/testcases/tests/level2/html/HTMLTableElement36.xml
index 7a514e5..7a514e5 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement36.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableElement36.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableElement37.xml.kfail b/test/testcases/tests/level2/html/HTMLTableElement37.xml
index 097deb1..097deb1 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement37.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableElement37.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableElement38.xml.kfail b/test/testcases/tests/level2/html/HTMLTableElement38.xml
index 0f5bccd..0f5bccd 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement38.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableElement38.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail b/test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail
index 6631584..0a6fcfd 100644
--- a/test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableElement39.xml.kfail
@@ -54,9 +54,14 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
<assertEquals actual="vrows" expected="2" id="rowsLink1" ignoreCase="false"/>
<insertRow interface="HTMLTableElement" obj="testNode" var="newRow" index="-1"/>
+<!--
+* the following assumes that the row is appended to tbody
+* this is obviously wrong it should be appended to tfoot which is the end
+* of the table
<tBodies interface="HTMLTableElement" obj="testNode" var="tbodiesnodeList"/>
<item interface="HTMLCollection" obj="tbodiesnodeList" var="bodyNode" index="0"/>
<rows interface="HTMLTableSectionElement" obj="bodyNode" var="rowsnodeList"/>
<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
<assertEquals actual="vrows" expected="3" id="rowsLink2" ignoreCase="false"/>
+--!>
</test>
diff --git a/test/testcases/tests/level2/html/HTMLTableRowElement15.xml.kfail b/test/testcases/tests/level2/html/HTMLTableRowElement15.xml
index 9e89674..9e89674 100644
--- a/test/testcases/tests/level2/html/HTMLTableRowElement15.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableRowElement15.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableRowElement16.xml.kfail b/test/testcases/tests/level2/html/HTMLTableRowElement16.xml
index 8471a2b..8471a2b 100644
--- a/test/testcases/tests/level2/html/HTMLTableRowElement16.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableRowElement16.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableRowElement17.xml.kfail b/test/testcases/tests/level2/html/HTMLTableRowElement17.xml
index b469470..b469470 100644
--- a/test/testcases/tests/level2/html/HTMLTableRowElement17.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableRowElement17.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableRowElement18.xml.kfail b/test/testcases/tests/level2/html/HTMLTableRowElement18.xml
index f296086..f296086 100644
--- a/test/testcases/tests/level2/html/HTMLTableRowElement18.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableRowElement18.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableRowElement19.xml.kfail b/test/testcases/tests/level2/html/HTMLTableRowElement19.xml
index 9a111f3..9a111f3 100644
--- a/test/testcases/tests/level2/html/HTMLTableRowElement19.xml.kfail
+++ b/test/testcases/tests/level2/html/HTMLTableRowElement19.xml
diff --git a/test/testcases/tests/level2/html/HTMLTableSectionElement30.xml.kfail b/test/testcases/tests/level2/html/HTMLTableSectionElement30.xml.kfail
new file mode 100644
index 0000000..8fd17c2
--- /dev/null
+++ b/test/testcases/tests/level2/html/HTMLTableSectionElement30.xml.kfail
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+Copyright (c) 2001 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. This program is distributed under the W3C's Software
+Intellectual Property License. This program is distributed in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+
+-->
+<!DOCTYPE test SYSTEM "dom2.dtd">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="HTMLTableSectionElement30">
+<metadata>
+<title>HTMLTableSectionElement30</title>
+<creator>NIST</creator>
+<description>
+ The insertRow() method inserts a new empty table row. The new
+ row is inserted immediately before the current indexth row in this
+ section. If index is -1 or equal to the number of rows in this section,
+ the new row is appended.
+
+ Retrieve the first THEAD element and invoke the insertRow() method
+ with an index of negative one. Since the index is negative one the
+ new row is appended.
+ After the new row is appended the number of rows in the THEAD
+ section is two.
+</description>
+<contributor>Rick Rivello</contributor>
+<date qualifier="created">2002-11-07</date>
+<subject resource="http://www.w3.org/TR/DOM-Level-2-HTML/html#ID-93995626"/>
+</metadata>
+<var name="nodeList" type="NodeList"/>
+<var name="testNode" type="Node"/>
+<var name="newRow" type="HTMLElement"/>
+<var name="rowsnodeList" type="HTMLCollection"/>
+<var name="vrows" type="int"/>
+<var name="doc" type="Document"/>
+<load var="doc" href="tablesection" willBeModified="true"/>
+<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname="&quot;thead&quot;"/>
+<assertSize collection="nodeList" size="1" id="Asize"/>
+<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
+<rows interface="HTMLTableSectionElement" obj="testNode" var="rowsnodeList"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
+<assertEquals actual="vrows" expected="1" id="rowsLink1" ignoreCase="false"/>
+<insertRow interface="HTMLTableSectionElement" obj="testNode" var="newRow" index="-1"/>
+<rows interface="HTMLTableSectionElement" obj="testNode" var="rowsnodeList"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
+<assertEquals actual="vrows" expected="2" id="rowsLink2" ignoreCase="false"/>
+</test>
diff --git a/test/testcases/tests/level2/html/HTMLTableSectionElement31.xml.kfail b/test/testcases/tests/level2/html/HTMLTableSectionElement31.xml.kfail
new file mode 100644
index 0000000..55464e2
--- /dev/null
+++ b/test/testcases/tests/level2/html/HTMLTableSectionElement31.xml.kfail
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+Copyright (c) 2001 World Wide Web Consortium,
+(Massachusetts Institute of Technology, Institut National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights Reserved. This program is distributed under the W3C's Software
+Intellectual Property License. This program is distributed in the
+hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
+
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+
+-->
+<!DOCTYPE test SYSTEM "dom2.dtd">
+<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-2" name="HTMLTableSectionElement31">
+<metadata>
+<title>HTMLTableSectionElement31</title>
+<creator>NIST</creator>
+<description>
+ The deleteRow() method deletes a row from this section. The index
+ starts from 0 and is relative only to the rows contained inside
+ this section, not all the rows in the table. If the index is -1
+ the last row will be deleted.
+
+ Retrieve the second TBODY element and invoke the deleteRow() method
+ with an index of -1. The nuber of rows in the THEAD section before
+ the deletion of the row is two. After the row is deleted the number
+ of rows in the TBODY section is one.
+</description>
+<contributor>Rick Rivello</contributor>
+<date qualifier="created">2002-11-07</date>
+<subject resource="http://www.w3.org/TR/DOM-Level-2-HTML/html#ID-5625626"/>
+</metadata>
+<var name="nodeList" type="NodeList"/>
+<var name="testNode" type="Node"/>
+<var name="rowsnodeList" type="HTMLCollection"/>
+<var name="vrows" type="int"/>
+<var name="doc" type="Document"/>
+<load var="doc" href="tablesection" willBeModified="true"/>
+<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname="&quot;tbody&quot;"/>
+<assertSize collection="nodeList" size="2" id="Asize"/>
+<item interface="NodeList" obj="nodeList" var="testNode" index="1"/>
+<rows interface="HTMLTableSectionElement" obj="testNode" var="rowsnodeList"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
+<assertEquals actual="vrows" expected="2" id="rowsLink1" ignoreCase="false"/>
+<deleteRow interface="HTMLTableSectionElement" obj="testNode" index="-1"/>
+<rows interface="HTMLTableSectionElement" obj="testNode" var="rowsnodeList"/>
+<length interface="HTMLCollection" obj="rowsnodeList" var="vrows"/>
+<assertEquals actual="vrows" expected="1" id="rowsLink2" ignoreCase="false"/>
+</test>
diff --git a/test/testcases/tests/level2/html/files/table.html b/test/testcases/tests/level2/html/files/table.html
new file mode 100644
index 0000000..b8f151e
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLE</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE ALIGN="center" SUMMARY="Table 1">
+<TR>
+<TH>Id</TH>
+<TH>Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+</TR>
+</TABLE>
+<TABLE ID="table-1" ALIGN="center" BORDER="4" BGCOLOR="#ff0000" FRAME="border" CELLPADDING="2" CELLSPACING="2" SUMMARY="HTML Control Table" RULES="all" WIDTH="680">
+<CAPTION ALIGN="top">Table Caption</CAPTION>
+<THEAD ALIGN="center" VALIGN="middle">
+<TR ALIGN="center" BGCOLOR="#00FFFF" VALIGN="middle">
+<TH ID="header-1">Employee Id</TH>
+<TH ID="header-2" ABBR="maiden" AXIS="center" ALIGN="center" BGCOLOR="#00FFFF" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-1" VALIGN="middle" WIDTH="100">Employee Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+<TH>Gender</TH>
+<TH>Address</TH>
+</TR>
+</THEAD>
+<TFOOT ALIGN="center" VALIGN="middle">
+<TR>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+</TR>
+</TFOOT>
+<TBODY ALIGN="center" VALIGN="middle">
+<TR>
+<TD AXIS="center" ID="Table-3" ABBR="maiden2" ALIGN="center" BGCOLOR="#FF0000" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-2" VALIGN="middle" WIDTH="175">EMP0001</TD>
+<TD HEADERS="header-2">Margaret Martin</TD>
+<TD>Accountant</TD>
+<TD>56,000</TD>
+<TD>Female</TD>
+<TD>1230 North Ave. Dallas, Texas 98551</TD>
+</TR>
+<TR>
+<TD>EMP0002</TD>
+<TD>Martha Raynolds</TD>
+<TD>Secretary</TD>
+<TD>35,000</TD>
+<TD>Female</TD>
+<TD>1900 Dallas Road Dallas, Texas 98554</TD>
+</TR>
+</TBODY>
+</TABLE>
+<TABLE SUMMARY="Table 3">
+<TBODY>
+<TR>
+<TD>
+</TD>
+</TR>
+</TBODY>
+<TBODY>
+<TR>
+<TD>
+</TD>
+</TR>
+</TBODY>
+<TBODY>
+<TR>
+<TD>
+</TD>
+</TR>
+</TBODY>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/table.xhtml b/test/testcases/tests/level2/html/files/table.xhtml
new file mode 100644
index 0000000..8300b90
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+<table summary="Table 3">
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table.xml b/test/testcases/tests/level2/html/files/table.xml
new file mode 100644
index 0000000..8300b90
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+<table summary="Table 3">
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+<tbody>
+<tr>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table1.html b/test/testcases/tests/level2/html/files/table1.html
new file mode 100644
index 0000000..8f5d19b
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table1.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLE</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE SUMMARY="Empty Table">
+<tr><td>HTML can't abide empty table</td></tr>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/test/testcases/tests/level2/html/files/table1.xhtml b/test/testcases/tests/level2/html/files/table1.xhtml
new file mode 100644
index 0000000..e174c63
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table1.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table summary="Empty Table">
+<tr><td>XHTML can't abide empty table</td></tr>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/table1.xml b/test/testcases/tests/level2/html/files/table1.xml
new file mode 100644
index 0000000..e174c63
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/table1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table summary="Empty Table">
+<tr><td>XHTML can't abide empty table</td></tr>
+</table>
+</body>
+</html>
+
diff --git a/test/testcases/tests/level2/html/files/tablerow.html b/test/testcases/tests/level2/html/files/tablerow.html
new file mode 100644
index 0000000..9e76a4c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablerow.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+<TITLE>NIST DOM HTML Test - TABLEROW</TITLE>
+</HEAD>
+<BODY onload="parent.loadComplete()">
+<TABLE ALIGN="center" SUMMARY="Table 1">
+<TR>
+<TH>Id</TH>
+<TH>Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+</TR>
+</TABLE>
+<TABLE ID="table-1" ALIGN="center" BORDER="4" BGCOLOR="#ff0000" FRAME="border" CELLPADDING="2" CELLSPACING="2" SUMMARY="HTML Control Table" RULES="all" WIDTH="680">
+<CAPTION ALIGN="top">Table Caption</CAPTION>
+<THEAD ALIGN="center" VALIGN="middle">
+<TR ALIGN="center" BGCOLOR="#00FFFF" VALIGN="middle" CHAR="*" CHAROFF="1">
+<TH ID="header-1">Employee Id</TH>
+<TH ID="header-2" ABBR="maiden" AXIS="center" ALIGN="center" BGCOLOR="#00FFFF" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-1" VALIGN="middle" WIDTH="100">Employee Name</TH>
+<TH>Position</TH>
+<TH>Salary</TH>
+<TH>Gender</TH>
+<TH>Address</TH>
+</TR>
+</THEAD>
+<TFOOT ALIGN="center" VALIGN="middle">
+<TR>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+<TH>next page ...</TH>
+</TR>
+</TFOOT>
+<TBODY ALIGN="center" VALIGN="middle">
+<TR>
+<TD AXIS="center" ID="Table-3" ABBR="maiden2" ALIGN="center" BGCOLOR="#FF0000" COLSPAN="1" HEIGHT="50" NOWRAP="nowrap" ROWSPAN="1" SCOPE="col" HEADERS="header-2" VALIGN="middle" WIDTH="175">EMP0001</TD>
+<TD HEADERS="header-2">Margaret Martin</TD>
+<TD>Accountant</TD>
+<TD>56,000</TD>
+<TD>Female</TD>
+<TD>1230 North Ave. Dallas, Texas 98551</TD>
+</TR>
+<TR>
+<TD>EMP0002</TD>
+<TD>Martha Raynolds</TD>
+<TD>Secretary</TD>
+<TD>35,000</TD>
+<TD>Female</TD>
+<TD>1900 Dallas Road Dallas, Texas 98554</TD>
+</TR>
+</TBODY>
+</TABLE>
+</BODY>
+</HTML>
+
diff --git a/test/testcases/tests/level2/html/files/tablerow.xhtml b/test/testcases/tests/level2/html/files/tablerow.xhtml
new file mode 100644
index 0000000..b901e3c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablerow.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle" char="*" charoff="1">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
+
diff --git a/test/testcases/tests/level2/html/files/tablerow.xml b/test/testcases/tests/level2/html/files/tablerow.xml
new file mode 100644
index 0000000..b901e3c
--- /dev/null
+++ b/test/testcases/tests/level2/html/files/tablerow.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<title>NIST DOM HTML Test - TABLE</title>
+</head>
+<body onload="parent.loadComplete()">
+<table align="center" summary="Table 1">
+<tr>
+<th>Id</th>
+<th>Name</th>
+<th>Position</th>
+<th>Salary</th>
+</tr>
+</table>
+<table id="table-1" align="center" border="4" bgcolor="#ff0000" frame="border" cellpadding="2" cellspacing="2" summary="HTML Control Table" rules="all" width="680">
+<caption align="top">Table Caption</caption>
+<thead align="center" valign="middle">
+<tr align="center" bgcolor="#00FFFF" valign="middle" char="*" charoff="1">
+<th id="header-1">Employee Id</th>
+<th id="header-2" abbr="maiden" axis="center" align="center" bgcolor="#00FFFF" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-1" valign="middle" width="100">Employee Name</th>
+<th>Position</th>
+<th>Salary</th>
+<th>Gender</th>
+<th>Address</th>
+</tr>
+</thead>
+<tfoot align="center" valign="middle">
+<tr>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+<th>next page ...</th>
+</tr>
+</tfoot>
+<tbody align="center" valign="middle">
+<tr>
+<td axis="center" id="Table-3" abbr="maiden2" align="center" bgcolor="#FF0000" colspan="1" height="50" nowrap="nowrap" rowspan="1" scope="col" headers="header-2" valign="middle" width="175">EMP0001</td>
+<td headers="header-2">Margaret Martin</td>
+<td>Accountant</td>
+<td>56,000</td>
+<td>Female</td>
+<td>1230 North Ave. Dallas, Texas 98551</td>
+</tr>
+<tr>
+<td>EMP0002</td>
+<td>Martha Raynolds</td>
+<td>Secretary</td>
+<td>35,000</td>
+<td>Female</td>
+<td>1900 Dallas Road Dallas, Texas 98554</td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
+
diff --git a/test/testutils/domtsasserts.c b/test/testutils/domtsasserts.c
index 41cacf2..cbb8ed0 100644
--- a/test/testutils/domtsasserts.c
+++ b/test/testutils/domtsasserts.c
@@ -124,7 +124,10 @@ bool is_equals_list(list *expected, list *actual, bool ignoreCase)
comparator rcmp = NULL;
if (expected->type == INT)
+ {
cmp = int_comparator;
+ rcmp = int_comparator;
+ }
if (expected->type == STRING) {
if (actual->type == DOM_STRING) {
cmp = ignoreCase? str_icmp : str_cmp;
@@ -139,6 +142,7 @@ bool is_equals_list(list *expected, list *actual, bool ignoreCase)
}
assert(cmp != NULL);
+ assert(rcmp != NULL);
return list_contains_all(expected, actual, cmp) && list_contains_all(actual, expected, rcmp);
}