Commit cf3b7f5d authored by Dr. Martin Goik's avatar Dr. Martin Goik

XML unit test alignment to Junit standard

parent 31d50169
/.idea/
/target/
/.settings/
.classpath
......@@ -5,34 +6,11 @@
dependency-reduced-pom.xml
*.log
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle:
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
*.iws
*.iml
# IntelliJ
......@@ -44,9 +22,6 @@ out/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
......
......@@ -103,7 +103,7 @@
<dependency>
<groupId>de.hdm_stuttgart.mi.exam</groupId>
<artifactId>unitmarking</artifactId>
<version>0.9</version>
<version>1.0</version>
</dependency>
</dependencies>
......@@ -153,7 +153,7 @@
<configuration>
<archive>
<manifest>
<mainClass>de.hdm_stuttgart.mi.sda1.test.ShowReachedPoints</mainClass>
<mainClass>de.hdm_stuttgart.mi.sda1.test.ex1.ShowReachedPoints</mainClass>
</manifest>
</archive>
</configuration>
......
<?xml version='1.0'?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns ="http://www.w3.org/1999/xhtml"
xml:lang="en">
<xs:annotation>
<xs:documentation>
<div>
<h1>About the XML namespace</h1>
<div class="bodytext">
<p>
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
</p>
<p>
See <a href="http://www.w3.org/XML/1998/namespace.html">
http://www.w3.org/XML/1998/namespace.html</a> and
<a href="http://www.w3.org/TR/REC-xml">
http://www.w3.org/TR/REC-xml</a> for information
about this namespace.
</p>
<p>
Note that local names in this namespace are intended to be
defined only by the World Wide Web Consortium or its subgroups.
The names currently defined in this namespace are listed below.
They should not be used with conflicting semantics by any Working
Group, specification, or document instance.
</p>
<p>
See further below in this document for more information about <a
href="#usage">how to refer to this schema document from your own
XSD schema documents</a> and about <a href="#nsversioning">the
namespace-versioning policy governing this schema document</a>.
</p>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:attribute name="lang">
<xs:annotation>
<xs:documentation>
<div>
<h3>lang (as an attribute name)</h3>
<p>
denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.</p>
</div>
<div>
<h4>Notes</h4>
<p>
Attempting to install the relevant ISO 2- and 3-letter
codes as the enumerated possible values is probably never
going to be a realistic possibility.
</p>
<p>
See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
and the IANA language subtag registry at
<a href="http://www.iana.org/assignments/language-subtag-registry">
http://www.iana.org/assignments/language-subtag-registry</a>
for further information.
</p>
<p>
The union allows for the 'un-declaration' of xml:lang with
the empty string.
</p>
</div>
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:union memberTypes="xs:language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="space">
<xs:annotation>
<xs:documentation>
<div>
<h3>space (as an attribute name)</h3>
<p>
denotes an attribute whose
value is a keyword indicating what whitespace processing
discipline is intended for the content of the element; its
value is inherited. This name is reserved by virtue of its
definition in the XML specification.</p>
</div>
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="default"/>
<xs:enumeration value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="base" type="xs:anyURI"> <xs:annotation>
<xs:documentation>
<div>
<h3>base (as an attribute name)</h3>
<p>
denotes an attribute whose value
provides a URI to be used as the base for interpreting any
relative URIs in the scope of the element on which it
appears; its value is inherited. This name is reserved
by virtue of its definition in the XML Base specification.</p>
<p>
See <a
href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
for information about this attribute.
</p>
</div>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:ID">
<xs:annotation>
<xs:documentation>
<div>
<h3>id (as an attribute name)</h3>
<p>
denotes an attribute whose value
should be interpreted as if declared to be of type ID.
This name is reserved by virtue of its definition in the
xml:id specification.</p>
<p>
See <a
href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
for information about this attribute.
</p>
</div>
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup name="specialAttrs">
<xs:attribute ref="xml:base"/>
<xs:attribute ref="xml:lang"/>
<xs:attribute ref="xml:space"/>
<xs:attribute ref="xml:id"/>
</xs:attributeGroup>
<xs:annotation>
<xs:documentation>
<div>
<h3>Father (in any context at all)</h3>
<div class="bodytext">
<p>
denotes Jon Bosak, the chair of
the original XML Working Group. This name is reserved by
the following decision of the W3C XML Plenary and
XML Coordination groups:
</p>
<blockquote>
<p>
In appreciation for his vision, leadership and
dedication the W3C XML Plenary on this 10th day of
February, 2000, reserves for Jon Bosak in perpetuity
the XML name "xml:Father".
</p>
</blockquote>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>
<div xml:id="usage" id="usage">
<h2><a name="usage">About this schema document</a></h2>
<div class="bodytext">
<p>
This schema defines attributes and an attribute group suitable
for use by schemas wishing to allow <code>xml:base</code>,
<code>xml:lang</code>, <code>xml:space</code> or
<code>xml:id</code> attributes on elements they define.
</p>
<p>
To enable this, such a schema must import this schema for
the XML namespace, e.g. as follows:
</p>
<pre>
&lt;schema . . .>
. . .
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
</pre>
<p>
or
</p>
<pre>
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
</pre>
<p>
Subsequently, qualified reference to any of the attributes or the
group defined below will have the desired effect, e.g.
</p>
<pre>
&lt;type . . .>
. . .
&lt;attributeGroup ref="xml:specialAttrs"/>
</pre>
<p>
will define a type which will schema-validate an instance element
with any of those attributes.
</p>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>
<div id="nsversioning" xml:id="nsversioning">
<h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
<div class="bodytext">
<p>
In keeping with the XML Schema WG's standard versioning
policy, this schema document will persist at
<a href="http://www.w3.org/2009/01/xml.xsd">
http://www.w3.org/2009/01/xml.xsd</a>.
</p>
<p>
At the date of issue it can also be found at
<a href="http://www.w3.org/2001/xml.xsd">
http://www.w3.org/2001/xml.xsd</a>.
</p>
<p>
The schema document at that URI may however change in the future,
in order to remain compatible with the latest version of XML
Schema itself, or with the XML namespace itself. In other words,
if the XML Schema or XML namespaces change, the version of this
document at <a href="http://www.w3.org/2001/xml.xsd">
http://www.w3.org/2001/xml.xsd
</a>
will change accordingly; the version at
<a href="http://www.w3.org/2009/01/xml.xsd">
http://www.w3.org/2009/01/xml.xsd
</a>
will not change.
</p>
<p>
Previous dated (and unchanging) versions of this schema
document are at:
</p>
<ul>
<li><a href="http://www.w3.org/2009/01/xml.xsd">
http://www.w3.org/2009/01/xml.xsd</a></li>
<li><a href="http://www.w3.org/2007/08/xml.xsd">
http://www.w3.org/2007/08/xml.xsd</a></li>
<li><a href="http://www.w3.org/2004/10/xml.xsd">
http://www.w3.org/2004/10/xml.xsd</a></li>
<li><a href="http://www.w3.org/2001/03/xml.xsd">
http://www.w3.org/2001/03/xml.xsd</a></li>
</ul>
</div>
</div>
</xs:documentation>
</xs:annotation>
</xs:schema>
package de.hdm_stuttgart.mi.sda1.test.ex1;
import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
import org.junit.Assert;
import org.junit.Test;
import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
/**
* Unit test for an XML instance set. CLI by:
* java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore SchemaTest
* java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
*/
@SuppressWarnings("static-method")
public class SchemaTest {
public class ShowReachedPoints {
/**
* Testing a suite of XML instances.
* Execution reveals the number of reached points.
*
* @param args Unused
*/
@Test
public void testXmlInstanceSet() {
final InstanceSetEvaluation ise =
new InstanceSetEvaluation("SchemaTest", "Schema/bib.xsd");
System.out.println(ise.getMessages());
Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
public static void main(String[] args) {
RunTests.exec(
"Aufgabe 1",
Test_SchemaByInstances.class
);
}
}
\ No newline at end of file
package de.hdm_stuttgart.mi.sda1.test.ex1;
import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class Test_SchemaByInstances extends ExaminationTestDefaults {
private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
@Test
@Marking(points = 1)
public void test_0100_valid_minimum() {
xmlTestSupport.assertValid("0100_valid_minimum.xml");
}
@Test
@Marking(points = 1)
public void test_0200_valid_noPublisher() {
xmlTestSupport.assertValid("0200_valid_noPublisher.xml");
}
@Test
@Marking(points = 1)
public void test_0210_valid_singlePublisher() {
xmlTestSupport.assertValid("0210_valid_singlePublisher.xml");
}
@Test
@Marking(points = 1)
public void test_0230_valid_multiplePublisher() {
xmlTestSupport.assertValid("0230_valid_multiplePublisher.xml");
}
@Test
@Marking(points = 2)
public void test_0240_invalid_duplicatePublisherId() {
xmlTestSupport.assertInvalid("0240_invalid_duplicatePublisherId.xml");
xmlTestSupport.assertValid("0230_valid_multiplePublisher.xml");
}
@Test
@Marking(points = 2)
public void test_0250_invalid_duplicatePublisherNameCity() {
xmlTestSupport.assertInvalid("0250_invalid_duplicatePublisherNameCity.xml");
xmlTestSupport.assertValid("0230_valid_multiplePublisher.xml");
}
@Test
@Marking(points = 2)
public void test_0260_invalid_publisherLevel() {
xmlTestSupport.assertInvalid("0260_invalid_publisherLevel.xml");
xmlTestSupport.assertValid("0230_valid_multiplePublisher.xml");
}
@Test
@Marking(points = 1)
public void test_0300_valid_books() {
xmlTestSupport.assertValid("0300_valid_books.xml");
}
@Test
@Marking(points = 2)
public void test_0310_invalid_bookNoTitle() {
xmlTestSupport.assertInvalid("0310_invalid_bookNoTitle.xml");
xmlTestSupport.assertValid("0300_valid_books.xml");
}
@Test
@Marking(points = 2)
public void test_0320_invalid_bookNoAuthor() {
xmlTestSupport.assertInvalid("0320_invalid_bookNoAuthor.xml");
xmlTestSupport.assertValid("0300_valid_books.xml");
}
@Test
@Marking(points = 1)
public void test_0400_valid_websites() {
xmlTestSupport.assertValid("0400_valid_websites.xml");
}
@Test
@Marking(points = 2)
public void test_0410_invalid_websiteDateViolation() {
xmlTestSupport.assertInvalid("0410_invalid_websiteDateViolation.xml");
xmlTestSupport.assertValid("0400_valid_websites.xml");
}
@Test
@Marking(points = 2)
public void test_0420_invalid_websiteMissingAccessDate() {
xmlTestSupport.assertInvalid("0420_invalid_websiteMissingAccessDate.xml");
xmlTestSupport.assertValid("0400_valid_websites.xml");
}
@Test
@Marking(points = 2)
public void test_0430_invalid_websiteMissingUrl() {
xmlTestSupport.assertInvalid("0430_invalid_websiteMissingUrl.xml");
xmlTestSupport.assertValid("0400_valid_websites.xml");
}
@Test
@Marking(points = 2)
public void test_0440_invalid_websiteUrlFormatViolation() {
xmlTestSupport.assertInvalid("0440_invalid_websiteUrlFormatViolation.xml");
xmlTestSupport.assertValid("0400_valid_websites.xml");
}
@Test
@Marking(points = 1)
public void test_0500_valid_booksWebsites() {
xmlTestSupport.assertValid("0500_valid_booksWebsites.xml");
}
@Test
@Marking(points = 1)
public void test_0510_invalid_bookDuplicateId() {
xmlTestSupport.assertInvalid("0510_invalid_bookDuplicateId.xml");
xmlTestSupport.assertValid("0500_valid_booksWebsites.xml");
}
@Test
@Marking(points = 1)
public void test_0515_invalid_bookYear() {
xmlTestSupport.assertInvalid("0515_invalid_bookYear.xml");
xmlTestSupport.assertValid("0500_valid_booksWebsites.xml");
}
@Test
@Marking(points = 1)
public void test_0520_invalid_bibDuplicateId() {
xmlTestSupport.assertInvalid("0520_invalid_bibDuplicateId.xml");
xmlTestSupport.assertValid("0500_valid_booksWebsites.xml");
}
@Test
@Marking(points = 1)
public void test_0600_invalid_bookInvalidPublisher() {
xmlTestSupport.assertInvalid("0600_invalid_bookInvalidPublisher.xml");
xmlTestSupport.assertValid("0300_valid_books.xml");
}
@Test
@Marking(points = 1)
public void test_0700_valid_bibPublisherIdCompat() {
xmlTestSupport.assertValid("0700_valid_bibPublisherIdCompat.xml");
}
}
\ No newline at end of file
......@@ -5,36 +5,10 @@
dependency-reduced-pom.xml
*.log
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle:
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
/.idea/
*.iws
# IntelliJ
out/
......@@ -44,9 +18,6 @@ out/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
......
......@@ -148,7 +148,7 @@
<para>Complete the schema implementation in
<filename>Schema/bib.xsd</filename>. <productname>Junit</productname>
execution of
<classname>de.hdm_stuttgart.mi.sda1.test.ex1.SchemaTest</classname>
<classname>de.hdm_stuttgart.mi.sda1.test.ex1.ShowReachedPoints</classname>
loads all unit tests based on files residing in your project's folder
<filename>SchemaTest</filename>. In turn you receive your number of
points reached so far including detailed hints about failed
......@@ -170,7 +170,7 @@
<listitem>
<para>Executing
<classname>de.hdm_stuttgart.mi.sda1.test.ex1.SchemaTest</classname>
<classname>de.hdm_stuttgart.mi.sda1.test.ex1.ShowReachedPoints</classname>
as a Java application indicates which test documents in
<filename>SchemaTest</filename> yet fail the expected outcome being
either <quote>valid</quote> of <quote>invalid</quote>. You also get
......
......@@ -103,7 +103,7 @@
<dependency>
<groupId>de.hdm_stuttgart.mi.exam</groupId>
<artifactId>unitmarking</artifactId>
<version>0.9</version>
<version>1.0</version>
</dependency>
</dependencies>
......@@ -153,7 +153,7 @@
<configuration>
<archive>
<manifest>
<mainClass>de.hdm_stuttgart.mi.sda1.test.ShowReachedPoints</mainClass>
<mainClass>de.hdm_stuttgart.mi.sda1.test.ex1.ShowReachedPoints</mainClass>
</manifest>
</archive>
</configuration>
......
<?xml version='1.0'?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns ="http://www.w3.org/1999/xhtml"
xml:lang="en">
<xs:annotation>
<xs:documentation>
<div>
<h1>About the XML namespace</h1>
<div class="bodytext">
<p>
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
</p>
<p>
See <a href="http://www.w3.org/XML/1998/namespace.html">
http://www.w3.org/XML/1998/namespace.html</a> and
<a href="http://www.w3.org/TR/REC-xml">
http://www.w3.org/TR/REC-xml</a> for information
about this namespace.
</p>
<p>
Note that local names in this namespace are intended to be
defined only by the World Wide Web Consortium or its subgroups.
The names currently defined in this namespace are listed below.
They should not be used with conflicting semantics by any Working
Group, specification, or document instance.
</p>
<p>
See further below in this document for more information about <a
href="#usage">how to refer to this schema document from your own
XSD schema documents</a> and about <a href="#nsversioning">the
namespace-versioning policy governing this schema document</a>.
</p>
</div>
</div>
</xs:documentation>
</xs:annotation>
<xs:attribute name="lang">
<xs:annotation>
<xs:documentation>
<div>
<h3>lang (as an attribute name)</h3>
<p>
denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.</p>
</div>
<div>
<h4>Notes</h4>
<p>
Attempting to install the relevant ISO 2- and 3-letter
codes as the enumerated possible values is probably never
going to be a realistic possibility.
</p>
<p>