summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/DOMTSHandler.pm28
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection02.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection02.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection03.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection03.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection10.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection10.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection11.xml.kfail (renamed from test/testcases/tests/level1/html/HTMLCollection11.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection12.xml (renamed from test/testcases/tests/level1/html/HTMLCollection12.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement01.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement02.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement03.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement04.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement05.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement06.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement07.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement08.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement09.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLFormElement10.xml (renamed from test/testcases/tests/level1/html/HTMLFormElement10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHeadElement01.xml (renamed from test/testcases/tests/level1/html/HTMLHeadElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLHtmlElement01.xml (renamed from test/testcases/tests/level1/html/HTMLHtmlElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement01.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement02.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement03.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement04.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement05.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement06.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement06.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement07.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement07.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement08.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement08.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLLinkElement09.xml (renamed from test/testcases/tests/level1/html/HTMLLinkElement09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLMetaElement01.xml (renamed from test/testcases/tests/level1/html/HTMLMetaElement01.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLMetaElement02.xml (renamed from test/testcases/tests/level1/html/HTMLMetaElement02.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLMetaElement03.xml (renamed from test/testcases/tests/level1/html/HTMLMetaElement03.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLMetaElement04.xml (renamed from test/testcases/tests/level1/html/HTMLMetaElement04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLTitleElement01.xml (renamed from test/testcases/tests/level1/html/HTMLTitleElement01.xml.kfail)0
-rw-r--r--test/testutils/domtsasserts.c152
-rw-r--r--test/testutils/domtsasserts.h7
-rw-r--r--test/testutils/utils.c9
-rw-r--r--test/testutils/utils.h2
36 files changed, 175 insertions, 23 deletions
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index e440f64..65efff3 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -38,6 +38,7 @@ our %special_type = (
DOMImplementation => "dom_implementation *",
NamedNodeMap => "dom_namednodemap *",
NodeList => "dom_nodelist *",
+ HTMLCollection => "dom_html_collection *",
CharacterData => "dom_characterdata *",
CDATASection => "dom_cdata_section *",
);
@@ -46,6 +47,7 @@ our %special_prefix = (
DOMImplementation => "dom_implementation",
NamedNodeMap => "dom_namednodemap",
NodeList => "dom_nodelist",
+ HTMLCollection => "dom_html_collection",
CharacterData => "dom_characterdata",
CDATASection => "dom_cdata_section *",
);
@@ -54,6 +56,7 @@ our %unref_prefix = (
DOMString => "dom_string",
NamedNodeMap => "dom_namednodemap",
NodeList => "dom_nodelist",
+ HTMLCollection => "dom_html_collection",
);
our %special_method = (
@@ -79,6 +82,7 @@ our %override_suffix = (
DOMImplementation => "domimplementation",
NamedNodeMap => "domnamednodemap",
NodeList => "domnodelist",
+ HTMLCollection => "domhtmlcollection",
Collection => "list",
List => "list",
);
@@ -661,9 +665,9 @@ sub generate_method {
}
$method = to_cmethod($ats{'interface'}, $en);
-
+ my $cast = to_attribute_cast($ats{'interface'});
my $ns = $dd->find("parameters/param", $node);
- my $params = "$ats{'obj'}";
+ my $params = "${cast}$ats{'obj'}";
for ($count = 1; $count <= $ns->size; $count++) {
my $n = $ns->get_node($count);
my $p = $n->getAttribute("name");
@@ -788,7 +792,7 @@ sub generate_attribute_fetcher {
}
my $fetcher = to_attribute_fetcher($ats{'interface'}, "$en");
-
+ my $cast = to_attribute_cast($ats{'interface'});
my $unref = 0;
my $temp_node = 0;
# Deal with the situation like
@@ -807,14 +811,14 @@ sub generate_attribute_fetcher {
my $t = type_to_ctype($self->{'var'}->{$ats{'var'}});
$tnode_index ++;
print "\t$t tnode$tnode_index = NULL;\n";
- print "\texp = $fetcher($ats{'obj'}, \&tnode$tnode_index);\n";
+ print "\texp = $fetcher(${cast}$ats{'obj'}, \&tnode$tnode_index);\n";
# The ats{'obj'} must have been added to cleanup stack
$unref = 1;
# Indicate that we have created a temp node
$temp_node = 1;
} else {
$unref = $self->param_unref($ats{'var'});
- print "\texp = $fetcher($ats{'obj'}, \&$ats{'var'});\n";
+ print "\texp = $fetcher(${cast}$ats{'obj'}, \&$ats{'var'});\n";
}
@@ -1116,7 +1120,7 @@ sub generate_assertion {
case "assertURIEquals" {
my $actual = $ats->{actual};
- my ($scheme, $path, $host, $file, $query, $fragment, $isAbsolute) = qw(NULL NULL NULL NULL NULL NULL NULL);
+ my ($scheme, $path, $host, $file, $name, $query, $fragment, $isAbsolute) = qw(NULL NULL NULL NULL NULL NULL NULL NULL);
if (exists $ats->{scheme}) {
$scheme = $ats->{scheme};
}
@@ -1129,6 +1133,9 @@ sub generate_assertion {
if (exists $ats->{file}) {
$file = $ats->{file};
}
+ if (exists $ats->{name}) {
+ $name = $ats->{name};
+ }
if (exists $ats->{query}) {
$query = $ats->{query};
}
@@ -1139,7 +1146,7 @@ sub generate_assertion {
$isAbsolute = $ats->{isAbsolute};
}
- print "is_uri_equals($scheme, $path, $host, $file, $query, $fragment, $isAbsolute, $actual)"
+ print "is_uri_equals($scheme, $path, $host, $file, $name, $query, $fragment, $isAbsolute, $actual)"
}
}
@@ -1376,6 +1383,13 @@ sub to_attribute_accessor {
return $ret;
}
+sub to_attribute_cast {
+ my $type = shift;
+ my $ret = get_prefix($type);
+ $ret =~ s/h_t_m_l/html/;
+ return "(${ret} *)";
+}
+
sub get_prefix {
my $type = shift;
diff --git a/test/testcases/tests/level1/html/HTMLCollection02.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail
index 521d5ae..521d5ae 100644
--- a/test/testcases/tests/level1/html/HTMLCollection02.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection02.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLCollection03.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail
index 36d489e..36d489e 100644
--- a/test/testcases/tests/level1/html/HTMLCollection03.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection03.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLCollection10.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection10.xml.kfail
index 78f4c9a..78f4c9a 100644
--- a/test/testcases/tests/level1/html/HTMLCollection10.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection10.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLCollection11.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection11.xml.kfail
index ebf217f..ebf217f 100644
--- a/test/testcases/tests/level1/html/HTMLCollection11.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection11.xml.kfail
diff --git a/test/testcases/tests/level1/html/HTMLCollection12.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection12.xml
index d7feb3d..d7feb3d 100644
--- a/test/testcases/tests/level1/html/HTMLCollection12.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection12.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement01.xml
index 057fac5..057fac5 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement02.xml
index 06abf8d..06abf8d 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement03.xml
index 50332f9..50332f9 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement04.xml
index 4077e36..4077e36 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement05.xml
index 54a3436..54a3436 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement06.xml
index fb1ca95..fb1ca95 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement07.xml
index 897b63d..897b63d 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement08.xml
index 1a691cb..1a691cb 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement09.xml
index 4f552d6..4f552d6 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLFormElement10.xml.kfail b/test/testcases/tests/level1/html/HTMLFormElement10.xml
index 8d1f3b4..8d1f3b4 100644
--- a/test/testcases/tests/level1/html/HTMLFormElement10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLFormElement10.xml
diff --git a/test/testcases/tests/level1/html/HTMLHeadElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLHeadElement01.xml
index a0fd82b..a0fd82b 100644
--- a/test/testcases/tests/level1/html/HTMLHeadElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHeadElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLHtmlElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLHtmlElement01.xml
index 1ad206a..1ad206a 100644
--- a/test/testcases/tests/level1/html/HTMLHtmlElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLHtmlElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement01.xml
index c9e2d16..c9e2d16 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement02.xml
index ab0105a..ab0105a 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement03.xml
index fff36db..fff36db 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement04.xml
index 924d945..924d945 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement05.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement05.xml
index cec4f35..cec4f35 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement05.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement06.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement06.xml
index 400e8ed..400e8ed 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement06.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement06.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement07.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement07.xml
index 71bbd8d..71bbd8d 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement07.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement07.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement08.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement08.xml
index 657237d..657237d 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement08.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement08.xml
diff --git a/test/testcases/tests/level1/html/HTMLLinkElement09.xml.kfail b/test/testcases/tests/level1/html/HTMLLinkElement09.xml
index 6fb55a8..6fb55a8 100644
--- a/test/testcases/tests/level1/html/HTMLLinkElement09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLLinkElement09.xml
diff --git a/test/testcases/tests/level1/html/HTMLMetaElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLMetaElement01.xml
index 5ee3bcc..5ee3bcc 100644
--- a/test/testcases/tests/level1/html/HTMLMetaElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLMetaElement01.xml
diff --git a/test/testcases/tests/level1/html/HTMLMetaElement02.xml.kfail b/test/testcases/tests/level1/html/HTMLMetaElement02.xml
index 11e7a09..11e7a09 100644
--- a/test/testcases/tests/level1/html/HTMLMetaElement02.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLMetaElement02.xml
diff --git a/test/testcases/tests/level1/html/HTMLMetaElement03.xml.kfail b/test/testcases/tests/level1/html/HTMLMetaElement03.xml
index ab3afc7..ab3afc7 100644
--- a/test/testcases/tests/level1/html/HTMLMetaElement03.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLMetaElement03.xml
diff --git a/test/testcases/tests/level1/html/HTMLMetaElement04.xml.kfail b/test/testcases/tests/level1/html/HTMLMetaElement04.xml
index 14ce0eb..14ce0eb 100644
--- a/test/testcases/tests/level1/html/HTMLMetaElement04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLMetaElement04.xml
diff --git a/test/testcases/tests/level1/html/HTMLTitleElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLTitleElement01.xml
index 9b95d95..9b95d95 100644
--- a/test/testcases/tests/level1/html/HTMLTitleElement01.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLTitleElement01.xml
diff --git a/test/testutils/domtsasserts.c b/test/testutils/domtsasserts.c
index 92e8222..e5220e0 100644
--- a/test/testutils/domtsasserts.c
+++ b/test/testutils/domtsasserts.c
@@ -190,20 +190,148 @@ bool is_size_list(unsigned long size, list *list)
}
-bool is_uri_equals(char *scheme, char *path, char *host,
- char *file, char *query, char *fragment,
- bool isAbsolute, dom_string *actual)
+bool is_uri_equals(const char *scheme, const char *path, const char *host,
+ const char *file, const char *name, const char *query,
+ const char *fragment, const char *isAbsolute,
+ dom_string *actual)
{
- UNUSED(scheme);
- UNUSED(path);
- UNUSED(host);
- UNUSED(file);
- UNUSED(query);
- UNUSED(fragment);
- UNUSED(isAbsolute);
- UNUSED(actual);
+ const char *_ptr = actual != NULL ? dom_string_data(actual) : NULL;
+ const size_t slen = actual != NULL ? dom_string_byte_length(actual) : 0;
+ char *_sptr = actual != NULL ? domts_strndup(_ptr, slen) : NULL;
+ char *sptr = _sptr;
+ bool result = false;
+
+ /* Used farther down */
+ const char *firstColon = NULL;
+ const char *firstSlash = NULL;
+ char *actualPath = NULL;
+ char *actualScheme = NULL;
+ char *actualHost = NULL;
+ char *actualFile = NULL;
+ char *actualName = NULL;
+
+ assert(sptr != NULL);
+
+ /* Note, from here on down, this is essentially a semi-direct
+ * reimplementation of assertURIEquals in the Java DOMTS.
+ */
+
+ /* Attempt to check fragment */
+ {
+ char *fptr = strrchr(sptr, '#');
+ const char *cfptr = fptr + 1;
+ if (fptr != NULL) {
+ *fptr = '\0'; /* Remove fragment from sptr */
+ } else {
+ cfptr = "";
+ }
+ if (fragment != NULL) {
+ if (strcmp(fragment, cfptr) != 0)
+ goto out;
+ }
+ }
+ /* Attempt to check query string */
+ {
+ char *qptr = strrchr(sptr, '?');
+ const char *cqptr = qptr + 1;
+ if (qptr != NULL) {
+ *qptr = '\0'; /* Remove query from sptr */
+ } else {
+ cqptr = "";
+ }
+ if (query != NULL) {
+ if (strcmp(query, cqptr) != 0)
+ goto out;
+ }
+ }
+
+ /* Scheme and path */
+ firstColon = strchr(sptr, ':');
+ firstSlash = strchr(sptr, '/');
+ actualPath = strdup(sptr);
+ actualScheme = strdup("");
+ if (firstColon != NULL && firstColon < firstSlash) {
+ free(actualScheme);
+ free(actualPath);
+ actualScheme = domts_strndup(sptr, firstColon - sptr);
+ actualPath = strdup(firstColon + 1);
+ }
+ if (scheme != NULL) {
+ if (strcmp(scheme, actualScheme) != 0)
+ goto out;
+ }
+ if (path != NULL) {
+ if (strcmp(path, actualPath) != 0)
+ goto out;
+ }
+
+ /* host */
+ if (host != NULL) {
+ if (actualPath[0] == '/' &&
+ actualPath[1] == '/') {
+ const char *termslash = strchr(actualPath + 2, '/');
+ actualHost = domts_strndup(actualPath,
+ termslash - actualPath);
+ } else {
+ actualHost = strdup("");
+ }
+ if (strcmp(actualHost, host) != 0)
+ goto out;
+ }
+
+
+ /* file */
+ actualFile = strdup(actualPath);
+ if (file != NULL || name != NULL) {
+ const char *finalSlash = strrchr(actualPath, '/');
+ if (finalSlash != NULL) {
+ free(actualFile);
+ actualFile = strdup(finalSlash + 1);
+ }
+ if (file != NULL) {
+ if (strcmp(actualFile, file) != 0)
+ goto out;
+ }
+ }
+
+ /* name */
+ if (name != NULL) {
+ const char *finalPeriod = strrchr(actualFile, '.');
+ if (finalPeriod != NULL) {
+ actualName = domts_strndup(actualFile,
+ finalPeriod - actualFile);
+ } else {
+ actualName = strdup(actualFile);
+ }
+ if (strcmp(actualName, name) != 0)
+ goto out;
+ }
+
+ /* isAbsolute */
+ if (isAbsolute != NULL) {
+ bool startslash = *actualPath == '/';
+ bool isabsolute = strcasecmp(isAbsolute, "true") == 0;
+ isabsolute |= (strcasecmp(isAbsolute, "yes") == 0);
+ isabsolute |= (strcmp(isAbsolute, "1") == 0);
+ startslash |= (strncmp(actualPath, "file:/", 6) == 0);
+ if (isabsolute != startslash)
+ goto out;
+ }
- return false;
+ result = true;
+out:
+ if (actualPath != NULL)
+ free(actualPath);
+ if (actualScheme != NULL)
+ free(actualScheme);
+ if (actualHost != NULL)
+ free(actualHost);
+ if (actualFile != NULL)
+ free(actualFile);
+ if (actualName != NULL)
+ free(actualName);
+ free(_sptr);
+ return result;
}
diff --git a/test/testutils/domtsasserts.h b/test/testutils/domtsasserts.h
index c301d88..bc214e8 100644
--- a/test/testutils/domtsasserts.h
+++ b/test/testutils/domtsasserts.h
@@ -49,9 +49,10 @@ bool is_size_domnamednodemap(unsigned long size, dom_namednodemap *map);
bool is_size_domnodelist(unsigned long size, dom_nodelist *list);
bool is_size_list(unsigned long size, list *list);
-bool is_uri_equals(char *scheme, char *path, char *host,
- char *file, char *query, char *fragment,
- bool isAbsolute, dom_string *actual);
+bool is_uri_equals(const char *scheme, const char *path, const char *host,
+ const char *file, const char *name, const char *query,
+ const char *fragment, const char *isAbsolute,
+ dom_string *actual);
bool is_contenttype(const char *type);
diff --git a/test/testutils/utils.c b/test/testutils/utils.c
index 739933f..c876613 100644
--- a/test/testutils/utils.c
+++ b/test/testutils/utils.c
@@ -8,6 +8,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "utils.h"
@@ -31,4 +32,10 @@ void mymsg(uint32_t severity, void *ctx, const char *msg, ...)
fprintf(stderr, "\n");
}
-
+char *domts_strndup(const char *s, size_t len)
+{
+ size_t retlen = min(strlen(s), len);
+ char *ret = calloc(retlen + 1, 1);
+ memcpy(ret, s, retlen);
+ return ret;
+}
diff --git a/test/testutils/utils.h b/test/testutils/utils.h
index b57db36..560e909 100644
--- a/test/testutils/utils.h
+++ b/test/testutils/utils.h
@@ -31,5 +31,7 @@
void *myrealloc(void *ptr, size_t len, void *pw);
void mymsg(uint32_t severity, void *ctx, const char *msg, ...);
+char *domts_strndup(const char *s, size_t len);
+
#endif