Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
G
GoikLectures
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Analytics
Analytics
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Dr. Martin Goik
GoikLectures
Commits
31d50169
Commit
31d50169
authored
Dec 08, 2018
by
Dr. Martin Goik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Individual test validation
parent
07aeac9a
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
2933 additions
and
11 deletions
+2933
-11
ws/Artifacts/Unitmarking/pom.xml
ws/Artifacts/Unitmarking/pom.xml
+7
-0
ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/RunTests.java
...n/java/de/hdm_stuttgart/mi/exam/unitmarking/RunTests.java
+9
-11
ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/WellformedCheckHandler.java
...tgart/mi/exam/unitmarking/xml/WellformedCheckHandler.java
+38
-0
ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java
...hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java
+122
-0
ws/Artifacts/Unitmarking/src/main/resources/XMLSchema.xsd
ws/Artifacts/Unitmarking/src/main/resources/XMLSchema.xsd
+2471
-0
ws/Artifacts/Unitmarking/src/main/resources/xml.xsd
ws/Artifacts/Unitmarking/src/main/resources/xml.xsd
+286
-0
No files found.
ws/Artifacts/Unitmarking/pom.xml
View file @
31d50169
...
...
@@ -52,6 +52,13 @@
<version>
1.1.6
</version>
</dependency>
<dependency>
<groupId>
org.xmlunit
</groupId>
<artifactId>
xmlunit-core
</artifactId>
<version>
2.6.2
</version>
</dependency>
</dependencies>
<build>
...
...
ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/RunTests.java
View file @
31d50169
...
...
@@ -7,27 +7,25 @@ public class RunTests {
static
public
final
MarkingListener
markingListener
=
new
MarkingListener
();
@SafeVarargs
public
static
void
exec
(
Class
<?
extends
Object
>
...
classz
)
{
private
static
void
execImpl
(
Class
<?
extends
Object
>
...
classz
)
{
final
JUnitCore
jc
=
new
JUnitCore
();
jc
.
addListener
(
markingListener
);
System
.
setOut
(
DummyPrintStream
.
out
);
jc
.
run
(
classz
);
System
.
setOut
(
DummyPrintStream
.
systemDotOut
);
System
.
out
.
println
(
RunTests
.
getMarking
());
}
@SafeVarargs
public
static
void
exec
(
Class
<?
extends
Object
>
...
classz
)
{
execImpl
(
classz
);
System
.
out
.
println
(
getMarking
());
}
@SafeVarargs
public
static
void
exec
(
final
String
exerciseTitle
,
Class
<?
extends
Object
>
...
classz
)
{
markingListener
.
clear
();
final
JUnitCore
jc
=
new
JUnitCore
();
jc
.
addListener
(
markingListener
);
System
.
setOut
(
DummyPrintStream
.
out
);
jc
.
run
(
classz
);
System
.
setOut
(
DummyPrintStream
.
systemDotOut
);
System
.
out
.
println
(
RunTests
.
getMarking
(
exerciseTitle
));
execImpl
(
classz
);
System
.
out
.
println
(
getMarking
(
exerciseTitle
));
System
.
out
.
println
(
"-----------------------------------------------------\n"
);
}
...
...
@@ -38,4 +36,4 @@ public class RunTests {
static
public
String
getMarking
(
final
String
exerciseTitle
)
{
return
markingListener
.
getPointSumms
(
exerciseTitle
);
}
}
}
\ No newline at end of file
ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/WellformedCheckHandler.java
0 → 100644
View file @
31d50169
package
de.hdm_stuttgart.mi.exam.unitmarking.xml
;
import
org.xml.sax.SAXException
;
import
org.xml.sax.SAXParseException
;
import
org.xml.sax.helpers.DefaultHandler
;
import
java.util.List
;
import
java.util.Vector
;
import
java.util.stream.Collectors
;
public
class
WellformedCheckHandler
extends
DefaultHandler
{
private
List
<
SAXParseException
>
problems
=
new
Vector
<>();
@Override
public
void
warning
(
SAXParseException
e
)
throws
SAXException
{
problems
.
add
(
e
);
}
@Override
public
void
error
(
SAXParseException
e
)
throws
SAXException
{
problems
.
add
(
e
);
}
@Override
public
void
fatalError
(
SAXParseException
e
)
throws
SAXException
{
problems
.
add
(
e
);
}
public
String
formatErrorMessages
()
{
return
problems
.
stream
().
map
(
s
->
"line="
+
s
.
getLineNumber
()
+
", column="
+
s
.
getColumnNumber
()
+
":\n "
+
s
.
getMessage
()).
collect
(
Collectors
.
joining
(
"\n "
));
}
public
void
clear
()
{
problems
.
clear
();
}
}
\ No newline at end of file
ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java
0 → 100644
View file @
31d50169
package
de.hdm_stuttgart.mi.exam.unitmarking.xml
;
import
org.junit.Assert
;
import
org.xml.sax.SAXException
;
import
org.xmlunit.XMLUnitException
;
import
org.xmlunit.builder.Input
;
import
org.xmlunit.validation.Languages
;
import
org.xmlunit.validation.ValidationResult
;
import
org.xmlunit.validation.Validator
;
import
javax.xml.parsers.ParserConfigurationException
;
import
javax.xml.parsers.SAXParser
;
import
javax.xml.parsers.SAXParserFactory
;
import
javax.xml.transform.Source
;
import
javax.xml.transform.stream.StreamSource
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.stream.Collectors
;
import
java.util.stream.StreamSupport
;
public
class
XmlTestSupport
{
static
{
final
Validator
xmlSchemaValidatorTmp
=
Validator
.
forLanguage
(
Languages
.
W3C_XML_SCHEMA_NS_URI
);
xmlSchemaValidatorTmp
.
setSchemaSource
(
new
StreamSource
(
"src/main/resources/XMLSchema.xsd"
));
xmlSchemaValidator
=
xmlSchemaValidatorTmp
;
}
static
final
Validator
xmlSchemaValidator
;
private
SAXParser
nonValidatingParser
;
private
WellformedCheckHandler
wch
;
private
final
String
schemaFileName
;
private
final
Validator
validator
;
public
final
String
schemaInvalidErrorMessages
;
public
XmlTestSupport
(
final
String
schemaFileName
)
{
this
.
schemaFileName
=
schemaFileName
;
Validator
validatorTmp
=
null
;
String
schemaInvalidErrorMessagesTmp
=
null
;
wch
=
new
WellformedCheckHandler
();
try
{
SAXParserFactory
spf
=
SAXParserFactory
.
newInstance
();
spf
.
setValidating
(
false
);
spf
.
setNamespaceAware
(
true
);
nonValidatingParser
=
spf
.
newSAXParser
();
nonValidatingParser
.
parse
(
new
File
(
schemaFileName
),
wch
);
// Document is well-formed, so what about validity?
try
{
final
Source
source
=
Input
.
fromFile
(
schemaFileName
).
build
();
final
ValidationResult
r
=
xmlSchemaValidator
.
validateInstance
(
source
);
if
(
r
.
isValid
())
{
validatorTmp
=
Validator
.
forLanguage
(
Languages
.
W3C_XML_SCHEMA_NS_URI
);
validatorTmp
.
setSchemaSource
(
new
StreamSource
(
schemaFileName
));
}
else
{
schemaInvalidErrorMessagesTmp
=
"Schema "
+
schemaFileName
+
" is invalid:"
+
formatErrorMessages
(
r
);
}
}
catch
(
final
XMLUnitException
e
)
{
final
Throwable
cause
=
e
.
getCause
();
schemaInvalidErrorMessagesTmp
=
null
==
cause
?
e
.
getMessage
():
" Not well-formed?\n "
+
cause
.
getMessage
();
}
}
catch
(
SAXException
e
)
{
schemaInvalidErrorMessagesTmp
=
" Unable to parse "
+
schemaFileName
+
" "
+
wch
.
formatErrorMessages
()
+
"\n schema is possibly not well-formed\n "
+
e
.
getMessage
();
}
catch
(
ParserConfigurationException
|
IOException
e
)
{
schemaInvalidErrorMessagesTmp
=
" Unable to parse "
+
schemaFileName
+
" "
+
e
.
getMessage
()
;
}
validator
=
validatorTmp
;
schemaInvalidErrorMessages
=
schemaInvalidErrorMessagesTmp
;
}
public
void
assertValid
(
final
String
instanceFileName
)
{
parseWellFormed
(
instanceFileName
);
final
ValidationResult
r
=
validator
.
validateInstance
(
Input
.
fromFile
(
instanceFileName
).
build
());
if
(!
r
.
isValid
())
{
Assert
.
fail
(
instanceFileName
+
" expected to be valid but:\n "
+
formatErrorMessages
(
r
)
+
"\n"
);
}
}
private
void
parseWellFormed
(
final
String
instanceFileName
)
{
wch
.
clear
();
try
{
nonValidatingParser
.
parse
(
new
File
(
instanceFileName
),
wch
);
}
catch
(
final
SAXException
e
)
{
Assert
.
fail
(
instanceFileName
+
" possibly not well-formed:\n "
+
wch
.
formatErrorMessages
());
}
catch
(
final
IOException
e
)
{
Assert
.
fail
(
e
.
getMessage
());
}
}
public
void
assertInvalid
(
final
String
instanceFileName
)
{
parseWellFormed
(
instanceFileName
);
if
(
validator
.
validateInstance
(
Input
.
fromFile
(
instanceFileName
).
build
()).
isValid
())
{
Assert
.
fail
(
instanceFileName
+
"should be invalid\n"
);
}
}
static
public
String
formatErrorMessages
(
final
ValidationResult
r
)
{
return
StreamSupport
.
stream
(
r
.
getProblems
().
spliterator
(),
true
).
map
(
p
->
"\n line="
+
p
.
getLine
()
+
", column="
+
p
.
getColumn
()
+
":\n "
+
p
.
getMessage
()).
collect
(
Collectors
.
joining
(
"\n "
));
}
}
\ No newline at end of file
ws/Artifacts/Unitmarking/src/main/resources/XMLSchema.xsd
0 → 100644
View file @
31d50169
This diff is collapsed.
Click to expand it.
ws/Artifacts/Unitmarking/src/main/resources/xml.xsd
0 → 100644
View file @
31d50169
<?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>
<
schema . . .>
. . .
<
import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
</pre>
<p>
or
</p>
<pre>
<
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>
<
type . . .>
. . .
<
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>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment