diff options
author | Rob Richards <rrichards@php.net> | 2006-09-21 11:53:58 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2006-09-21 11:53:58 +0000 |
commit | 1acc8abe5679b308b2d95186248455da0e20d5a3 (patch) | |
tree | c724057b320c994c9320927310e31144127ccc74 | |
parent | d421131d98e35a2d988d0650e6364dcf6c0dca53 (diff) | |
download | php-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.c | 4 | ||||
-rw-r--r-- | ext/dom/cdatasection.c | 2 | ||||
-rw-r--r-- | ext/dom/characterdata.c | 10 | ||||
-rw-r--r-- | ext/dom/comment.c | 2 | ||||
-rw-r--r-- | ext/dom/php_dom.c | 4 | ||||
-rw-r--r-- | ext/dom/tests/domattributes.phpt | 43 | ||||
-rw-r--r-- | ext/dom/tests/domchardata.phpt | 76 | ||||
-rw-r--r-- | ext/dom/text.c | 8 |
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 */ |