tests: Added tests for DOM XML parser
authorLucas Bajolet <r4pass@hotmail.com>
Mon, 29 Jun 2015 15:02:59 +0000 (11:02 -0400)
committerLucas Bajolet <r4pass@hotmail.com>
Mon, 29 Jun 2015 15:02:59 +0000 (11:02 -0400)
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

39 files changed:
tests/sav/test_xml_read.res [new file with mode: 0644]
tests/sav/test_xml_read_args1.res [new file with mode: 0644]
tests/sav/test_xml_read_args10.res [new file with mode: 0644]
tests/sav/test_xml_read_args11.res [new file with mode: 0644]
tests/sav/test_xml_read_args12.res [new file with mode: 0644]
tests/sav/test_xml_read_args13.res [new file with mode: 0644]
tests/sav/test_xml_read_args14.res [new file with mode: 0644]
tests/sav/test_xml_read_args15.res [new file with mode: 0644]
tests/sav/test_xml_read_args16.res [new file with mode: 0644]
tests/sav/test_xml_read_args17.res [new file with mode: 0644]
tests/sav/test_xml_read_args18.res [new file with mode: 0644]
tests/sav/test_xml_read_args2.res [new file with mode: 0644]
tests/sav/test_xml_read_args3.res [new file with mode: 0644]
tests/sav/test_xml_read_args4.res [new file with mode: 0644]
tests/sav/test_xml_read_args5.res [new file with mode: 0644]
tests/sav/test_xml_read_args6.res [new file with mode: 0644]
tests/sav/test_xml_read_args7.res [new file with mode: 0644]
tests/sav/test_xml_read_args8.res [new file with mode: 0644]
tests/sav/test_xml_read_args9.res [new file with mode: 0644]
tests/test_xml_read.args [new file with mode: 0644]
tests/test_xml_read.nit [new file with mode: 0644]
tests/xml_tests/ibm01v01.xml [new file with mode: 0644]
tests/xml_tests/ibm10n04.xml [new file with mode: 0644]
tests/xml_tests/ibm14v01.xml [new file with mode: 0644]
tests/xml_tests/ibm14v02.xml [new file with mode: 0644]
tests/xml_tests/ibm14v03.xml [new file with mode: 0644]
tests/xml_tests/ibm17n03.xml [new file with mode: 0644]
tests/xml_tests/ibm20n01.xml [new file with mode: 0644]
tests/xml_tests/ibm24n01.xml [new file with mode: 0644]
tests/xml_tests/ibm24n03.xml [new file with mode: 0644]
tests/xml_tests/ibm24n04.xml [new file with mode: 0644]
tests/xml_tests/ibm24n05.xml [new file with mode: 0644]
tests/xml_tests/ibm24n06.xml [new file with mode: 0644]
tests/xml_tests/ibm24n07.xml [new file with mode: 0644]
tests/xml_tests/ibm24n08.xml [new file with mode: 0644]
tests/xml_tests/ibm24n09.xml [new file with mode: 0644]
tests/xml_tests/ibm25n01.xml [new file with mode: 0644]
tests/xml_tests/ibm25n02.xml [new file with mode: 0644]
tests/xml_tests/ibm28n08.xml [new file with mode: 0644]

diff --git a/tests/sav/test_xml_read.res b/tests/sav/test_xml_read.res
new file mode 100644 (file)
index 0000000..758d62a
--- /dev/null
@@ -0,0 +1 @@
+Usage ./text_xml_read file.xml
diff --git a/tests/sav/test_xml_read_args1.res b/tests/sav/test_xml_read_args1.res
new file mode 100644 (file)
index 0000000..7843164
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="us-ascii" standalone="yes"?><!-- Above is XMLDecl ---><!DOCTYPE animal [
+<!ELEMENT animal (cat|tiger|leopard)+>
+<!ELEMENT cat EMPTY>
+<!ELEMENT tiger (#PCDATA)>
+<!ELEMENT leopard ANY>
+<!ELEMENT small EMPTY>
+<!ELEMENT big EMPTY>
+<!ATTLIST tiger color CDATA #REQUIRED>
+]><!-- Above is DTD ---><?music  "Here is a PI" ?><animal><cat/><tiger color="white">This is a white tiger in Mirage!!</tiger><cat/><leopard><small/><big/></leopard></animal><!-- Above is element animal --->
diff --git a/tests/sav/test_xml_read_args10.res b/tests/sav/test_xml_read_args10.res
new file mode 100644 (file)
index 0000000..a884775
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Invalid string delimiter `?` for attribute `version` at line 1, position 7
diff --git a/tests/sav/test_xml_read_args11.res b/tests/sav/test_xml_read_args11.res
new file mode 100644 (file)
index 0000000..6f90fed
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Invalid string delimiter `v` for attribute `'1.0'` at line 1, position 7
diff --git a/tests/sav/test_xml_read_args12.res b/tests/sav/test_xml_read_args12.res
new file mode 100644 (file)
index 0000000..4bac940
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml versioN='1.0'?><!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]><doc/><!-- Wrong key word 'versioN' --->
diff --git a/tests/sav/test_xml_read_args13.res b/tests/sav/test_xml_read_args13.res
new file mode 100644 (file)
index 0000000..212ae99
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Invalid string delimiter `=` for attribute `version` at line 1, position 7
diff --git a/tests/sav/test_xml_read_args14.res b/tests/sav/test_xml_read_args14.res
new file mode 100644 (file)
index 0000000..9b6a2fb
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?><!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student first CDATA #REQUIRED
+                         last  CDATA #IMPLIED>
+]><!-- testing chardata with empty string ---><student first="Snow"></student>
diff --git a/tests/sav/test_xml_read_args15.res b/tests/sav/test_xml_read_args15.res
new file mode 100644 (file)
index 0000000..f52371e
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Malformatted attribute at line 7, position 7
diff --git a/tests/sav/test_xml_read_args16.res b/tests/sav/test_xml_read_args16.res
new file mode 100644 (file)
index 0000000..4a5113f
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Invalid string delimiter `?` for attribute `version'1.0'` at line 1, position 7
diff --git a/tests/sav/test_xml_read_args17.res b/tests/sav/test_xml_read_args17.res
new file mode 100644 (file)
index 0000000..f5c9b66
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Unfinished attribute `version` at line 1, position 7
diff --git a/tests/sav/test_xml_read_args18.res b/tests/sav/test_xml_read_args18.res
new file mode 100644 (file)
index 0000000..a5850f1
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Malformatted attribute at line 1, position 7
diff --git a/tests/sav/test_xml_read_args2.res b/tests/sav/test_xml_read_args2.res
new file mode 100644 (file)
index 0000000..2a2c393
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?><!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student first CDATA #REQUIRED
+                         last  CDATA #IMPLIED>
+]><!-- testing chardata with white space ---><student first="Eric">&#x0A; &#x09; &#x0D;&#x20;</student>
diff --git a/tests/sav/test_xml_read_args3.res b/tests/sav/test_xml_read_args3.res
new file mode 100644 (file)
index 0000000..e3ef121
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Missing matching tag for `testing` at line 7, position 37
diff --git a/tests/sav/test_xml_read_args4.res b/tests/sav/test_xml_read_args4.res
new file mode 100644 (file)
index 0000000..a5850f1
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Malformatted attribute at line 1, position 7
diff --git a/tests/sav/test_xml_read_args5.res b/tests/sav/test_xml_read_args5.res
new file mode 100644 (file)
index 0000000..1b4a147
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml Version='1.0'?><!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]><doc/><!-- Wrong key word 'Version' --->
diff --git a/tests/sav/test_xml_read_args6.res b/tests/sav/test_xml_read_args6.res
new file mode 100644 (file)
index 0000000..f5c9b66
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Unfinished attribute `version` at line 1, position 7
diff --git a/tests/sav/test_xml_read_args7.res b/tests/sav/test_xml_read_args7.res
new file mode 100644 (file)
index 0000000..6e2f56c
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Malformatted Processing Instruction tag at line 2, position 1
diff --git a/tests/sav/test_xml_read_args8.res b/tests/sav/test_xml_read_args8.res
new file mode 100644 (file)
index 0000000..5d8a854
--- /dev/null
@@ -0,0 +1 @@
+XML Error: Unfinished attribute `first` at line 14, position 10
diff --git a/tests/sav/test_xml_read_args9.res b/tests/sav/test_xml_read_args9.res
new file mode 100644 (file)
index 0000000..c5810fd
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?><!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student first CDATA #REQUIRED
+                         last  CDATA #IMPLIED>
+]><!-- testing chardata with a string of sample legal char except '<' and '&' nor does it contain sequence "]]>" ---><student first="Snow" last="Man">This is a test</student>
diff --git a/tests/test_xml_read.args b/tests/test_xml_read.args
new file mode 100644 (file)
index 0000000..d35ca9b
--- /dev/null
@@ -0,0 +1,18 @@
+xml_tests/ibm01v01.xml
+xml_tests/ibm14v02.xml
+xml_tests/ibm20n01.xml
+xml_tests/ibm24n03.xml
+xml_tests/ibm24n06.xml
+xml_tests/ibm24n09.xml
+xml_tests/ibm28n08.xml
+xml_tests/ibm10n04.xml
+xml_tests/ibm14v03.xml
+xml_tests/ibm24n01.xml
+xml_tests/ibm24n04.xml
+xml_tests/ibm24n07.xml
+xml_tests/ibm25n01.xml
+xml_tests/ibm14v01.xml
+xml_tests/ibm17n03.xml
+xml_tests/ibm24n05.xml
+xml_tests/ibm24n08.xml
+xml_tests/ibm25n02.xml
diff --git a/tests/test_xml_read.nit b/tests/test_xml_read.nit
new file mode 100644 (file)
index 0000000..e5319e0
--- /dev/null
@@ -0,0 +1,28 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import dom
+
+if args.length < 1 then
+       print "Usage ./text_xml_read file.xml"
+       exit 1
+end
+
+var fr = new FileReader.open(args[0])
+
+var s = fr.read_all
+
+fr.close
+
+print s.to_xml
diff --git a/tests/xml_tests/ibm01v01.xml b/tests/xml_tests/ibm01v01.xml
new file mode 100644 (file)
index 0000000..8947caa
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="us-ascii" standalone="yes" ?>
+<!-- Above is XMLDecl -->
+<!DOCTYPE animal [
+<!ELEMENT animal (cat|tiger|leopard)+>
+<!ELEMENT cat EMPTY>
+<!ELEMENT tiger (#PCDATA)>
+<!ELEMENT leopard ANY>
+<!ELEMENT small EMPTY>
+<!ELEMENT big EMPTY>
+<!ATTLIST tiger color CDATA #REQUIRED>
+]>
+<!-- Above is DTD -->
+<?music "Here is a PI" ?>
+<animal>
+   <cat/>
+   <tiger color="white">This is a white tiger in Mirage!!</tiger>
+   <cat/>
+   <leopard>
+      <small/>
+      <big/>
+   </leopard>
+</animal>
+<!-- Above is element animal -->
diff --git a/tests/xml_tests/ibm10n04.xml b/tests/xml_tests/ibm10n04.xml
new file mode 100644 (file)
index 0000000..04e86ac
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student
+               first CDATA #REQUIRED
+               middle CDATA #IMPLIED
+               last CDATA #IMPLIED >
+       <!ENTITY myfirst "Snow">
+       <!ENTITY mymiddle "I">
+       <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue with no closing bracket -->
+<student first="Snow >My Name is SnowMan. </student>
diff --git a/tests/xml_tests/ibm14v01.xml b/tests/xml_tests/ibm14v01.xml
new file mode 100644 (file)
index 0000000..e9b1ee3
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student first CDATA #REQUIRED
+                         last  CDATA #IMPLIED>
+]>
+
+<!-- testing chardata with empty string -->
+<student first="Snow"></student>
diff --git a/tests/xml_tests/ibm14v02.xml b/tests/xml_tests/ibm14v02.xml
new file mode 100644 (file)
index 0000000..331162f
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student first CDATA #REQUIRED
+                         last  CDATA #IMPLIED>
+]>
+
+<!-- testing chardata with white space -->
+<student first="Eric"> &#x0A; &#x09; &#x0D;&#x20;</student>
diff --git a/tests/xml_tests/ibm14v03.xml b/tests/xml_tests/ibm14v03.xml
new file mode 100644 (file)
index 0000000..8521d78
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+       <!ATTLIST student first CDATA #REQUIRED
+                         last  CDATA #IMPLIED>
+]>
+
+<!-- testing chardata with a string of sample legal char except '<' and '&' nor does it contain sequence "]]>" -->
+<student first="Snow" last="Man">This is a test</student>
diff --git a/tests/xml_tests/ibm17n03.xml b/tests/xml_tests/ibm17n03.xml
new file mode 100644 (file)
index 0000000..2f56c73
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid PITarget  -->
+<?xml This is a test ?>
+<student>My Name is SnowMan. </student>
diff --git a/tests/xml_tests/ibm20n01.xml b/tests/xml_tests/ibm20n01.xml
new file mode 100644 (file)
index 0000000..da79472
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+       <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CData with illegal sequence -->
+<![CDATA[<testing>This is ]]> a test</testing>]]>
+<student>My Name is SnowMan. </student>
diff --git a/tests/xml_tests/ibm24n01.xml b/tests/xml_tests/ibm24n01.xml
new file mode 100644 (file)
index 0000000..36581e7
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version= ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- VersioNum is missing in VersionInfo -->
diff --git a/tests/xml_tests/ibm24n03.xml b/tests/xml_tests/ibm24n03.xml
new file mode 100644 (file)
index 0000000..4c608c2
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version'1.0' ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Eq is missing in VersionInfo -->
diff --git a/tests/xml_tests/ibm24n04.xml b/tests/xml_tests/ibm24n04.xml
new file mode 100644 (file)
index 0000000..f047bf9
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml '1.0'=version ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong ordering VersionNum Eq 'version' -->
diff --git a/tests/xml_tests/ibm24n05.xml b/tests/xml_tests/ibm24n05.xml
new file mode 100644 (file)
index 0000000..3ca9426
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version'1.0'= ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong ordering version VersionNum Eq -->
diff --git a/tests/xml_tests/ibm24n06.xml b/tests/xml_tests/ibm24n06.xml
new file mode 100644 (file)
index 0000000..9f661f0
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml Version='1.0' ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word 'Version' -->
diff --git a/tests/xml_tests/ibm24n07.xml b/tests/xml_tests/ibm24n07.xml
new file mode 100644 (file)
index 0000000..e8f901c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml versioN='1.0' ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word 'versioN' -->
diff --git a/tests/xml_tests/ibm24n08.xml b/tests/xml_tests/ibm24n08.xml
new file mode 100644 (file)
index 0000000..5a9c5bc
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version='1.0" ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Mismatched qotes in VersionInfo -->
diff --git a/tests/xml_tests/ibm24n09.xml b/tests/xml_tests/ibm24n09.xml
new file mode 100644 (file)
index 0000000..7fb4a73
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version='1.0 ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Mismatched qotes in VersionInfo -->
diff --git a/tests/xml_tests/ibm25n01.xml b/tests/xml_tests/ibm25n01.xml
new file mode 100644 (file)
index 0000000..d7deb4c
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version=='1.0' ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word "==" in Eq -->
diff --git a/tests/xml_tests/ibm25n02.xml b/tests/xml_tests/ibm25n02.xml
new file mode 100644 (file)
index 0000000..d925098
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version eq '1.0' ?>
+<!DOCTYPE doc [
+   <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word "eq" in Eq -->
diff --git a/tests/xml_tests/ibm28n08.xml b/tests/xml_tests/ibm28n08.xml
new file mode 100644 (file)
index 0000000..c17be89
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<?DOCTYPE animal [
+   <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong opening sequence in doctypedecl -->
+<animal/>