summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Richards <rrichards@php.net>2006-09-21 11:53:58 +0000
committerRob Richards <rrichards@php.net>2006-09-21 11:53:58 +0000
commit1acc8abe5679b308b2d95186248455da0e20d5a3 (patch)
treec724057b320c994c9320927310e31144127ccc74
parentd421131d98e35a2d988d0650e6364dcf6c0dca53 (diff)
downloadphp-git-1acc8abe5679b308b2d95186248455da0e20d5a3.tar.gz
fix domcomment property handler so it inherits from domcharacterdata
mark tested functions as unicode safe add tests
-rw-r--r--ext/dom/attr.c4
-rw-r--r--ext/dom/cdatasection.c2
-rw-r--r--ext/dom/characterdata.c10
-rw-r--r--ext/dom/comment.c2
-rw-r--r--ext/dom/php_dom.c4
-rw-r--r--ext/dom/tests/domattributes.phpt43
-rw-r--r--ext/dom/tests/domchardata.phpt76
-rw-r--r--ext/dom/text.c8
8 files changed, 134 insertions, 15 deletions
diff --git a/ext/dom/attr.c b/ext/dom/attr.c
index f7b1c1596f..8dca96efc9 100644
--- a/ext/dom/attr.c
+++ b/ext/dom/attr.c
@@ -43,7 +43,7 @@ zend_function_entry php_dom_attr_class_functions[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto void DOMAttr::__construct(string name, [string value]); */
+/* {{{ proto void DOMAttr::__construct(string name, [string value]) U */
PHP_METHOD(domattr, __construct)
{
@@ -253,7 +253,7 @@ int dom_attr_schema_type_info_read(dom_object *obj, zval **retval TSRMLS_DC)
-/* {{{ proto boolean dom_attr_is_id();
+/* {{{ proto boolean dom_attr_is_id() U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId
Since: DOM Level 3
*/
diff --git a/ext/dom/cdatasection.c b/ext/dom/cdatasection.c
index eb8e4e8c60..bc7133bb0c 100644
--- a/ext/dom/cdatasection.c
+++ b/ext/dom/cdatasection.c
@@ -40,7 +40,7 @@ zend_function_entry php_dom_cdatasection_class_functions[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto void DOMCdataSection::__construct(string value); */
+/* {{{ proto void DOMCdataSection::__construct(string value) U */
PHP_METHOD(domcdatasection, __construct)
{
diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c
index 4abd1f148f..1de3885e39 100644
--- a/ext/dom/characterdata.c
+++ b/ext/dom/characterdata.c
@@ -140,7 +140,7 @@ int dom_characterdata_length_read(dom_object *obj, zval **retval TSRMLS_DC)
/* }}} */
-/* {{{ proto string dom_characterdata_substring_data(int offset, int count);
+/* {{{ proto string dom_characterdata_substring_data(int offset, int count) U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF
Since:
*/
@@ -190,7 +190,7 @@ PHP_FUNCTION(dom_characterdata_substring_data)
/* }}} end dom_characterdata_substring_data */
-/* {{{ proto void dom_characterdata_append_data(string arg);
+/* {{{ proto void dom_characterdata_append_data(string arg) U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F
Since:
*/
@@ -225,7 +225,7 @@ PHP_FUNCTION(dom_characterdata_append_data)
/* }}} end dom_characterdata_append_data */
-/* {{{ proto void dom_characterdata_insert_data(int offset, string arg);
+/* {{{ proto void dom_characterdata_insert_data(int offset, string arg) U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F
Since:
*/
@@ -274,7 +274,7 @@ PHP_FUNCTION(dom_characterdata_insert_data)
/* }}} end dom_characterdata_insert_data */
-/* {{{ proto void dom_characterdata_delete_data(int offset, int count);
+/* {{{ proto void dom_characterdata_delete_data(int offset, int count) U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781
Since:
*/
@@ -330,7 +330,7 @@ PHP_FUNCTION(dom_characterdata_delete_data)
/* }}} end dom_characterdata_delete_data */
-/* {{{ proto void dom_characterdata_replace_data(int offset, int count, string arg);
+/* {{{ proto void dom_characterdata_replace_data(int offset, int count, string arg) U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB
Since:
*/
diff --git a/ext/dom/comment.c b/ext/dom/comment.c
index 805e1432f4..08ae67349e 100644
--- a/ext/dom/comment.c
+++ b/ext/dom/comment.c
@@ -40,7 +40,7 @@ zend_function_entry php_dom_comment_class_functions[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto void DOMComment::__construct([string value]); */
+/* {{{ proto void DOMComment::__construct([string value]) U */
PHP_METHOD(domcomment, __construct)
{
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index ce2931549d..8242a1fd25 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -698,8 +698,8 @@ PHP_MINIT_FUNCTION(dom)
REGISTER_DOM_CLASS(ce, "DOMComment", dom_characterdata_class_entry, php_dom_comment_class_functions, dom_comment_class_entry);
zend_hash_init(&dom_comment_prop_handlers, 0, NULL, NULL, 1);
- zend_hash_copy(&dom_comment_prop_handlers, &dom_node_prop_handlers, NULL, NULL, sizeof(dom_prop_handler));
- zend_hash_add(&classes, ce.name.s, ce.name_length + 1, &dom_comment_prop_handlers, sizeof(dom_typeinfo_prop_handlers), NULL);
+ zend_hash_copy(&dom_comment_prop_handlers, &dom_characterdata_prop_handlers, NULL, NULL, sizeof(dom_prop_handler));
+ zend_hash_add(&classes, ce.name.s, ce.name_length + 1, &dom_comment_prop_handlers, sizeof(dom_comment_prop_handlers), NULL);
REGISTER_DOM_CLASS(ce, "DOMTypeinfo", NULL, php_dom_typeinfo_class_functions, dom_typeinfo_class_entry);
diff --git a/ext/dom/tests/domattributes.phpt b/ext/dom/tests/domattributes.phpt
new file mode 100644
index 0000000000..9097a887e9
--- /dev/null
+++ b/ext/dom/tests/domattributes.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Attributes: DOMAttribute functionality
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+require_once("dom_test.inc");
+
+$dom = new DOMDocument;
+$dom->loadXML($xmlstr);
+if(!$dom) {
+ echo "Error while parsing the document\n";
+ exit;
+}
+
+$node = $dom->documentElement;
+
+$lang = $node->getAttributeNode('language');
+echo "Language: ".$lang->value."\n";
+
+$lang->value = 'en-US';
+echo "Language: ".$lang->value."\n";
+
+$parent = $lang->ownerElement;
+
+$chapter = new DOMAttr("num", "1");
+$parent->setAttributeNode($chapter);
+
+echo "Is ID?: ".($chapter->isId()?'YES':'NO')."\n";
+
+$top_element = $node->cloneNode();
+
+print $dom->saveXML($top_element);
+
+
+?>
+--EXPECT--
+
+Language: en
+Language: en-US
+Is ID?: NO
+<chapter language="en-US" num="1"/>
+
diff --git a/ext/dom/tests/domchardata.phpt b/ext/dom/tests/domchardata.phpt
new file mode 100644
index 0000000000..6baff6d148
--- /dev/null
+++ b/ext/dom/tests/domchardata.phpt
@@ -0,0 +1,76 @@
+--TEST--
+CharData: DOMCharacterData and related functionality
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+require_once("dom_test.inc");
+
+$dom = new DOMDocument;
+$dom->loadXML($xmlstr);
+if(!$dom) {
+ echo "Error while parsing the document\n";
+ exit;
+}
+
+$node = $dom->documentElement;
+
+$charnode = $dom->createElement('charnode');
+$node->appendChild($charnode);
+
+/* DOMComment */
+$comment = new DOMComment('Testing character data and extending nodes');
+$charnode->appendChild($comment);
+
+echo "Comment Length: ".$comment->length."\n";
+
+$comment->data = 'Updated comment';
+echo "New Comment Length: ".$comment->length."\n";
+echo "New Comment Data: ".$comment->data."\n";
+
+/* DOMCDataSection */
+$cdata = new DOMCDataSection('Chars: <>&"');
+$charnode->appendChild($cdata);
+
+echo "Substring: ".$cdata->substringData(7, 4)."\n";
+$cdata->replaceData(10, 1, "'");
+echo "New Substring: ".$cdata->substringData(7, 4)."\n";
+
+/* DOMCharacterData using DOMComment */
+$comment = new DOMComment('instructions');
+echo "Comment Value: ".$comment->data."\n";
+$comment->data = 'some more instructions';
+echo "New Comment Value: ".$comment->data."\n";
+
+$comment->insertData(10, 'pi ');
+$comment->replaceData(18, 5, 'i');
+$comment->insertData(20, 'g');
+$comment->deleteData(13, 2);
+$comment->deleteData(10, 3);
+$comment->insertData(10, 'comment ');
+echo "Updated Comment Value: ".$comment->data."\n";
+
+/* DOMText */
+$text = new DOMText('some text characters');
+
+echo "Whole Text: ".$text->wholeText."\n";
+$text2 = $text->splitText(9);
+
+echo "Split text: ".$text2->wholeText."\n";
+$text3 = $text2->splitText(1);
+
+echo "Is Whitespace?: ".($text2->isElementContentWhitespace()?'YES':'NO');
+?>
+--EXPECT--
+
+Comment Length: 42
+New Comment Length: 15
+New Comment Data: Updated comment
+Substring: <>&"
+New Substring: <>&'
+Comment Value: instructions
+New Comment Value: some more instructions
+Updated Comment Value: some more comment strings
+Whole Text: some text characters
+Split text: characters
+Is Whitespace?: YES
diff --git a/ext/dom/text.c b/ext/dom/text.c
index 8923efe007..28f58ac85b 100644
--- a/ext/dom/text.c
+++ b/ext/dom/text.c
@@ -44,7 +44,7 @@ zend_function_entry php_dom_text_class_functions[] = {
{NULL, NULL, NULL}
};
-/* {{{ proto void DOMText::__construct([string value]); */
+/* {{{ proto void DOMText::__construct([string value]) U */
PHP_METHOD(domtext, __construct)
{
@@ -108,7 +108,7 @@ int dom_text_whole_text_read(dom_object *obj, zval **retval TSRMLS_DC)
/* }}} */
-/* {{{ proto DOMText dom_text_split_text(int offset);
+/* {{{ proto DOMText dom_text_split_text(int offset) U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D
Since:
*/
@@ -167,7 +167,7 @@ PHP_FUNCTION(dom_text_split_text)
/* }}} end dom_text_split_text */
-/* {{{ proto boolean dom_text_is_whitespace_in_element_content();
+/* {{{ proto boolean dom_text_is_whitespace_in_element_content() U
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent
Since: DOM Level 3
*/
@@ -191,7 +191,7 @@ PHP_FUNCTION(dom_text_is_whitespace_in_element_content)
/* }}} end dom_text_is_whitespace_in_element_content */
-/* {{{ proto DOMText dom_text_replace_whole_text(string content);
+/* {{{ proto DOMText dom_text_replace_whole_text(string content)
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText
Since: DOM Level 3
*/