From f721fb91140cb09b63b2563e61585ea2a272761c Mon Sep 17 00:00:00 2001 From: Lars Thorsen Date: Tue, 26 Apr 2011 14:54:24 +0200 Subject: Added the xmerl test suites. --- lib/xmerl/src/xmerl_sax_parser.erl | 1 + lib/xmerl/src/xmerl_xsd.erl | 14 +- lib/xmerl/test/ReadMe | 24 +++ .../w3c-copyright-19980720.html | 81 ++++++++ lib/xmerl/test/xmerl_test_lib.erl | 2 +- .../msx_failed_cases.log | 8 + .../w3c-copyright-19990405.html | 82 ++++++++ .../nist_failed_cases.log | 14 -- .../w3c-copyright-19990405.html | 82 ++++++++ .../sun_failed_cases.log | 38 ++-- .../w3c-copyright-19990405.html | 82 ++++++++ lib/xmerl/test/xmerl_xsd_lib.erl | 223 +++++++++++---------- 12 files changed, 507 insertions(+), 144 deletions(-) create mode 100644 lib/xmerl/test/ReadMe create mode 100644 lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html create mode 100644 lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html create mode 100644 lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html create mode 100644 lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html (limited to 'lib/xmerl') diff --git a/lib/xmerl/src/xmerl_sax_parser.erl b/lib/xmerl/src/xmerl_sax_parser.erl index eb9f8deec6..c1acf51b8a 100644 --- a/lib/xmerl/src/xmerl_sax_parser.erl +++ b/lib/xmerl/src/xmerl_sax_parser.erl @@ -278,6 +278,7 @@ detect_charset_1(Xml, State) -> convert_encoding(Enc) -> %% Just for 7,8 bit + utf8 case string:to_lower(Enc) of "utf-8" -> utf8; + "us-ascii" -> utf8; "iso-8859-1" -> latin1; % Handle all iso-8859 as latin1 "iso-8859-2" -> latin1; "iso-8859-3" -> latin1; diff --git a/lib/xmerl/src/xmerl_xsd.erl b/lib/xmerl/src/xmerl_xsd.erl index c0923520c2..bd24db5389 100644 --- a/lib/xmerl/src/xmerl_xsd.erl +++ b/lib/xmerl/src/xmerl_xsd.erl @@ -2420,8 +2420,8 @@ validate_xml(XMLEl=#xmlElement{},SEl=#schema_element{},S) -> %% 2 often check_element_type(XML=[XMLTxt=#xmlText{}|Rest],CM=[CMEl|CMRest],Env, Block,S,Checked) -> - %% XMLTxt är det första av content i element, - %% CMEl är den tillåtna typen enligt schemat + %% XMLTxt is the first part of the elements content, + %% CMEl is the allowed type according to the schema case is_whitespace(XMLTxt) of true -> %% Ignore XMLEl check_element_type(Rest,CM,Env,Block,S,[XMLTxt|Checked]); @@ -2453,7 +2453,7 @@ check_element_type(XML=[#xmlElement{}|_],[{choice,{CM,Occ}}|_CMRest], check_element_type(XML=[#xmlElement{}|_],[{all,{CM,Occ}}|_CMRest], Env,_Block,S,Checked) -> ?debug("calling choice/6~n",[]), - check_all(XML,CM,Occ,Env,S,Checked,XML); + check_all(XML,CM,Occ,Env,set_num_el(S,0),Checked,XML); %%LTH %% 3 often. CMEL may be ((simpleType | complexType)?, (unique | key | keyref)*)) check_element_type(XML=[XMLEl=#xmlElement{}|_],[CMEl|CMRest],Env, Block,S,Checked) -> @@ -3393,8 +3393,12 @@ qualified_node_set(Paths,[QN|QNs],El,S,Acc) -> end end, {KeySequence,S2} = mapfoldl(Fun,S,Paths), - qualified_node_set(Paths,QNs,El,S2,[flatten(KeySequence)|Acc]). - + case flatten(KeySequence) of + [] -> + qualified_node_set(Paths,QNs,El,S2,Acc); + KS -> + qualified_node_set(Paths,QNs,El,S2,[KS|Acc]) + end. apply_field(F,El,S) -> %% xmerl_xpath:string returns a list diff --git a/lib/xmerl/test/ReadMe b/lib/xmerl/test/ReadMe new file mode 100644 index 0000000000..effcff6fc4 --- /dev/null +++ b/lib/xmerl/test/ReadMe @@ -0,0 +1,24 @@ + +W3C conformance tests +===================== + +The xmerl tests contains a large number of conformance tests from W3C, which are located in the following +directories. + +xmerl_std_SUITE_data: + These tests are fetched from http://www.w3.org/XML/Test/ and repackaged as four tgz files. + The W3C Copyright notice is located in the file xmerl_std_SUITE_data/w3c-copyright-19980720.html. + +xmerl_xsd_MS2002-01-16_SUITE_data: + These tests are fetched from http://www.w3.org/XML/2004/xml-schema-test-suite/index.html + The W3C Copyright notice is located in the file xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html. + +xmerl_xsd_NIST2002-01-16_SUITE_data: + These tests are fetched from http://www.w3.org/XML/2004/xml-schema-test-suite/index.html + The W3C Copyright notice is located in the file xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html. + +xmerl_xsd_Sun2002-01-16_SUITE_data: + These tests are fetched from http://www.w3.org/XML/2004/xml-schema-test-suite/index.html + The W3C Copyright notice is located in the file xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html. + + diff --git a/lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html b/lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html new file mode 100644 index 0000000000..bc5c62fdbc --- /dev/null +++ b/lib/xmerl/test/xmerl_std_SUITE_data/w3c-copyright-19980720.html @@ -0,0 +1,81 @@ + + + + + + +W3C IPR SOFTWARE NOTICE +

W3C® SOFTWARE NOTICE AND LICENSE

+ +

Copyright © 1994-2002 World +Wide Web Consortium, (Massachusetts Institute of +Technology, Institut National de +Recherche en Informatique et en Automatique, Keio University). All Rights +Reserved. http://www.w3.org/Consortium/Legal/

+ +

This W3C work (including software, documents, or other related +items) is being provided by the copyright holders under the +following license. By obtaining, using and/or copying this work, +you (the licensee) agree that you have read, understood, and will +comply with the following terms and conditions:

+ +

Permission to use, copy, modify, and distribute this software +and its documentation, with or without modification,  for any +purpose and without fee or royalty is hereby granted, provided that +you include the following on ALL copies of the software and +documentation or portions thereof, including modifications, that +you make:

+ +
    +
  1. The full text of this NOTICE in a location viewable to users of +the redistributed or derivative work.
  2. + +
  3. Any pre-existing intellectual property disclaimers, notices, or +terms and conditions. If none exist, a short notice of the +following form (hypertext is preferred, text is permitted) should +be used within the body of any redistributed or derivative code: +"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of +Technology, Institut National de +Recherche en Informatique et en Automatique, Keio University). All Rights +Reserved. http://www.w3.org/Consortium/Legal/"
  4. + +
  5. Notice of any changes or modifications to the W3C files, +including the date changes were made. (We recommend you provide +URIs to the location from which the code is derived.)
  6. +
+ +

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND +COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE +USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD +PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

+ +

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, +SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE +SOFTWARE OR DOCUMENTATION.

+ +

The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to the software without +specific, written prior permission. Title to copyright in this +software and any associated documentation will at all times remain +with copyright holders.

+ +

____________________________________

+ +

This formulation of W3C's notice and license became active on +August 14 1998 so as to improve compatibility with GPL. This +version ensures that W3C software licensing terms are no more +restrictive than GPL and consequently W3C software may be +distributed in GPL packages. See the older formulation for +the policy prior to this date. Please see our Copyright FAQ for common questions about +using materials from our site, including specific terms and +conditions for packages like libwww, Amaya, and Jigsaw. Other +questions about this notice can be directed to site-policy@w3.org.

+ +

 

+ +
webmaster
+ (last updated $Date: 2002/02/13 14:08:32 $)
+ \ No newline at end of file diff --git a/lib/xmerl/test/xmerl_test_lib.erl b/lib/xmerl/test/xmerl_test_lib.erl index 83ca5431fd..16f438ca84 100644 --- a/lib/xmerl/test/xmerl_test_lib.erl +++ b/lib/xmerl/test/xmerl_test_lib.erl @@ -88,5 +88,5 @@ keysearch_delete(Key,N,List) -> get_data_dir(Config) -> Data0 = ?config(data_dir, Config), - {ok,Data,_} = regexp:sub(Data0, "xmerl_sax_std_SUITE", "xmerl_sax_std_SUITE"), + {ok,Data,_} = regexp:sub(Data0, "xmerl_sax_std_SUITE", "xmerl_std_SUITE"), Data. diff --git a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log index 473c7aabf6..a89a9a798c 100644 --- a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log +++ b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/msx_failed_cases.log @@ -503,6 +503,7 @@ "elemA010.xsd", "elemA009.xsd", "elemA006.xsd", + "elemZ001.xml", "elemZ002.xml", "elemU007.xml", "elemU006.xml", @@ -527,6 +528,7 @@ "elemT004.xml", "elemT001.xml", "elemQ022.xml", + "elemQ019.xml", "elemQ018.xml", "elemO011.xml", "elemO006.xml"],[]}}. @@ -1357,6 +1359,7 @@ "idL052.xml", "idL049.xml", "idL048.xml", + "idL025.xml", "idL024.xml", "idL023.xml", "idK015.xml", @@ -1367,10 +1370,13 @@ "idH032.xml", "idH023.xml", "idH012.xml", + "idH010.xml", "idH006.xml", "idG030.xml", "idG028.xml", "idG019.xml", + "idG012.xml", + "idG011.xml", "idG006.xml", "idF036.xml", "idF034.xml", @@ -1378,6 +1384,8 @@ "idF031.xml", "idF026.xml", "idF025.xml", + "idF017.xml", + "idF016.xml", "idF014.xml", "idF013.xml", "idF012.xml", diff --git a/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html new file mode 100644 index 0000000000..5c89ffd95e --- /dev/null +++ b/lib/xmerl/test/xmerl_xsd_MS2002-01-16_SUITE_data/w3c-copyright-19990405.html @@ -0,0 +1,82 @@ + + + + + DOCUMENT NOTICE + + +

W3C® DOCUMENT NOTICE AND LICENSE

+ +

Copyright © 1994-2002 World Wide Web +Consortium, (Massachusetts Institute of +Technology, Institut National de Recherche +en Informatique et en Automatique, Keio +University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/

+ +

Public documents on the W3C site are provided by the copyright holders +under the following license. The software or Document Type Definitions (DTDs) +associated with W3C specifications are governed by the Software +Notice. By using and/or copying this document, or the W3C document from +which this statement is linked, you (the licensee) agree that you have read, +understood, and will comply with the following terms and conditions:

+ +

Permission to use, copy, and distribute the contents of this document, or +the W3C document from which this statement is linked, in any medium for any +purpose and without fee or royalty is hereby granted, provided that you +include the following on ALL copies of the document, or portions +thereof, that you use:

+
    +
  1. A link or URL to the original W3C document.
  2. +
  3. The pre-existing copyright notice of the original author, or if it + doesn't exist, a notice of the form: "Copyright © [$date-of-document] World Wide Web Consortium, (Massachusetts Institute of Technology, + Institut National de Recherche en + Informatique et en Automatique, Keio + University). All Rights Reserved. + http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a + textual representation is permitted.)
  4. +
  5. If it exists, the STATUS of the W3C document.
  6. +
+ +

When space permits, inclusion of the full text of this NOTICE +should be provided. We request that authorship attribution be provided in any +software, documents, or other items or products that you create pursuant to +the implementation of the contents of this document, or any portion +thereof.

+ +

No right to create modifications or derivatives of W3C documents is +granted pursuant to this license. However, if additional requirements +(documented in the Copyright FAQ) are satisfied, +the right to create modifications or derivatives is sometimes granted by the +W3C to individuals complying with those requirements.

+ +

THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO +REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE +FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT +INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

+ +

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE +PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

+ +

The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to this document or its contents without +specific, written prior permission. Title to copyright in this document will +at all times remain with copyright holders.

+ +

----------------------------------------------------------------------------

+ +

This formulation of W3C's notice and license became active on April 05 +1999 so as to account for the treatment of DTDs, schema's and bindings. See +the older formulation for +the policy prior to this date. Please see our Copyright FAQ for common questions about using +materials from our site, including specific terms and conditions for packages +like libwww, Amaya, and Jigsaw. Other questions about this notice can be +directed to site-policy@w3.org.

+
+ webmaster
+ (last updated by reagle on 1999/04/99.) +
+ \ No newline at end of file diff --git a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log index e69f74d174..e10b6463fe 100644 --- a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log +++ b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/nist_failed_cases.log @@ -133,23 +133,9 @@ "NISTXML-decimal-minExclusive-5-1.xml", "NISTXML-decimal-minExclusive-4-5.xml", "NISTXML-decimal-minExclusive-4-4.xml", - "NISTXML-decimal-minExclusive-4-3.xml", - "NISTXML-decimal-minExclusive-4-2.xml", "NISTXML-decimal-minExclusive-4-1.xml", - "NISTXML-decimal-minExclusive-3-5.xml", - "NISTXML-decimal-minExclusive-3-4.xml", - "NISTXML-decimal-minExclusive-3-3.xml", - "NISTXML-decimal-minExclusive-3-2.xml", "NISTXML-decimal-minExclusive-3-1.xml", - "NISTXML-decimal-minExclusive-2-5.xml", - "NISTXML-decimal-minExclusive-2-4.xml", - "NISTXML-decimal-minExclusive-2-3.xml", - "NISTXML-decimal-minExclusive-2-2.xml", "NISTXML-decimal-minExclusive-2-1.xml", - "NISTXML-decimal-minExclusive-1-5.xml", - "NISTXML-decimal-minExclusive-1-4.xml", - "NISTXML-decimal-minExclusive-1-3.xml", - "NISTXML-decimal-minExclusive-1-2.xml", "NISTXML-decimal-minExclusive-1-1.xml"],[]}}. {'NISTSchema-double',{["NISTXML-double-maxInclusive-5-5.xml", "NISTXML-double-maxInclusive-5-4.xml", diff --git a/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html new file mode 100644 index 0000000000..5c89ffd95e --- /dev/null +++ b/lib/xmerl/test/xmerl_xsd_NIST2002-01-16_SUITE_data/w3c-copyright-19990405.html @@ -0,0 +1,82 @@ + + + + + DOCUMENT NOTICE + + +

W3C® DOCUMENT NOTICE AND LICENSE

+ +

Copyright © 1994-2002 World Wide Web +Consortium, (Massachusetts Institute of +Technology, Institut National de Recherche +en Informatique et en Automatique, Keio +University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/

+ +

Public documents on the W3C site are provided by the copyright holders +under the following license. The software or Document Type Definitions (DTDs) +associated with W3C specifications are governed by the Software +Notice. By using and/or copying this document, or the W3C document from +which this statement is linked, you (the licensee) agree that you have read, +understood, and will comply with the following terms and conditions:

+ +

Permission to use, copy, and distribute the contents of this document, or +the W3C document from which this statement is linked, in any medium for any +purpose and without fee or royalty is hereby granted, provided that you +include the following on ALL copies of the document, or portions +thereof, that you use:

+
    +
  1. A link or URL to the original W3C document.
  2. +
  3. The pre-existing copyright notice of the original author, or if it + doesn't exist, a notice of the form: "Copyright © [$date-of-document] World Wide Web Consortium, (Massachusetts Institute of Technology, + Institut National de Recherche en + Informatique et en Automatique, Keio + University). All Rights Reserved. + http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a + textual representation is permitted.)
  4. +
  5. If it exists, the STATUS of the W3C document.
  6. +
+ +

When space permits, inclusion of the full text of this NOTICE +should be provided. We request that authorship attribution be provided in any +software, documents, or other items or products that you create pursuant to +the implementation of the contents of this document, or any portion +thereof.

+ +

No right to create modifications or derivatives of W3C documents is +granted pursuant to this license. However, if additional requirements +(documented in the Copyright FAQ) are satisfied, +the right to create modifications or derivatives is sometimes granted by the +W3C to individuals complying with those requirements.

+ +

THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO +REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE +FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT +INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

+ +

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE +PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

+ +

The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to this document or its contents without +specific, written prior permission. Title to copyright in this document will +at all times remain with copyright holders.

+ +

----------------------------------------------------------------------------

+ +

This formulation of W3C's notice and license became active on April 05 +1999 so as to account for the treatment of DTDs, schema's and bindings. See +the older formulation for +the policy prior to this date. Please see our Copyright FAQ for common questions about using +materials from our site, including specific terms and conditions for packages +like libwww, Amaya, and Jigsaw. Other questions about this notice can be +directed to site-policy@w3.org.

+
+ webmaster
+ (last updated by reagle on 1999/04/99.) +
+ \ No newline at end of file diff --git a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log index 82f410b455..cf0403bdeb 100644 --- a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log +++ b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/sun_failed_cases.log @@ -1,27 +1,33 @@ -{'Sun-idc001.nogen',{["idc001.nogen.v01.xml","idc001.nogen.v00.xml"],[]}}. -{'Sun-idc004.nogen',{["idc004.nogen.v00.xml"],[]}}. -{'Sun-idc005.nogen',{["idc005.nogen.v00.xml"],[]}}. -{'Sun-idc006.nogen',{["idc006.nogen.v00.xml","idc006.nogen.n00.xml"],[]}}. -{'Sun-xsd001',{["xsd001.v03.xml", - "xsd001.v02.xml", - "xsd001.v01.xml", - "xsd001.v00.xml"],[]}}. +{'Sun-idc004.nogen',{["idc004.nogen.n02.xml", "idc004.nogen.n03.xml"],[]}}. +{'Sun-idc006.nogen',{["idc006.nogen.n00.xml"],[]}}. +{'Sun-xsd001',{["xsd001.n04.xml", + "xsd001.n05.xml", + "xsd001.n06.xml"],[]}}. {'Sun-xsd002',{["xsd002.v01.xml","xsd002.v00.xml"],[]}}. {'Sun-xsd003a',{["xsd003a.v00.xml"],[]}}. -{'Sun-xsd003b',{["xsd003b.v01.xml","xsd003b.v00.xml"],[]}}. -{'Sun-xsd004',{["xsd004.v00.xml","xsd004.n00.xml"],[]}}. -{'Sun-xsd005',{["xsd005.v00.xml"],[]}}. -{'Sun-xsd008',{["xsd008.v00.xml"],[]}}. +{'Sun-xsd003b',{["xsd003b.v01.xml"],[]}}. +{'Sun-xsd004',{["xsd004.v00.xml", + "xsd004.n00.xml", + "xsd004.n05.xml", + "xsd004.n06.xml", + "xsd004.n07.xml", + "xsd004.n11.xml", + "xsd004.n12.xml" + ],[]}}. +{'Sun-xsd005',{["xsd005.n05.xml"],[]}}. +{'Sun-xsd008',{[],[]}}. {'Sun-xsd012',{["xsd012.v00.xml"],[]}}. {'Sun-xsd021',{["xsd021.v00.xml", "xsd021.n03.xml", "xsd021.n02.xml", + "xsd021.n06.xml", + "xsd021.n07.xml", "xsd021.n01.xml", "xsd021.n00.xml"],[]}}. {'Sun-xsd022',{["xsd022.v00.xml"],[]}}. {'Sun-xsiType1',{["xsiType1.v1.xml"],[]}}. -{'Sun-xsiType-block-1',{["xsiType-block-1.v1.xml"],[]}}. -{'Sun-xsiType-block-2',{["xsiType-block-2.v1.xml"],[]}}. -{'Sun-xsiType-block-3',{["xsiType-block-3.v1.xml"],[]}}. -{'Sun-xsiType-block-4',{["xsiType-block-4.v1.xml"],[]}}. +{'Sun-xsiType-block-1',{["xsiType-block-1.n1.xml", "xsiType-block-1.v1.xml"],[]}}. +{'Sun-xsiType-block-2',{["xsiType-block-2.n1.xml", "xsiType-block-2.v1.xml"],[]}}. +{'Sun-xsiType-block-3',{["xsiType-block-3.n1.xml", "xsiType-block-3.v1.xml"],[]}}. +{'Sun-xsiType-block-4',{["xsiType-block-4.n2.xml", "xsiType-block-4.v1.xml"],[]}}. {'Sun-type-and-subst-1',{["type-and-subst-1.v2.xml"],[]}}. diff --git a/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html new file mode 100644 index 0000000000..5c89ffd95e --- /dev/null +++ b/lib/xmerl/test/xmerl_xsd_Sun2002-01-16_SUITE_data/w3c-copyright-19990405.html @@ -0,0 +1,82 @@ + + + + + DOCUMENT NOTICE + + +

W3C® DOCUMENT NOTICE AND LICENSE

+ +

Copyright © 1994-2002 World Wide Web +Consortium, (Massachusetts Institute of +Technology, Institut National de Recherche +en Informatique et en Automatique, Keio +University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/

+ +

Public documents on the W3C site are provided by the copyright holders +under the following license. The software or Document Type Definitions (DTDs) +associated with W3C specifications are governed by the Software +Notice. By using and/or copying this document, or the W3C document from +which this statement is linked, you (the licensee) agree that you have read, +understood, and will comply with the following terms and conditions:

+ +

Permission to use, copy, and distribute the contents of this document, or +the W3C document from which this statement is linked, in any medium for any +purpose and without fee or royalty is hereby granted, provided that you +include the following on ALL copies of the document, or portions +thereof, that you use:

+
    +
  1. A link or URL to the original W3C document.
  2. +
  3. The pre-existing copyright notice of the original author, or if it + doesn't exist, a notice of the form: "Copyright © [$date-of-document] World Wide Web Consortium, (Massachusetts Institute of Technology, + Institut National de Recherche en + Informatique et en Automatique, Keio + University). All Rights Reserved. + http://www.w3.org/Consortium/Legal/" (Hypertext is preferred, but a + textual representation is permitted.)
  4. +
  5. If it exists, the STATUS of the W3C document.
  6. +
+ +

When space permits, inclusion of the full text of this NOTICE +should be provided. We request that authorship attribution be provided in any +software, documents, or other items or products that you create pursuant to +the implementation of the contents of this document, or any portion +thereof.

+ +

No right to create modifications or derivatives of W3C documents is +granted pursuant to this license. However, if additional requirements +(documented in the Copyright FAQ) are satisfied, +the right to create modifications or derivatives is sometimes granted by the +W3C to individuals complying with those requirements.

+ +

THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO +REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED +TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE +FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT +INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

+ +

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE +PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

+ +

The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to this document or its contents without +specific, written prior permission. Title to copyright in this document will +at all times remain with copyright holders.

+ +

----------------------------------------------------------------------------

+ +

This formulation of W3C's notice and license became active on April 05 +1999 so as to account for the treatment of DTDs, schema's and bindings. See +the older formulation for +the policy prior to this date. Please see our Copyright FAQ for common questions about using +materials from our site, including specific terms and conditions for packages +like libwww, Amaya, and Jigsaw. Other questions about this notice can be +directed to site-policy@w3.org.

+
+ webmaster
+ (last updated by reagle on 1999/04/99.) +
+ \ No newline at end of file diff --git a/lib/xmerl/test/xmerl_xsd_lib.erl b/lib/xmerl/test/xmerl_xsd_lib.erl index 074e6dcd49..0b6b1ebc84 100644 --- a/lib/xmerl/test/xmerl_xsd_lib.erl +++ b/lib/xmerl/test/xmerl_xsd_lib.erl @@ -37,29 +37,29 @@ -include_lib("kernel/include/file.hrl"). -compare_test_results(Config,ST,IT) -> +compare_test_results(Config, ST, IT) -> ResST=compare_schema_test_results(ST), ResIT=compare_instance_test_results(IT), - io:format("compare_test_results:~n ST = ~p~n IT = ~p~n ResST = ~p~n ResIT = ~p~n",[ST,IT,ResST,ResIT]), - case process_reference_results(Config,ResST,ResIT) of + io:format("compare_test_results:~n ST = ~p~n IT = ~p~n ResST = ~p~n ResIT = ~p~n",[ST, IT, ResST, ResIT]), + case process_reference_results(Config, ResST, ResIT) of error -> error; Diff -> - return_results(Diff,ResST,ResIT,length(ST)+length(IT)) + return_results(Diff, ResST, ResIT, length(ST)+length(IT)) end. compare_schema_test_results(ST) -> - {[N||{N,false}<-ST],[N||{N,enoent}<-ST]}. + {[N||{N, false}<-ST], [N||{N, enoent}<-ST]}. compare_instance_test_results(IT) -> - {[N||{N,false}<-IT],[N||{N,enoent}<-IT]}. + {[N||{N, false}<-IT], [N||{N, enoent}<-IT]}. -return_results(Diff,{STErrs,_},{ITErrs,_},TotN) -> - NumErrs = length(STErrs++ITErrs), +return_results({SkippedN, Diff},{STErrs, _},{ITErrs, _}, TotN) -> + NumErrs = length(STErrs ++ ITErrs), case NumErrs == TotN of true when TotN > 0 -> ?line exit(all_tests_cases_failed); _ -> - return_results2(Diff,TotN - NumErrs,TotN) + return_results2(Diff, TotN - NumErrs, SkippedN, TotN) end. %% return_results2(Diff,{[],[]},{[],[]},TotN) -> @@ -69,151 +69,158 @@ return_results(Diff,{STErrs,_},{ITErrs,_},TotN) -> %% return_results2(Diff,{STErrs,STOther},{ITErrs,ITOther},TotN) -> %% {comment,io_lib:format("Total number of test cases: ~p~nThe following ~p test cases failed: ~p~nThe following ~p test cases was malicious ~p~~n"++Diff,[TotN,length(STErrs++ITErrs),STErrs++ITErrs,length(STOther++ITOther),STOther++ITOther])}. -return_results2(_,0,0) -> - {comment,io_lib:format("This test case was empty.~n",[])}; -return_results2({[],[],[],[]},NumSucc,TotN) -> - {comment,io_lib:format("~p successful tests of totally ~p test cases.~n", - [NumSucc,TotN])}; -return_results2({NewFail,NewSuccess,NewMal,NewNotMal},NumSucc,TotN) -> +return_results2(_, 0, 0, 0) -> + {comment,io_lib:format("This test case was empty.~n", [])}; +return_results2({[], [], [], []}, NumSucc, SkippedN, TotN) -> + {comment,io_lib:format("~p successful tests, ~p skipped tests of totally ~p test cases.~n", + [NumSucc, SkippedN, TotN])}; +return_results2({NewFail, NewSuccess, NewMal, NewNotMal}, NumSucc, SkippedN, TotN) -> NFComm = case NewFail of [] -> ""; _ -> io_lib:format("These ~p tests are new failures: ~p~n", - [length(NewFail),NewFail]) + [length(NewFail), NewFail]) end, NSComm = case NewSuccess of [] -> ""; - _ -> io_lib:format("These ~p tests are new succeeding cases: ~p~n", - [length(NewSuccess),NewSuccess]) + _ -> io_lib:format("These ~p skipped tests are new succeeding cases: ~p~n", + [length(NewSuccess), NewSuccess]) end, NMComm = case NewMal of [] -> ""; _ -> io_lib:format("These ~p tests are now malicious: ~p~n", - [length(NewMal),NewMal]) + [length(NewMal), NewMal]) end, NNMComm = case NewNotMal of [] -> ""; - _ -> io_lib:format("These ~p tests were malicious, but succeeds now: ~p~n",[length(NewNotMal),NewNotMal]) + _ -> io_lib:format("These ~p skipped tests were malicious, but succeeds now: ~p~n", [length(NewNotMal), NewNotMal]) end, - {comment,io_lib:format("~p successful tests of totally ~p test cases. ~n"++ - NFComm++NSComm++NMComm++NNMComm,[NumSucc,TotN])}. + ct:comment(io_lib:format("~p successful tests, ~p skipped tests of totally ~p test cases. ~n" ++ + NFComm ++ NSComm ++ NMComm ++ NNMComm, [NumSucc, SkippedN, TotN])), + [] = NewFail. + %% return_results2(Diff,{STErrs,STOther},{ITErrs,ITOther},TotN) -> -%% {comment,io_lib:format("Total number of test cases: ~p~nThe following ~p test cases failed: ~p~nThe following ~p test cases was malicious ~p~~n",[TotN,length(STErrs++ITErrs),STErrs++ITErrs,length(STOther++ITOther),STOther++ITOther])}. +%% {comment,io_lib:format("Total number of test cases: ~p~n The following ~p test cases failed: ~p~nThe following ~p test cases was malicious ~p~~n",[TotN,length(STErrs++ITErrs),STErrs++ITErrs,length(STOther++ITOther),STOther++ITOther])}. -process_reference_results(Config,{ErrsST,MalST},{ErrsIT,MalIT}) -> - {RefFailed,RefMalicious} = xsd_reference_log(Config), +process_reference_results(Config, {ErrsST, MalST}, {ErrsIT, MalIT}) -> + {RefFailed, RefMalicious} = xsd_reference_log(Config), +io:format("A: ~p : ~p\n\n",[RefFailed, RefMalicious]), AllErrs = ErrsST ++ ErrsIT, AllMals = MalST ++ MalIT, %% test cases failed now but succeeded in reference results. - NewFailures = [X||X<-AllErrs, lists:member(X,RefFailed)==false], + NewFailures = [X||X<-AllErrs, lists:member(X, RefFailed) == false], %% test cases succeeded now but failed in reference results. - NewSucceeds = [X||X<-RefFailed,lists:member(X,AllErrs)==false], + NewSucceeds = [X||X<-RefFailed, lists:member(X, AllErrs) == false], %% test cases malicious now but succeeded in reference results. - NewMalicious = [X||X<-AllMals, lists:member(X,RefMalicious)==false], + NewMalicious = [X||X<-AllMals, lists:member(X, RefMalicious) == false], %% test cases succeeded now but malicious in reference results. - NewNotMal = [X||X<-RefMalicious, lists:member(X,AllMals) == false], - write_in_log(Config,AllErrs,AllMals), + NewNotMal = [X||X<-RefMalicious, lists:member(X, AllMals) == false], + write_in_log(Config, AllErrs, AllMals), % io:format("process_reference_results:~n AllErrs = ~p~n NewFailures = ~p~n",[AllErrs,NewFailures]), - {NewFailures,NewSucceeds,NewMalicious,NewNotMal}. + {length(RefFailed) + length(RefMalicious), {NewFailures, NewSucceeds, NewMalicious, NewNotMal}}. xsd_reference_log(Config) -> - DataDir = ?config(data_dir,Config), - Suite = ?config(suite,Config), + DataDir = ?config(data_dir, Config), + Suite = ?config(suite, Config), SuiteReferenceLog = - filename:join([DataDir,lists:concat([Suite,"_failed_cases.log"])]), + filename:join([DataDir, lists:concat([Suite, "_failed_cases.log"])]), +io:format("B: ~p\n\n",[SuiteReferenceLog]), case file:consult(SuiteReferenceLog) of {ok,List} when is_list(List) -> - case lists:keysearch(?config(testcase,Config),1,List) of - {value,{_,TCRefFails}} -> +io:format("C: ~p\n\n",[List]), + case lists:keysearch(?config(testcase, Config), 1, List) of + {value,{_, TCRefFails}} -> +io:format("D: ~p\n\n",[TCRefFails]), TCRefFails; _ -> - {[],[]} +io:format("D: ~no result\n\n",[]), + {[], []} end; _ -> - {[],[]} + {[], []} end. -write_in_log(_Config,[],[]) -> +write_in_log(_Config, [], []) -> ok; -write_in_log(Config,AllErrs,AllMals) -> - ?line LogFileName = ?config(xmerl_error_log,Config), - {ok,IO}=file:open(LogFileName,[append]), - ?line TestCase = ?config(testcase,Config), - io:format(IO,"{~p,{~p,~p}}.~n",[TestCase,AllErrs,AllMals]), +write_in_log(Config, AllErrs, AllMals) -> + ?line LogFileName = ?config(xmerl_error_log, Config), + {ok,IO}=file:open(LogFileName, [append]), + ?line TestCase = ?config(testcase, Config), + io:format(IO,"{~p,{~p,~p}}.~n", [TestCase, AllErrs, AllMals]), file:close(IO), ok. schema_test(Config,FileName,XsdBase,Validity) -> ModuleName = filename:basename(FileName), - DataDir = ?config(data_dir,Config), - case xmerl_xsd:process_schema(filename:join([DataDir, FileName]),[{xsdbase,filename:join([DataDir,XsdBase])}]) of - {error,enoent} -> - {{ModuleName,enoent},#xsd_state{}}; - {Ok,S} -> + DataDir = ?config(data_dir, Config), + case xmerl_xsd:process_schema(filename:join([DataDir, FileName]), [{xsdbase,filename:join([DataDir, XsdBase])}]) of + {error, enoent} -> + {{ModuleName, enoent},#xsd_state{}}; + {Ok, S} -> case Validity of valid when Ok == ok -> %% io:format("schema_test1: Validity=valid,Ok=ok,S=~p~n",[S]), - {{ModuleName,S#xsd_state.errors == []},S}; + {{ModuleName, S#xsd_state.errors == []}, S}; invalid when Ok == error -> %% S is in this case an error reason - {{ModuleName,no_internal_error(S)},#xsd_state{}}; + {{ModuleName, no_internal_error(S)}, #xsd_state{}}; notKnown -> - {{ModuleName,true},#xsd_state{}}; + {{ModuleName, true}, #xsd_state{}}; valid -> - io:format("schema_test2: Validity=valid,Ok=~p,S=~p~n",[Ok,S]), + io:format("schema_test2: Validity=valid,Ok=~p,S=~p~n", [Ok, S]), %% io:format("FileName: ~p~n",[FileName]), - {{ModuleName,false},#xsd_state{}}; + {{ModuleName, false}, #xsd_state{}}; _ -> %% invalid Ok == ok - io:format("schema_test3: Validity=~p,Ok=~p,S=~p~n",[Validity,Ok,S]), - {{ModuleName,false},S} + io:format("schema_test3: Validity=~p,Ok=~p,S=~p~n", [Validity, Ok, S]), + {{ModuleName, false}, S} end end. -schema_test(Config,FileName,XsdBase,Validity,AccState) -> +schema_test(Config, FileName, XsdBase, Validity, AccState) -> ModuleName = filename:basename(FileName), - DataDir = ?config(data_dir,Config), - case xmerl_xsd:process_schema(filename:join([DataDir,FileName]), - [{xsdbase,filename:join([DataDir,XsdBase])}, AccState]) of - {error,enoent} -> - {{ModuleName,enoent},AccState}; - {Ok,S} -> + DataDir = ?config(data_dir, Config), + case xmerl_xsd:process_schema(filename:join([DataDir, FileName]), + [{xsdbase, filename:join([DataDir, XsdBase])}, AccState]) of + {error, enoent} -> + {{ModuleName, enoent}, AccState}; + {Ok, S} -> case Validity of valid when Ok == ok -> - {{ModuleName,S#xsd_state.errors == []},S}; + {{ModuleName, S#xsd_state.errors == []}, S}; invalid when Ok == error -> - {{ModuleName,no_internal_error(S)},AccState}; + {{ModuleName, no_internal_error(S)}, AccState}; notKnown -> - {{ModuleName,true},AccState}; + {{ModuleName, true}, AccState}; valid -> - {{ModuleName,false},AccState}; + {{ModuleName, false}, AccState}; _ -> - {{ModuleName,false},S} + {{ModuleName, false}, S} end end. -instance_test(Config,FileName,XMLBase,Validity,State) -> +instance_test(Config, FileName, XMLBase, Validity, State) -> ModuleName = filename:basename(FileName), - DataDir = ?config(data_dir,Config), - case xmerl_scan:file(filename:join([DataDir,FileName]), - [{xmlbase,filename:join([DataDir,XMLBase])}]) of - {error,enoent} -> - {ModuleName,enoent}; - {E,_} -> - {VE,S2} = xmerl_xsd:validate(E,State), + DataDir = ?config(data_dir, Config), + case xmerl_scan:file(filename:join([DataDir, FileName]), + [{xmlbase, filename:join([DataDir, XMLBase])}]) of + {error, enoent} -> + {ModuleName, enoent}; + {E, _} -> + {VE, S2} = xmerl_xsd:validate(E, State), case Validity of - valid when is_record(VE,xmlElement) -> + valid when is_record(VE, xmlElement) -> case S2#xsd_state.errors of [] -> ok; - _ -> io:format("test case ~p failed.~nValidity: ~p~nValidation result:~p~n",[FileName,Validity,VE]) + _ -> io:format("test case ~p failed.~nValidity: ~p~nValidation result:~p~n", [FileName, Validity, VE]) end, - {ModuleName,S2#xsd_state.errors == []}; + {ModuleName, S2#xsd_state.errors == []}; invalid when VE == error -> - {ModuleName,no_internal_error(S2)}; + {ModuleName, no_internal_error(S2)}; notKnown -> - {ModuleName,true}; + {ModuleName, true}; _ -> - io:format("test case ~p failed.~nValidity: ~p~nValidation result:~p~n",[FileName,Validity,VE]), + io:format("test case ~p failed.~nValidity: ~p~nValidation result:~p~n", [FileName, Validity, VE]), {ModuleName,false} end end. @@ -226,11 +233,11 @@ no_internal_error(R) -> true end. -unpack(Config,Suite) -> +unpack(Config, Suite) -> TarFile = suite_tar(Suite), - ?line file:set_cwd(?config(data_dir,Config)), - ?line ok=erl_tar:extract(TarFile,[compressed]), - change_mode(filename:rootname(TarFile,".tar.gz")). + ?line file:set_cwd(?config(data_dir, Config)), + ?line ok=erl_tar:extract(TarFile, [compressed]), + change_mode(filename:rootname(TarFile, ".tar.gz")). suite_tar(sun) -> "suntest.tar.gz"; @@ -242,14 +249,14 @@ suite_tar(nist) -> change_mode(Files) -> change_mode3(Files). change_mode2(Dir)-> - ?line {ok,CWD} = file:get_cwd(), - ?line {ok,FileList} = file:list_dir(Dir), - ?line file:set_cwd(filename:join([CWD,Dir])), + ?line {ok, CWD} = file:get_cwd(), + ?line {ok, FileList} = file:list_dir(Dir), + ?line file:set_cwd(filename:join([CWD, Dir])), change_mode3(FileList), ?line file:set_cwd(CWD). change_mode3([]) -> ok; -change_mode3([F|Fs]) -> +change_mode3([F |Fs]) -> case filelib:is_dir(F) of true -> chmod(F), @@ -261,53 +268,53 @@ change_mode3([F|Fs]) -> chmod(F) -> case file:read_file_info(F) of - {ok,FileInfo} -> + {ok, FileInfo} -> Mode= FileInfo#file_info.mode, - file:write_file_info(F,FileInfo#file_info{mode=8#00777 bor Mode}); + file:write_file_info(F, FileInfo#file_info{mode=8#00777 bor Mode}); _ -> ok end. -rmdir(Config,Suite) -> - ?line file:set_cwd(?config(data_dir,Config)), - SuiteDir = filename:rootname(suite_tar(Suite),".tar.gz"), +rmdir(Config, Suite) -> + ?line file:set_cwd(?config(data_dir, Config)), + SuiteDir = filename:rootname(suite_tar(Suite), ".tar.gz"), ?line ok=rm_f_(SuiteDir). %% Dir is a directory rm_f_(Dir) -> - ?line {ok,CWD} = file:get_cwd(), - ?line {ok,FileList} = file:list_dir(Dir), - ?line file:set_cwd(filename:join([CWD,Dir])), + ?line {ok, CWD} = file:get_cwd(), + ?line {ok, FileList} = file:list_dir(Dir), + ?line file:set_cwd(filename:join([CWD, Dir])), rm_files(FileList), ?line file:set_cwd(CWD), ? line ok = file:del_dir(Dir). rm_files([])-> ok; -rm_files([F|Fs]) -> +rm_files([F |Fs]) -> case filelib:is_dir(F) of true -> rm_f_(F); _ -> - io:format("rm_files: ~p~n",[F]), + io:format("rm_files: ~p~n", [F]), ?line ok = file:delete(F) end, rm_files(Fs). -create_error_log_file(Config,Suite) -> - ?line {{Y,M,D},{H,Min,S}} = calendar:local_time(), - DTString=lists:concat([Y,"-",M,"-",D,"_",H,".",Min,".",S]), - FileName = lists:concat([Suite,"_",DTString,".errorlog"]), +create_error_log_file(Config, Suite) -> + ?line {{Y, M, D}, {H, Min, S}} = calendar:local_time(), + DTString=lists:concat([Y, "-", M,"-", D, "_", H, ".", Min, ".", S]), + FileName = lists:concat([Suite, "_", DTString, ".errorlog"]), %% ?line {ok,_IO} = file:open(filename:join([?config(priv_dir,Config), %% FileName]),[append]). %% ?line {ok,_IO} = file:open(FileName,[append]). - io:format("error log file: ~p~n",[filename:join([?config(priv_dir,Config),FileName])]), - {ok,filename:join([?config(priv_dir,Config),FileName])}. + io:format("error log file: ~p~n", [filename:join([?config(priv_dir,Config), FileName])]), + {ok, filename:join([?config(priv_dir,Config), FileName])}. close_error_log_file(Config) -> - case lists:keysearch(xmerl_error_log,1,Config) of - {value,{_,IO}} -> + case lists:keysearch(xmerl_error_log, 1, Config) of + {value,{_, IO}} -> file:close(IO); _ -> ok -- cgit v1.2.3