From 92c300d79c31c0c9864a661e18193489afc5099f Mon Sep 17 00:00:00 2001 From: Marian Lalik Date: Fri, 22 Apr 2022 16:25:07 +0200 Subject: [PATCH 1/3] better handling of the mglyph element, added cerror to remove_all --- doc/sample-config.xml | 2 +- pom.xml | 7 ++++++- .../modules/AbstractModule.java | 1 + .../modules/ElementMinimizer.java | 13 ++++++++++++- .../modules/ElementMinimizerTest.java | 7 ++++++- .../ElementMinimizerTest/mglyph.canonical.xml | 10 ++++++++++ .../ElementMinimizerTest/mglyph.original.xml | 10 ++++++++++ 7 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml diff --git a/doc/sample-config.xml b/doc/sample-config.xml index 45f43cc..4dc19aa 100644 --- a/doc/sample-config.xml +++ b/doc/sample-config.xml @@ -6,7 +6,7 @@ mspace maligngroup malignmark mstyle mpadded menclose maction - mphantom merror + mphantom merror cerror mathvariant=bold mathvariant=italic mathvariant=bold-italic mathvariant=double-struck mathvariant=bold-fraktur mathvariant=script mathvariant=bold-script mathvariant=fraktur mathvariant=sans-serif mathvariant=bold-sans-serif mathvariant=sans-serif-italic mathvariant=sans-serif-bold-italic mathvariant=monospace mathvariant=initial mathvariant=tailed mathvariant=looped mathvariant=stretched encoding diff --git a/pom.xml b/pom.xml index 29724e9..41ff16c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ cz.muni.fi.mir mathml-canonicalizer - 1.4.0 + 1.4.1 jar MathMLCanonicalizer @@ -48,6 +48,11 @@ Maros Kucbel kocka@mail.muni.cz + + lalik + Marian Lalik + xlalik@mail.muni.cz + diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java index 1228d34..5f13ea3 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java @@ -48,6 +48,7 @@ abstract class AbstractModule implements Module { protected static final String SUBSUP = "msubsup"; protected static final String UNDEROVER = "munderover"; protected static final String UNDERSCRIPT = "munder"; + protected static final String MGLYPH = "mglyph"; @Override public String getProperty(String key) { diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java index 618435e..7c5eb98 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java @@ -154,6 +154,17 @@ private void minimizeElements(final InputStream input, final OutputStream output if (depth > 0) { continue; } + if (name.equals(MGLYPH)) { + for (int index = 0; index < reader.getAttributeCount(); ++index) { + final String attributeName = reader.getAttributeLocalName(index); + final String attributeValue = reader.getAttributeValue(index); + if (attributeName == "alt") { + writer.writeCharacters(attributeValue); + } + } + depth++; + continue; + } } writer.writeStartElement(reader.getName().getPrefix(), name, reader.getName().getNamespaceURI()); for (int index = 0; index < reader.getAttributeCount(); ++index) { @@ -186,7 +197,7 @@ private void minimizeElements(final InputStream input, final OutputStream output continue; } if (depth > 0) { - if (removeWithChildren.contains(name)) { + if (removeWithChildren.contains(name) || name.equals(MGLYPH)) { depth--; } continue; diff --git a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java index 87c5bb7..efbf92a 100644 --- a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java +++ b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java @@ -31,7 +31,7 @@ public class ElementMinimizerTest extends AbstractModuleTest { @BeforeAll public static void setUpBeforeAll() { DEFAULT_INSTANCE.setProperty("remove", "mspace maligngroup malignmark mstyle mpadded menclose maction"); - DEFAULT_INSTANCE.setProperty("remove_all", "mphantom merror"); + DEFAULT_INSTANCE.setProperty("remove_all", "mphantom merror cerror"); DEFAULT_INSTANCE.setProperty("keepAttributes", "mathvariant=bold encoding"); DEFAULT_INSTANCE.setProperty("keepAttributes.mfrac", "linethickness=0"); DEFAULT_INSTANCE.setProperty("keepAttributes.cn", "base type"); @@ -63,4 +63,9 @@ public void testAttributes() { testXML(DEFAULT_INSTANCE, RESOURCE_SUBDIR + "attributes"); } + @Test + public void testMglyph() { + testXML(DEFAULT_INSTANCE, RESOURCE_SUBDIR + "mglyph"); + } + } diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml new file mode 100644 index 0000000..20bd9c1 --- /dev/null +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml @@ -0,0 +1,10 @@ + + + + num1 + plus + num2 + eqls + rslt + + diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml new file mode 100644 index 0000000..a1ebe57 --- /dev/null +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml @@ -0,0 +1,10 @@ + + + + + + + + + + From ca06c2de5c8ac81bc574f7c4dac16052f11bdcf6 Mon Sep 17 00:00:00 2001 From: Marian Lalik Date: Sun, 24 Apr 2022 04:09:39 +0200 Subject: [PATCH 2/3] changed to work with html instead of xml --- pom.xml | 7 +- .../MathMLCanonicalizer.java | 77 ++++-- .../MathMLCanonicalizerCommandLineTool.java | 36 +-- .../modules/AbstractModule.java | 25 +- .../modules/DOMModule.java | 2 +- .../modules/ElementMinimizer.java | 223 ++++++------------ .../modules/FunctionNormalizer.java | 48 ++-- .../modules/MfencedReplacer.java | 62 ++--- .../modules/MrowNormalizer.java | 104 ++++---- .../modules/OperatorNormalizer.java | 95 ++++---- .../modules/ScriptNormalizer.java | 73 +++--- .../modules/SingleTopElementOutputter.java | 29 +-- .../modules/UnaryOperatorRemover.java | 84 +++---- .../mathmlcanonicalization/default-config.xml | 1 + .../MathMLCanonicalizerTest.java | 7 +- .../modules/AbstractModuleTest.java | 78 +++--- .../modules/ElementMinimizerTest.java | 1 + .../modules/ModuleTestResources.java | 83 +++---- .../attributes.canonical.html | 17 ++ .../attributes.canonical.xml | 12 - .../attributes.original.html | 17 ++ .../attributes.original.xml | 12 - .../comments.canonical.html | 15 ++ .../comments.canonical.xml | 10 - .../comments.original.html | 19 ++ .../comments.original.xml | 14 -- .../ElementMinimizerTest/mfrac.canonical.html | 12 + .../ElementMinimizerTest/mfrac.canonical.xml | 7 - .../ElementMinimizerTest/mfrac.original.html | 12 + .../ElementMinimizerTest/mfrac.original.xml | 7 - .../mglyph.canonical.html | 15 ++ .../ElementMinimizerTest/mglyph.canonical.xml | 10 - .../ElementMinimizerTest/mglyph.original.html | 15 ++ .../ElementMinimizerTest/mglyph.original.xml | 10 - .../mphantom.canonical.html | 22 ++ .../mphantom.canonical.xml | 17 -- .../mphantom.original.html | 26 ++ .../mphantom.original.xml | 21 -- .../function.canonical.html | 14 ++ .../function.canonical.xml | 9 - .../function.original.html | 15 ++ .../function.original.xml | 10 - .../function2.canonical.html | 24 ++ .../function2.canonical.xml | 19 -- .../function2.original.html | 23 ++ .../function2.original.xml | 18 -- .../function3.canonical.html | 18 ++ .../function3.canonical.xml | 13 - .../function3.original.html | 17 ++ .../function3.original.xml | 12 - .../FunctionNormalizerTest/sin.canonical.html | 14 ++ .../FunctionNormalizerTest/sin.canonical.xml | 9 - .../FunctionNormalizerTest/sin.original.html | 11 + .../FunctionNormalizerTest/sin.original.xml | 6 - .../blank-separators.canonical.html | 16 ++ .../blank-separators.canonical.xml | 11 - .../blank-separators.original.html | 12 + .../blank-separators.original.xml | 7 - .../interval-configured.canonical.html | 15 ++ .../interval-configured.canonical.xml | 10 - .../interval-configured.original.html | 12 + .../interval-configured.original.xml | 7 - .../interval.canonical.html | 17 ++ .../interval.canonical.xml | 12 - .../interval.original.html | 12 + .../MfencedReplacerTest/interval.original.xml | 7 - .../MfencedReplacerTest/nested.canonical.html | 27 +++ .../MfencedReplacerTest/nested.canonical.xml | 22 -- .../MfencedReplacerTest/nested.original.html | 16 ++ .../MfencedReplacerTest/nested.original.xml | 11 - .../no-children.canonical.html | 12 + .../no-children.canonical.xml | 7 - .../no-children.original.html | 10 + .../no-children.original.xml | 5 - .../sequence-separators.canonical.html | 23 ++ .../sequence-separators.canonical.xml | 18 -- .../sequence-separators.original.html | 17 ++ .../sequence-separators.original.xml | 12 - .../configured.canonical.html | 17 ++ .../configured.canonical.xml | 12 - .../configured.original.html | 13 + .../configured.original.xml | 8 - .../MrowNormalizerTest/frac.canonical.html | 12 + .../MrowNormalizerTest/frac.canonical.xml | 7 - .../MrowNormalizerTest/frac.original.html | 14 ++ .../MrowNormalizerTest/frac.original.xml | 9 - .../interval.canonical.html | 17 ++ .../MrowNormalizerTest/interval.canonical.xml | 12 - .../MrowNormalizerTest/interval.original.html | 15 ++ .../MrowNormalizerTest/interval.original.xml | 10 - .../MrowNormalizerTest/mixed1.canonical.html | 19 ++ .../MrowNormalizerTest/mixed1.canonical.xml | 14 -- .../MrowNormalizerTest/mixed1.original.html | 23 ++ .../MrowNormalizerTest/mixed1.original.xml | 18 -- .../MrowNormalizerTest/mixed2.canonical.html | 20 ++ .../MrowNormalizerTest/mixed2.canonical.xml | 15 -- .../MrowNormalizerTest/mixed2.original.html | 22 ++ .../MrowNormalizerTest/mixed2.original.xml | 17 -- .../MrowNormalizerTest/mixed3.canonical.html | 16 ++ .../MrowNormalizerTest/mixed3.canonical.xml | 11 - .../MrowNormalizerTest/mixed3.original.html | 20 ++ .../MrowNormalizerTest/mixed3.original.xml | 15 -- .../MrowNormalizerTest/mixed4.canonical.html | 18 ++ .../MrowNormalizerTest/mixed4.canonical.xml | 13 - .../MrowNormalizerTest/mixed4.original.html | 22 ++ .../MrowNormalizerTest/mixed4.original.xml | 17 -- .../parentheses1.canonical.html | 17 ++ .../parentheses1.canonical.xml | 12 - .../parentheses1.original.html | 15 ++ .../parentheses1.original.xml | 10 - .../parentheses2.canonical.html | 19 ++ .../parentheses2.canonical.xml | 14 -- .../parentheses2.original.html | 17 ++ .../parentheses2.original.xml | 12 - .../parentheses3.canonical.html | 19 ++ .../parentheses3.canonical.xml | 14 -- .../parentheses3.original.html | 19 ++ .../parentheses3.original.xml | 14 -- .../parentheses4.canonical.html | 27 +++ .../parentheses4.canonical.xml | 22 -- .../parentheses4.original.html | 21 ++ .../parentheses4.original.xml | 16 -- .../parentheses5.canonical.html | 15 ++ .../parentheses5.canonical.xml | 10 - .../parentheses5.original.html | 15 ++ .../parentheses5.original.xml | 10 - .../MrowNormalizerTest/sqrt.canonical.html | 12 + .../MrowNormalizerTest/sqrt.canonical.xml | 7 - .../MrowNormalizerTest/sqrt.original.html | 14 ++ .../MrowNormalizerTest/sqrt.original.xml | 9 - .../MrowNormalizerTest/tuple.canonical.html | 17 ++ .../MrowNormalizerTest/tuple.canonical.xml | 12 - .../MrowNormalizerTest/tuple.original.html | 15 ++ .../MrowNormalizerTest/tuple.original.xml | 10 - .../identifier-replacement.canonical.html | 22 ++ .../identifier-replacement.canonical.xml | 17 -- .../identifier-replacement.original.html | 23 ++ .../identifier-replacement.original.xml | 18 -- .../multiplication-blank.canonical.html | 15 ++ .../multiplication-blank.canonical.xml | 10 - .../multiplication-blank.original.html | 16 ++ .../multiplication-blank.original.xml | 11 - .../multiplication-cdot.canonical.html | 13 + .../multiplication-cdot.canonical.xml | 8 - .../multiplication-cdot.original.html | 13 + .../multiplication-cdot.original.xml | 8 - .../operator-unification.canonical.html | 19 ++ .../operator-unification.canonical.xml | 14 -- .../operator-unification.original.html | 19 ++ .../operator-unification.original.xml | 14 -- .../operator2identifier.canonical.html | 16 ++ .../operator2identifier.canonical.xml | 11 - .../operator2identifier.original.html | 16 ++ .../operator2identifier.original.xml | 11 - .../unicode.canonical.html | 12 + .../unicode.canonical.xml | 9 - .../unicode.original.html | 12 + .../unicode.original.xml | 9 - .../complexsubsup.canonical.html | 40 ++++ .../complexsubsup.canonical.xml | 35 --- .../complexsubsup.original.html | 34 +++ .../complexsubsup.original.xml | 29 --- .../invalid-scripts.canonical.html | 23 ++ .../invalid-scripts.canonical.xml | 18 -- .../invalid-scripts.original.html | 23 ++ .../invalid-scripts.original.xml | 18 -- .../nested-sub-sup.canonical.html | 39 +++ .../nested-sub-sup.canonical.xml | 34 --- .../nested-sub-sup.original.html | 39 +++ .../nested-sub-sup.original.xml | 34 --- .../sub-sup.canonical.html | 15 ++ .../sub-sup.canonical.xml | 10 - .../sub-sup.original.html | 15 ++ .../ScriptNormalizerTest/sub-sup.original.xml | 10 - .../subsup.canonical.html | 20 ++ .../ScriptNormalizerTest/subsup.canonical.xml | 15 -- .../ScriptNormalizerTest/subsup.original.html | 18 ++ .../ScriptNormalizerTest/subsup.original.xml | 13 - .../underover.canonical.html | 19 ++ .../underover.canonical.xml | 14 -- .../underover.original.html | 19 ++ .../underover.original.xml | 14 -- ...ouble-operator-no-namespace.canonical.html | 13 + ...double-operator-no-namespace.canonical.xml | 9 - ...double-operator-no-namespace.original.html | 16 ++ ...-double-operator-no-namespace.original.xml | 12 - ...ble-operator-with-namespace.canonical.html | 13 + ...uble-operator-with-namespace.canonical.xml | 9 - ...uble-operator-with-namespace.original.html | 16 ++ ...ouble-operator-with-namespace.original.xml | 12 - .../cmathml-no-namespace.canonical.html | 70 ++++++ .../cmathml-no-namespace.canonical.xml | 66 ------ .../cmathml-no-namespace.original.html | 76 ++++++ .../cmathml-no-namespace.original.xml | 72 ------ .../cmathml-with-namespace.canonical.html | 70 ++++++ .../cmathml-with-namespace.canonical.xml | 66 ------ .../cmathml-with-namespace.original.html | 76 ++++++ .../cmathml-with-namespace.original.xml | 72 ------ ...ouble-operator-no-namespace.canonical.html | 13 + ...double-operator-no-namespace.canonical.xml | 9 - ...double-operator-no-namespace.original.html | 14 ++ ...-double-operator-no-namespace.original.xml | 10 - ...ble-operator-with-namespace.canonical.html | 13 + ...uble-operator-with-namespace.canonical.xml | 9 - ...uble-operator-with-namespace.original.html | 14 ++ ...ouble-operator-with-namespace.original.xml | 10 - .../pmathml-no-namespace.canonical.html | 84 +++++++ .../pmathml-no-namespace.canonical.xml | 80 ------- .../pmathml-no-namespace.original.html | 86 +++++++ .../pmathml-no-namespace.original.xml | 82 ------- .../pmathml-with-namespace.canonical.html | 84 +++++++ .../pmathml-with-namespace.canonical.xml | 80 ------- .../pmathml-with-namespace.original.html | 86 +++++++ .../pmathml-with-namespace.original.xml | 82 ------- 214 files changed, 2709 insertions(+), 2314 deletions(-) create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.xml create mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.html delete mode 100644 src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.xml diff --git a/pom.xml b/pom.xml index 41ff16c..5e1dc95 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ cz.muni.fi.mir mathml-canonicalizer - 1.4.1 + 1.5.0 jar MathMLCanonicalizer @@ -221,6 +221,11 @@ xmlunit-legacy 2.9.0 + + org.jsoup + jsoup + 1.14.3 + org.junit.jupiter diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizer.java index 74d9c88..8f1c71d 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizer.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizer.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; @@ -35,10 +36,7 @@ import javax.xml.validation.Validator; import org.apache.commons.io.IOUtils; -import org.jdom2.Document; import org.jdom2.JDOMException; -import org.jdom2.input.SAXBuilder; -import org.jdom2.output.XMLOutputter; import org.xml.sax.SAXException; import cz.muni.fi.mir.mathmlcanonicalization.modules.DOMModule; @@ -47,6 +45,9 @@ import cz.muni.fi.mir.mathmlcanonicalization.modules.StreamModule; import cz.muni.fi.mir.mathmlcanonicalization.utils.DTDManipulator; +import org.jsoup.*; +import org.jsoup.nodes.Document; + /** * An input class for MathML canonicalization. * @@ -65,8 +66,13 @@ public final class MathMLCanonicalizer { * Initializes canonicalizer with default settings * * @return itialized canonicalizer + * @throws SecurityException + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws IllegalArgumentException */ - public static MathMLCanonicalizer getDefaultCanonicalizer() { + public static MathMLCanonicalizer getDefaultCanonicalizer() + throws IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { try { return new MathMLCanonicalizer(Settings.getStreamFromProperty("defaultConfig")); } catch (ConfigException ex) { @@ -85,10 +91,17 @@ public MathMLCanonicalizer() { * Initializes canonicalizer using configuration file * * @param xmlConfigurationStream XML configuration constrained by XML Schema - * in cz.muni.fi.mir.mathmlcanonicalization.configuration.xsd resource file - * @throws ConfigException when configuration cannot be loaded + * in + * cz.muni.fi.mir.mathmlcanonicalization.configuration.xsd + * resource file + * @throws ConfigException when configuration cannot be loaded + * @throws SecurityException + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws IllegalArgumentException */ - public MathMLCanonicalizer(InputStream xmlConfigurationStream) throws ConfigException { + public MathMLCanonicalizer(InputStream xmlConfigurationStream) throws ConfigException, IllegalArgumentException, + InvocationTargetException, NoSuchMethodException, SecurityException { if (xmlConfigurationStream == null) { throw new NullPointerException("xmlConfigurationStream is null"); } @@ -137,8 +150,13 @@ public MathMLCanonicalizer addModule(Module module) { * * @param moduleName the name of the module class * @return the canonizer object to allow adding more modules at once + * @throws SecurityException + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws IllegalArgumentException */ - public MathMLCanonicalizer addModule(String moduleName) { + public MathMLCanonicalizer addModule(String moduleName) + throws IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { if (moduleName == null) { throw new NullPointerException("moduleName"); } @@ -150,7 +168,7 @@ public MathMLCanonicalizer addModule(String moduleName) { + ".modules." + moduleName; Class moduleClass = Class.forName(fullyQualified); - return addModule((Module) moduleClass.newInstance()); + return addModule((Module) moduleClass.getDeclaredConstructor().newInstance()); } catch (ClassNotFoundException ex) { LOGGER.log(Level.WARNING, "cannot load module " + moduleName, ex); } catch (InstantiationException ex) { @@ -181,9 +199,15 @@ private void validateXMLConfiguration(InputStream xmlConfigurationStream) /** * Loads configuration from XML file, overriding the properties. + * + * @throws SecurityException + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws IllegalArgumentException */ private void loadXMLConfiguration(InputStream xmlConfigurationStream) - throws ConfigException, XMLStreamException { + throws ConfigException, XMLStreamException, IllegalArgumentException, InvocationTargetException, + NoSuchMethodException, SecurityException { assert xmlConfigurationStream != null; final XMLInputFactory inputFactory = Settings.defaultXmlInputFactory(); final XMLStreamReader reader = inputFactory.createXMLStreamReader(xmlConfigurationStream); @@ -210,7 +234,7 @@ private void loadXMLConfiguration(InputStream xmlConfigurationStream) + ".modules." + attributeValue; try { Class moduleClass = Class.forName(fullyQualified); - module = (Module) moduleClass.newInstance(); + module = (Module) moduleClass.getDeclaredConstructor().newInstance(); } catch (InstantiationException ex) { LOGGER.log(Level.SEVERE, ex.getMessage(), ex); throw new ConfigException("cannot instantiate module " @@ -275,13 +299,14 @@ private void loadXMLConfiguration(InputStream xmlConfigurationStream) /** * Canonicalize an input MathML stream. * - * @param in input stream to be canonicalized + * @param in input stream to be canonicalized * @param out canonical output stream of input - * @throws JDOMException problem with DOM - * @throws IOException problem with streams - * @throws ModuleException some module cannot canonicalize the input + * @throws JDOMException problem with DOM + * @throws IOException problem with streams + * @throws ModuleException some module cannot canonicalize + * the input * @throws javax.xml.stream.XMLStreamException an error with XML processing - * occurs + * occurs */ public void canonicalize(final InputStream in, final OutputStream out) throws JDOMException, IOException, ModuleException, XMLStreamException { @@ -303,13 +328,13 @@ public void canonicalize(final InputStream in, final OutputStream out) streamModulesResult.writeTo(out); return; } - final InputStream input = streamModulesResult == null ? in : new ByteArrayInputStream(streamModulesResult.toByteArray()); + final InputStream input = streamModulesResult == null ? in + : new ByteArrayInputStream(streamModulesResult.toByteArray()); final Document document = executeDomModules(input); // convertong the JDOM representation back to stream - final XMLOutputter serializer = new XMLOutputter(); - serializer.output(document, out); + out.write(document.html().getBytes("UTF-8")); } /** @@ -318,21 +343,22 @@ public void canonicalize(final InputStream in, final OutputStream out) * * NB: maybe add another method which returns {@link org.w3c.dom.Document}? */ - public Document canonicalize(final InputStream in) throws ModuleException, IOException, XMLStreamException, JDOMException { + public Document canonicalize(final InputStream in) + throws ModuleException, IOException, XMLStreamException, JDOMException { if (in == null) { throw new NullPointerException("Input stream is null"); } ByteArrayOutputStream streamModulesResult = executeStreamModules(in); - final InputStream input = streamModulesResult == null ? in : new ByteArrayInputStream(streamModulesResult.toByteArray()); + final InputStream input = streamModulesResult == null ? in + : new ByteArrayInputStream(streamModulesResult.toByteArray()); return executeDomModules(input); } private Document executeDomModules(final InputStream input) throws JDOMException, IOException, ModuleException { // creating the JDOM representation from the stream - final SAXBuilder builder = Settings.setupSAXBuilder(); - final Document document = builder.build(input); + final Document document = Jsoup.parse(input, null, ""); // calling JDOM modules for (DOMModule module : domModules) { @@ -369,7 +395,8 @@ private ByteArrayOutputStream executeStreamModules(final InputStream in) return removeDtdsIfNecessary(outputStream); } - private ByteArrayOutputStream removeDtdsIfNecessary(final ByteArrayOutputStream outputStream) throws XMLStreamException { + private ByteArrayOutputStream removeDtdsIfNecessary(final ByteArrayOutputStream outputStream) + throws XMLStreamException { ByteArrayOutputStream result; if (enforcingXHTMLPlusMathMLDTD) { @@ -398,7 +425,7 @@ private InputStream injectDtdsIfNecessary(final InputStream in) { * document. * * @return XHTML 1.1 plus MathML 2.0 plus SVG 1.1 DTD reference enforcement - * setting + * setting */ public boolean isEnforcingXHTMLPlusMathMLDTD() { diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerCommandLineTool.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerCommandLineTool.java index 5ba7737..4295f4c 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerCommandLineTool.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerCommandLineTool.java @@ -18,6 +18,7 @@ import cz.muni.fi.mir.mathmlcanonicalization.modules.ModuleException; import java.io.*; +import java.lang.reflect.InvocationTargetException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; @@ -65,9 +66,16 @@ public final class MathMLCanonicalizerCommandLineTool { /** * @param args the command line arguments * @throws javax.xml.stream.XMLStreamException an error with XML processing - * occurs + * occurs + * @throws SecurityException + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws IllegalArgumentException */ - public static void main(String[] args) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, ConfigException, FileNotFoundException, JDOMException, ModuleException, XMLStreamException { + public static void main(String[] args) throws TransformerConfigurationException, ParserConfigurationException, + SAXException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, + ConfigException, FileNotFoundException, JDOMException, ModuleException, XMLStreamException, + IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { final Options options = createOptions(); final CommandLineParser parser = new DefaultParser(); CommandLine line = null; @@ -147,46 +155,43 @@ private static Options createOptions() { .desc("Load configuration file.") .argName("arg") .hasArg() - .build() - ); + .build()); options.addOption(Option .builder(OPTION_INJECTION) .longOpt(OPTION_INJECTION_LONG) .desc("Enforce injection of XHTML 1.1 plus MathML 2.0 plus SVG 1.1 DTD reference into input documents.") .hasArg(false) - .build() - ); + .build()); options.addOption(Option .builder(OPTION_OVERWRITE) .longOpt(OPTION_OVERWRITE_LONG) .desc("Overwrite input files by produced canonical outputs.") .hasArg(false) - .build() - ); + .build()); options.addOption(Option .builder(OPTION_PRINT_DEFAULT_CONFIG) .longOpt(OPTION_PRINT_DEFAULT_CONFIG_LONG) .desc("Print default configuration that will be used if no config file is supplied.") .hasArg(false) - .build() - ); + .build()); options.addOption(Option .builder(OPTION_HELP) .longOpt(OPTION_HELP_LONG) .desc("Print help (this screen).") .hasArg(false) - .build() - ); + .build()); return options; } - private static void canonicalize(File file, InputStream config, boolean dtdInjectionMode, boolean overwrite) throws - ConfigException, FileNotFoundException, JDOMException, IOException, ModuleException, XMLStreamException { + private static void canonicalize(File file, InputStream config, boolean dtdInjectionMode, boolean overwrite) + throws ConfigException, FileNotFoundException, JDOMException, IOException, ModuleException, + XMLStreamException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, + SecurityException { assert file != null; // but config can be null MathMLCanonicalizer mlcan; if (config != null) { @@ -255,7 +260,8 @@ private static void printHelp(Options options) { formatter.printOptions(output, 80, options, 8, 8); } - private static void printDefaultConfig() throws ParserConfigurationException, SAXException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException { + private static void printDefaultConfig() throws ParserConfigurationException, SAXException, IOException, + ClassNotFoundException, InstantiationException, IllegalAccessException { final InputSource src = new InputSource(Settings.getStreamFromProperty("defaultConfig")); final Document document = Settings.documentBuilderFactory().newDocumentBuilder().parse(src); diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java index 5f13ea3..fb98358 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModule.java @@ -17,14 +17,11 @@ import java.util.Arrays; import java.util.HashSet; -import java.util.List; import java.util.Properties; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; -import org.jdom2.Attribute; -import org.jdom2.Element; -import org.jdom2.Namespace; +import org.jsoup.nodes.Element; /** * Module implementation with property loading @@ -35,7 +32,6 @@ abstract class AbstractModule implements Module { protected final Properties properties = new Properties(); private static final Logger LOGGER = Logger.getLogger(AbstractModule.class.getName()); - protected static final Namespace MATHMLNS = Namespace.getNamespace("http://www.w3.org/1998/Math/MathML"); // MathML elements protected static final String FENCED = "mfenced"; protected static final String IDENTIFIER = "mi"; @@ -110,31 +106,20 @@ protected Set getPropertySet(final String property) { } protected boolean isOperator(final Element element, final String operator) { - return isOperator(element) && element.getTextTrim().equals(operator); + return isOperator(element) && element.ownText().trim().equals(operator); } protected boolean isOperator(final Element element) { assert element != null; - return element.getName().equals(OPERATOR); + return element.tagName().equals(OPERATOR); } protected void replaceElement(final Element toReplace, final String replacementName) { assert toReplace != null && replacementName != null; assert !replacementName.isEmpty(); - final Element parent = toReplace.getParentElement(); - assert parent != null; - final Element replacement = new Element(replacementName, toReplace.getNamespace()); - replacement.addContent(toReplace.removeContent()); - final List attributes = toReplace.getAttributes(); - while (attributes.size() > 0) { - Attribute currentAttribute = attributes.get(0); - replacement.setAttribute(currentAttribute.detach()); - } - final int parentIndex = parent.indexOf(toReplace); - parent.removeContent(parentIndex); - parent.addContent(parentIndex, replacement); + toReplace.tagName(replacementName); LOGGER.log(Level.FINE, "{0} replaced with {1}", - new Object[]{toReplace, replacementName}); + new Object[] { toReplace, replacementName }); } } diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/DOMModule.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/DOMModule.java index 21c0111..06aec99 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/DOMModule.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/DOMModule.java @@ -15,7 +15,7 @@ */ package cz.muni.fi.mir.mathmlcanonicalization.modules; -import org.jdom2.Document; +import org.jsoup.nodes.Document; /** * Modules processing the input using Document Object Model diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java index 7c5eb98..896454a 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java @@ -15,43 +15,42 @@ */ package cz.muni.fi.mir.mathmlcanonicalization.modules; -import cz.muni.fi.mir.mathmlcanonicalization.Settings; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; import java.util.Set; -import java.util.logging.Level; import java.util.logging.Logger; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; + +import org.jsoup.nodes.Attribute; +import org.jsoup.nodes.Comment; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; /** * Remove useless elements and attributes from MathML. * - *
Input:
    + *
    Input:
    + *
      *
    • Well-formed MathML, first module
    • *
    • Property file(s) with names of elements and attributes for removal or - * preservation
    + * preservation + *
*
Output:
- * The original code with:
    + * The original code with: + *
      *
    • removed elements insignificant for the formula searching and indexing * purpose (e.q. spacing and appearance altering tags) including the content * between open and close tag or preserving it (depending on the tag)
    • *
    • removed useless attributes but preserved those that are used in other * modules, e.q. separator attribute in mfenced element
    • *
    • removed attributes with default values?
    • - *
    • removed redundant spaces?
    + *
  • removed redundant spaces?
  • + *
* * @author Maros Kucbel */ -public class ElementMinimizer extends AbstractModule implements StreamModule { +public class ElementMinimizer extends AbstractModule implements DOMModule { private static final Logger LOGGER = Logger.getLogger(ElementMinimizer.class.getName()); @@ -70,165 +69,79 @@ public ElementMinimizer() { declareProperty("keepAttributes.interval"); declareProperty("keepAttributes.declare"); declareProperty("keepAttributes.mfenced"); + declareProperty("keepAttributes.math"); } @Override - public ByteArrayOutputStream execute(final InputStream input) throws ModuleException { - if (input == null) { - throw new NullPointerException("input"); + public void execute(final Document doc) { + if (doc == null) { + throw new NullPointerException("doc"); } removeWithChildren = getPropertySet("remove_all"); removeKeepChildren = getPropertySet("remove"); - final ByteArrayOutputStream output = new ByteArrayOutputStream(); - try { - minimizeElements(input, output); - } catch (XMLStreamException ex) { - LOGGER.log(Level.SEVERE, "error while parsing the input file. ", ex); - throw new ModuleException("Error while parsing the input file", ex); + LOGGER.fine("Starting ElementMinimizer"); + minimizeElements(doc.root()); + LOGGER.fine("ElementMinimizer finished succesfully"); + } + + private void minimizeElements(Element element) { + minimizeAttributes(element); + for (int i = 0; i < element.childNodeSize(); i++) { + final Node childNode = element.childNode(i); + if (childNode instanceof Comment) { + childNode.remove(); + i--; // we need to stay at the same position + continue; + } + if (childNode instanceof Element) { + final Element child = (Element) childNode; + if (removeWithChildren.contains(child.tagName())) { + child.remove(); + i--; + continue; + } + if (removeKeepChildren.contains(child.tagName())) { + child.unwrap(); // removes element but keeps the children + i--; + continue; + } + if (child.tagName().equals(MGLYPH)) { + final TextNode textNode = new TextNode(child.attr("alt")); + child.replaceWith(textNode); + } + minimizeElements(child); + } } - return output; } - /** - * Decides which attributes to keep based on keepAttributes properties. - */ - private boolean keepAttribute(final String name, final String attributeName, - final String attributeValue) { - assert name != null && attributeName != null && attributeValue != null; - assert !name.isEmpty() && !attributeName.isEmpty(); + private void minimizeAttributes(Element element) { String property = getProperty("keepAttributes"); - final String elementPropertyName = "keepAttributes." + name; + final String elementPropertyName = "keepAttributes." + element.tagName(); if (isProperty(elementPropertyName)) { property += " " + getProperty(elementPropertyName); } final List whitelist = Arrays.asList(property.split(" ")); - for (String attribute : whitelist) { - if (attributeName.equals(attribute) - || attribute.contains("=") - && attributeName.equals(attribute.substring(0, attribute.lastIndexOf('='))) - && attributeValue.equals(attribute.substring(attribute.lastIndexOf('=') + 1))) { - return true; + + final List attributes = element.attributes().asList(); + for (int i = 0; i < attributes.size(); i++) { + if (!isWhitelisted(attributes.get(i), whitelist)) { + element.removeAttr(attributes.get(i).getKey()); } } - return false; } - private void minimizeElements(final InputStream input, final OutputStream outputStream) - throws XMLStreamException { - assert input != null && outputStream != null; - // TODO: refactoring - // TODO: add logging - final XMLInputFactory inputFactory = Settings.setupXMLInputFactory(); - final XMLOutputFactory outputFactory = Settings.xmlOutputFactory(); - // stream for reading event from input stream - final XMLStreamReader reader = inputFactory.createXMLStreamReader(input); - // stream that writes events to given output stream - final XMLStreamWriter writer = outputFactory.createXMLStreamWriter(outputStream, StandardCharsets.UTF_8.name()); - writer.writeStartDocument(reader.getEncoding(), reader.getVersion()); - // depth of current branch, used when removing element with all its children - int depth = 0; - boolean mathElement = false; - // check for event - while (reader.hasNext()) { - // get event code - final int event = reader.next(); - // based on event code choose action - switch (event) { - case XMLStreamConstants.START_ELEMENT: { - // write this element - // omit if it should be skipped - String name = reader.getLocalName(); - if (name.equals(MATH)) { - mathElement = true; - } - if (mathElement) { - if (removeKeepChildren.contains(name)) { - continue; - } - // omit this element if it is marked to skip or is a child - // of such an element - if (removeWithChildren.contains(name)) { - depth++; - } - if (depth > 0) { - continue; - } - if (name.equals(MGLYPH)) { - for (int index = 0; index < reader.getAttributeCount(); ++index) { - final String attributeName = reader.getAttributeLocalName(index); - final String attributeValue = reader.getAttributeValue(index); - if (attributeName == "alt") { - writer.writeCharacters(attributeValue); - } - } - depth++; - continue; - } - } - writer.writeStartElement(reader.getName().getPrefix(), name, reader.getName().getNamespaceURI()); - for (int index = 0; index < reader.getAttributeCount(); ++index) { - final String attributeName = reader.getAttributeLocalName(index); - final String attributeValue = reader.getAttributeValue(index); - final String attributePrefix = reader.getAttributePrefix(index); - final String attributeNamespace = reader.getAttributeNamespace(index); - // write only chosen attributes - if (!mathElement || (mathElement && keepAttribute(name, attributeName, attributeValue))) { - if (attributeNamespace == null) { - writer.writeAttribute(attributeName, attributeValue); - } else { - writer.writeAttribute(attributePrefix, attributeNamespace, attributeName, attributeValue); - } - } - } - for (int index = 0; index < reader.getNamespaceCount(); ++index) { - writer.writeNamespace(reader.getNamespacePrefix(index), reader.getNamespaceURI(index)); - } - - break; - } - case XMLStreamConstants.END_ELEMENT: { - if (mathElement) { - String name = reader.getLocalName(); - if (name.equals(MATH)) { - mathElement = false; - } - if (removeKeepChildren.contains(name)) { - continue; - } - if (depth > 0) { - if (removeWithChildren.contains(name) || name.equals(MGLYPH)) { - depth--; - } - continue; - } - } - writer.writeEndElement(); - break; - } - case XMLStreamConstants.CHARACTERS: { - // warning: white space is counted as CHARACTER event (new line after element) - if (depth > 0) { - continue; - } - writer.writeCharacters(reader.getText()); - break; - } - case XMLStreamConstants.END_DOCUMENT: { - writer.writeEndDocument(); - break; - } - case XMLStreamConstants.DTD: { - writer.writeDTD(reader.getText()); - break; - } - default: { - break; - } + private Boolean isWhitelisted(Attribute attribute, List whitelist) { + System.out.println(attribute.getKey()); + for (String attr : whitelist) { + if (attribute.getKey().equals(attr) + || attr.contains("=") + && attribute.getKey().equals(attr.substring(0, attr.lastIndexOf('='))) + && attribute.getValue().equals(attr.substring(attr.lastIndexOf('=') + 1))) { + return true; } } - writer.flush(); - writer.close(); + return false; } } diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizer.java index 0f5d653..f79645e 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizer.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizer.java @@ -15,12 +15,11 @@ */ package cz.muni.fi.mir.mathmlcanonicalization.modules; -import static cz.muni.fi.mir.mathmlcanonicalization.modules.AbstractModule.MATHMLNS; import java.util.Collection; import java.util.List; import java.util.logging.Logger; -import org.jdom2.Document; -import org.jdom2.Element; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; /** * Normalize the way to express an function applied to arguments in MathML. @@ -52,56 +51,57 @@ public void execute(final Document doc) { if (doc == null) { throw new NullPointerException("doc"); } - normalizeFunctionApplication(doc.getRootElement(), getPropertySet(APPLY_FUNCTION_OPERATORS)); + normalizeFunctionApplication(doc.root(), getPropertySet(APPLY_FUNCTION_OPERATORS)); } // TODO: refactoring private void normalizeFunctionApplication(final Element element, final Collection functionOperators) { assert element != null && functionOperators != null; - final List children = element.getChildren(); + final List children = element.children(); for (int i = 0; i < children.size(); i++) { if (isFunction(i, children, functionOperators)) { final int parameterPosition = i + 2; Element parameter = children.get(parameterPosition); // mrow in which the parameter will be stored - final Element newParameter = new Element(ROW, MATHMLNS); + final Element newParameter = new Element(ROW); - if (parameter.getName().equals(ROW)) { + if (parameter.tagName().equals(ROW)) { if (hasInsideBrackets(parameter)) { - children.get(i + 1).detach(); // just detach operator + children.get(i + 1).remove(); // just detach operator } else { // add parentheses - parameter.addContent(0, new Element(OPERATOR, MATHMLNS).setText("(")); - parameter.addContent(new Element(OPERATOR, MATHMLNS).setText(")")); + parameter.insertChildren(0, new Element(OPERATOR).text("(")); + parameter.appendChild(new Element(OPERATOR).text(")")); LOGGER.fine("Parentheses around function argument added"); - children.get(i + 1).detach(); // detach funct app operator + children.get(i + 1).remove(); // detach funct app operator } LOGGER.fine("Function application operator removed"); continue; // no need to set newParameter } else if (isOperator(parameter, "(")) { int bracketsDepth = 1; - newParameter.addContent(parameter.detach()); - - while ((parameterPosition < children.size()) && (bracketsDepth > 0)) { - parameter = children.get(parameterPosition); + newParameter.appendChild(parameter); + int viewPosition = parameterPosition + 1; + while ((viewPosition < children.size()) && (bracketsDepth > 0)) { + parameter = children.get(viewPosition); if (isOperator(parameter, "(")) { bracketsDepth++; } else if (isOperator(parameter, ")")) { bracketsDepth--; } - newParameter.addContent(parameter.detach()); + newParameter.appendChild(parameter); + viewPosition++; } for (; bracketsDepth > 0; bracketsDepth--) { // add missing right brackets - newParameter.addContent(new Element(OPERATOR, MATHMLNS).setText(")")); + newParameter.appendChild(new Element(OPERATOR).text(")")); LOGGER.fine("Added missing )"); } } else { // if the paramether is neither mrow or ( - newParameter.addContent(new Element(OPERATOR, MATHMLNS).setText("(")); // add left bracket - newParameter.addContent(children.get(parameterPosition).detach()); - newParameter.addContent(new Element(OPERATOR, MATHMLNS).setText(")")); // add right bracket + newParameter.appendChild(new Element(OPERATOR).text("(")); // add left bracket + newParameter.appendChild(children.get(parameterPosition)); + newParameter.appendChild(new Element(OPERATOR).text(")")); // add right bracket LOGGER.fine("Function argument wrapped with parentheses and mrow"); } - children.set(i + 1, newParameter); // replace function app operator with newParameter + children.get(i + 1).replaceWith(newParameter); // replace function app operator with newParameter LOGGER.fine("Function application operator removed"); } else { // if there isnt start of function application apply normalization on children normalizeFunctionApplication(children.get(i), functionOperators); @@ -113,14 +113,14 @@ private boolean isFunction(final int i, final List children, final Collection functionOperators) { assert i >= 0 && children != null && i < children.size() && functionOperators != null; return ((i < children.size() - 2) - && children.get(i).getName().equals(IDENTIFIER) + && children.get(i).tagName().equals(IDENTIFIER) && isOperator(children.get(i + 1)) - && functionOperators.contains(children.get(i + 1).getTextTrim())); + && functionOperators.contains(children.get(i + 1).ownText().trim())); } private boolean hasInsideBrackets(final Element element) { assert element != null; - final List children = element.getChildren(); + final List children = element.children(); if ((children.size() > 1) && isOperator(children.get(0), "(")) { int bracketsDepth = 1; Element child; diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacer.java index 9fd8dd8..7dc0153 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacer.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacer.java @@ -15,14 +15,11 @@ */ package cz.muni.fi.mir.mathmlcanonicalization.modules; -import static cz.muni.fi.mir.mathmlcanonicalization.modules.AbstractModule.MATHMLNS; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.Namespace; -import org.jdom2.filter.ElementFilter; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; /** * Replace mfenced elements in MathML for equivalent. @@ -38,12 +35,16 @@ * configured not to add mrow outside and inside or your own fixed or default * parentheses and separators for fenced expressions can be specified. *
Example
+ * *
{@code
  * 
  *   x
  *   y
  * 
- * }
is transformed to + * } + * + * is transformed to + * *
{@code
  * 
  *     [
@@ -92,7 +93,7 @@ public void execute(final Document doc) {
             throw new NullPointerException("doc");
         }
         final List toReplace = new ArrayList<>();
-        for (Element mfenced : doc.getDescendants(new ElementFilter(FENCED, MATHMLNS))) {
+        for (Element mfenced : doc.getElementsByTag(FENCED)) {
             toReplace.add(mfenced);
         }
         if (toReplace.isEmpty()) {
@@ -107,26 +108,25 @@ public void execute(final Document doc) {
     private void replaceMfenced(final Element mfencedElement) {
         assert mfencedElement != null;
         final char[] separators = getSeparators(mfencedElement);
-        final Namespace ns = mfencedElement.getNamespace();
-        final List children = mfencedElement.getChildren();
+        final List children = mfencedElement.children();
         final int nChildren = children.size();
         final int last = Math.min(separators.length - 1, nChildren - 2);
 
         Element insideFence = null;
-        if (nChildren == 1 && children.get(0).getName().equals(ROW)) {
+        if (nChildren == 1 && children.get(0).tagName().equals(ROW)) {
             // we do not want to add another mrow
-            insideFence = children.get(0).detach();
+            insideFence = children.get(0);
         } else if (nChildren != 0) {
-            insideFence = new Element(ROW, ns);
+            insideFence = new Element(ROW);
             for (int i = 0; i < nChildren; i++) {
                 // add separator
                 if (i > 0 && last >= 0) { // not before first or when blank separators
                     char separatorChar = separators[(i - 1 > last) ? last : i - 1];
                     String separatorStr = Character.toString(separatorChar);
-                    insideFence.addContent(new Element(OPERATOR, ns).setText(separatorStr));
+                    insideFence.appendChild(new Element(OPERATOR).text(separatorStr));
                 }
                 // add original child
-                insideFence.addContent(children.get(0).detach());
+                insideFence.appendChild(children.get(i));
             }
         }
         replaceMfenced(mfencedElement, insideFence);
@@ -134,38 +134,38 @@ private void replaceMfenced(final Element mfencedElement) {
 
     private void replaceMfenced(final Element mfencedElement, final Element insideContent) {
         assert mfencedElement != null; // but insideContent can be null
-        final Namespace ns = mfencedElement.getNamespace();
-        Element replacement = new Element(ROW, ns);
+        Element replacement = new Element(ROW);
         String openStr = getProperty(DEFAULT_OPEN);
         String closeStr = getProperty(DEFAULT_CLOSE);
         if (openStr.isEmpty() || closeStr.isEmpty()) {
             LOGGER.warning("Default open or close fence not set");
         }
 
-        if (!isEnabled(FORCE_DEFAULT_OPEN)) {
-            openStr = mfencedElement.getAttributeValue(OPEN_FENCE, openStr);
+        if (!isEnabled(FORCE_DEFAULT_OPEN) && mfencedElement.hasAttr(OPEN_FENCE)) {
+            openStr = mfencedElement.attr(OPEN_FENCE);
         }
-        if (!isEnabled(FORCE_DEFAULT_CLOSE)) {
-            closeStr = mfencedElement.getAttributeValue(CLOSE_FENCE, closeStr);
+        if (!isEnabled(FORCE_DEFAULT_CLOSE) && mfencedElement.hasAttr(CLOSE_FENCE)) {
+            closeStr = mfencedElement.attr(CLOSE_FENCE);
         }
 
-        replacement.addContent(new Element(OPERATOR, ns).setText(openStr));
+        replacement.appendChild(new Element(OPERATOR).text(openStr));
         if (insideContent != null) {
             if (isEnabled(ADD_INNER_ROW)) {
-                replacement.addContent(insideContent);
+                replacement.appendChild(insideContent);
             } else {
-                replacement.addContent(insideContent.removeContent());
+                replacement.appendChildren(insideContent.childNodes());
+                insideContent.remove();
             }
         }
-        replacement.addContent(new Element(OPERATOR, ns).setText(closeStr));
+        replacement.appendChild(new Element(OPERATOR).text(closeStr));
 
-        final Element parent = mfencedElement.getParentElement();
-        final int index = parent.indexOf(mfencedElement);
-        parent.removeContent(index);
+        final Element parent = mfencedElement.parent();
+        final int index = mfencedElement.siblingIndex();
+        mfencedElement.remove();
         if (isEnabled(ADD_OUTER_ROW)) {
-            parent.addContent(index, replacement);
+            parent.insertChildren(index, replacement);
         } else {
-            parent.addContent(index, replacement.removeContent());
+            parent.insertChildren(index, replacement.childNodes());
         }
         LOGGER.fine("Mfenced element converted");
     }
@@ -175,8 +175,8 @@ private char[] getSeparators(final Element element) {
         if (isEnabled(FORCE_DEFAULT_SEPARATORS)) {
             return getProperty(DEFAULT_SEPARATORS).toCharArray();
         }
-        return element.getAttributeValue(SEPARATORS,
-                getProperty(DEFAULT_SEPARATORS)).trim().toCharArray();
+        return (element.hasAttr(SEPARATORS) ? element.attr(SEPARATORS).trim().toCharArray()
+                : getProperty(DEFAULT_SEPARATORS).toCharArray());
     }
 
 }
diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizer.java
index 1fb4a47..ef5f8d2 100644
--- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizer.java
+++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizer.java
@@ -15,14 +15,12 @@
  */
 package cz.muni.fi.mir.mathmlcanonicalization.modules;
 
-import static cz.muni.fi.mir.mathmlcanonicalization.modules.AbstractModule.MATHMLNS;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.jdom2.Document;
-import org.jdom2.Element;
-import org.jdom2.Parent;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
 
 /**
  * Normalize the number of mrow elements in MathML.
@@ -31,21 +29,27 @@
  * Well-formed MathML, already processed by other modules (especially
  * ElementMinimizer, MfencedReplacer and FunctionNormalizer)
  * 
Output
- * The original code with changes in mrow elements:
    + * The original code with changes in mrow elements: + *
      *
    • added mrow elements to places, where detected fenced formulae (and not * already encapsulated in mrow)
    • *
    • removed redundant mrow elements in unneeded grouping – e.q. parents * requiring only one child element accept any number of elements so the mrow * tag is not needed (see example) or grouping with only presentation purpose - *
    + * + *
*
Example
+ * *
{@code
  * 
  *     
  *         -
  *         1
  *     
- * }
is transformed to + * }
+ * + * is transformed to + * *
{@code
  * 
  *     -
@@ -95,8 +99,8 @@ public void execute(final Document doc) {
         if (doc == null) {
             throw new NullPointerException("doc");
         }
-        traverseRemoval(doc.getRootElement());
-        traverseAddition(doc.getRootElement());
+        traverseRemoval(doc.root());
+        traverseAddition(doc.root());
     }
 
     /**
@@ -106,7 +110,7 @@ public void execute(final Document doc) {
      */
     private void traverseAddition(final Element element) {
         assert element != null;
-        final List children = new ArrayList<>(element.getChildren());
+        final List children = new ArrayList<>(element.children());
         for (Element child : children) {
             traverseAddition(child);
         }
@@ -120,11 +124,11 @@ private void traverseAddition(final Element element) {
      */
     private void traverseRemoval(final Element element) {
         assert element != null;
-        final List children = new ArrayList<>(element.getChildren());
+        final List children = new ArrayList<>(element.children());
         for (Element child : children) {
             traverseRemoval(child);
         }
-        if (element.getName().equals(ROW)) {
+        if (element.tagName().equals(ROW)) {
             checkRemoval(element);
         }
     }
@@ -135,13 +139,12 @@ private void traverseRemoval(final Element element) {
      * @param mrowElement the mrow element
      */
     private void checkRemoval(final Element mrowElement) {
-        assert mrowElement != null && mrowElement.getName().equals(ROW);
-        final Parent parent = mrowElement.getParent();
-        if (!(parent instanceof Element)) {
+        assert mrowElement != null && mrowElement.tagName().equals(ROW);
+        if (!mrowElement.hasParent()) {
             return; // no parent element
         }
-        final Element parentElement = (Element) parent;
-        final List children = mrowElement.getChildren();
+        final Element parentElement = mrowElement.parent();
+        final List children = mrowElement.children();
 
         if (children.size() <= 1) {
             removeElement(mrowElement, parentElement);
@@ -149,7 +152,7 @@ private void checkRemoval(final Element mrowElement) {
             return;
         }
 
-        final String childCountPropertyName = CHILD_COUNT_PREFIX + parentElement.getName();
+        final String childCountPropertyName = CHILD_COUNT_PREFIX + parentElement.tagName();
         if (!isProperty(childCountPropertyName)) {
             return; // unknown parent element
         }
@@ -159,37 +162,38 @@ private void checkRemoval(final Element mrowElement) {
             childCount = Integer.parseInt(childCountProperty);
         } catch (NumberFormatException e) {
             LOGGER.log(Level.WARNING,
-                    "\"{0}\" is not an integer for \"" + childCountPropertyName + "\", property ignored", childCountProperty);
+                    "\"{0}\" is not an integer for \"" + childCountPropertyName + "\", property ignored",
+                    childCountProperty);
             return;
         }
 
         if (childCount == 1 || // parent can accept any number of elements so we can remove mrow
-                children.size() + parentElement.getChildren().size() - 1 == childCount) {
+                children.size() + parentElement.childNodeSize() - 1 == childCount) {
             removeElement(mrowElement, parentElement);
         }
     }
 
     private static void removeElement(final Element element, final Element parent) {
         assert element != null && parent != null;
-        parent.addContent(parent.indexOf(element), element.cloneContent());
-        element.detach();
+        parent.insertChildren(element.siblingIndex(), element.childNodes());
+        element.remove();
     }
 
     /**
      * Test if element is an operator representing an opening or closing
      * parenthesis according to properties
      *
-     * @param element element to test
+     * @param element      element to test
      * @param propertyName name of property specifiyng opening or closing
-     * parentheses
+     *                     parentheses
      * @return true if element is a parentheses according to propertyName
      */
     private Boolean isParenthesis(final Element element, final String propertyName) {
         assert element != null && propertyName != null && isProperty(propertyName);
-        if (!element.getName().equals(OPERATOR)) {
+        if (!element.tagName().equals(OPERATOR)) {
             return false;
         }
-        return getPropertySet(propertyName).contains(element.getTextNormalize());
+        return getPropertySet(propertyName).contains(element.ownText().trim());
     }
 
     /**
@@ -197,20 +201,17 @@ private Boolean isParenthesis(final Element element, final String propertyName)
      * of MfencedReplacer
      *
      * @param siblings children of parent element
-     * @param fenced list of elements inside parentheses, children of parent
-     * element
-     * @param opening opening parenthesis, child of parent element
-     * @param closing closing parenthesis, child of parent element
+     * @param fenced   list of elements inside parentheses, children of parent
+     *                 element
+     * @param opening  opening parenthesis, child of parent element
+     * @param closing  closing parenthesis, child of parent element
      */
     private void wrapFenced(final List siblings, final List fenced,
             final Element opening, final Element closing) {
         assert siblings != null && fenced != null && opening != null;
-        final Element parent = opening.getParentElement();
-        assert closing != null && closing.getParentElement().equals(parent);
-        for (Element e : fenced) {
-            e.detach();
-        }
-        final int openingIndex = parent.indexOf(opening);
+        final Element parent = opening.parent();
+        assert closing != null && closing.parent().equals(parent);
+        final int openingIndex = opening.siblingIndex();
 
         // Element to be placed inside parentheses.
         // If null, the original 'fenced' list will be used.
@@ -220,35 +221,33 @@ private void wrapFenced(final List siblings, final List fenced
         } else if (fenced.size() == 1) {
             innerElement = fenced.get(0); // no need to wrap, just one element
         } else {
-            innerElement = new Element(ROW, MATHMLNS);
-            innerElement.addContent(fenced);
+            innerElement = new Element(ROW);
+            innerElement.appendChildren(fenced);
             LOGGER.fine("Inner mrow added");
         }
 
-        if (((parent.getName().equals(ROW)
+        if (((parent.tagName().equals(ROW)
                 && siblings.get(0) == opening
                 && siblings.get(siblings.size() - 1) == closing))
                 || !isEnabled(WRAP_OUTSIDE)) {
             // will not wrap outside in mrow
             if (innerElement == null) {
-                parent.addContent(openingIndex + 1, fenced);
+                parent.insertChildren(openingIndex + 1, fenced);
             } else {
-                parent.addContent(openingIndex + 1, innerElement);
+                parent.insertChildren(openingIndex + 1, innerElement);
             }
             return;
         }
         // wrap outside in mrow
-        opening.detach();
-        closing.detach();
-        final Element outerMrowElement = new Element(ROW, MATHMLNS);
-        outerMrowElement.addContent(opening);
+        final Element outerMrowElement = new Element(ROW);
+        outerMrowElement.appendChild(opening);
         if (innerElement != null) {
-            outerMrowElement.addContent(innerElement);
+            outerMrowElement.appendChild(innerElement);
         } else {
-            outerMrowElement.addContent(fenced);
+            outerMrowElement.appendChildren(fenced);
         }
-        outerMrowElement.addContent(closing);
-        parent.addContent(openingIndex, outerMrowElement);
+        outerMrowElement.appendChild(closing);
+        parent.insertChildren(openingIndex, outerMrowElement);
         LOGGER.fine("Outer mrow added");
     }
 
@@ -257,12 +256,11 @@ private void wrapFenced(final List siblings, final List fenced
      */
     private void checkAddition(final Element element) {
         assert element != null;
-        final Parent parent = element.getParent();
-        if (!(parent instanceof Element)) {
+        if (!element.hasParent()) {
             return;
         }
-        final Element parentElement = (Element) parent;
-        final List siblings = parentElement.getChildren();
+        final Element parentElement = element.parent();
+        final List siblings = parentElement.children();
 
         if (isParenthesis(element, OPENING)) {
             // Need to find matching closing par and register the elements between
diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizer.java
index 4c43f85..16a9bf4 100644
--- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizer.java
+++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizer.java
@@ -15,7 +15,6 @@
  */
 package cz.muni.fi.mir.mathmlcanonicalization.modules;
 
-import static cz.muni.fi.mir.mathmlcanonicalization.modules.AbstractModule.MATHMLNS;
 import java.text.Normalizer;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -25,12 +24,11 @@
 import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.jdom2.Content;
-import org.jdom2.Document;
-import org.jdom2.Element;
-import org.jdom2.Text;
-import org.jdom2.filter.ContentFilter;
-import org.jdom2.filter.ElementFilter;
+
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.nodes.Node;
+import org.jsoup.nodes.TextNode;
 
 /**
  * Normalize the way to express an function applied to arguments in MathML.
@@ -72,7 +70,7 @@ public void execute(final Document doc) {
         if (doc == null) {
             throw new NullPointerException("doc");
         }
-        final Element root = doc.getRootElement();
+        final Element root = doc.root();
 
         // TODO: convert Unicode superscripts (supX entities) to msup etc.
         final String normalizerFormStr = getProperty(NORMALIZATION_FORM);
@@ -125,40 +123,37 @@ private void unifyOperators(final Element ancestor) {
 
     private void normalizeUnicode(final Element ancestor, final Normalizer.Form form) {
         assert ancestor != null && form != null;
-        final List texts = new ArrayList<>();
-        final ContentFilter textFilter = new ContentFilter(ContentFilter.TEXT);
-        for (Content text : ancestor.getContent(textFilter)) {
-            texts.add((Text) text);
-        }
-        for (Element element : ancestor.getDescendants(new ElementFilter())) {
-            for (Content text : element.getContent(textFilter)) {
-                texts.add((Text) text);
+
+        final List texts = new ArrayList<>();
+        for (Element descendant : ancestor.getAllElements()) {
+            for (Node text : descendant.textNodes()) {
+                texts.add(text);
             }
         }
-        for (Text text : texts) {
-            if (Normalizer.isNormalized(text.getText(), form)) {
+
+        for (Node text : texts) {
+            final String textString = text.attr("#text");
+            if (Normalizer.isNormalized(textString, form)) {
                 continue;
             }
-            final String normalizedString = Normalizer.normalize(text.getText(), form);
+            text.attr("#text", Normalizer.normalize(textString, form));
             LOGGER.log(Level.FINE, "Text ''{0}'' normalized to ''{1}''",
-                    new Object[]{text.getText(), normalizedString});
-            text.setText(normalizedString);
-            assert Normalizer.isNormalized(text.getText(), form);
+                    new Object[] { textString, text.attr("#text") });
+            assert Normalizer.isNormalized(text.attr("#text"), form);
         }
     }
 
     private void removeSpareOperators(final Element element, final Collection spareOperators) {
         assert element != null && spareOperators != null && !spareOperators.isEmpty();
-        final List children = element.getChildren();
+        final List children = element.children();
         for (int i = 0; i < children.size(); i++) {
             final Element actual = children.get(i); // actual element
             if (isOperator(actual)) {
-                //Keep special case where asterisk is by itself in a subscript
-                String parent = actual.getParentElement().getName();
+                // Keep special case where asterisk is by itself in a subscript
+                String parent = actual.parent().tagName();
                 if (isSpareOperator(actual, spareOperators) && !(parent.equals("msub"))
                         && !(parent.equals("msubsup") && !(parent.equals("msup")))) {
-                    actual.detach();
-                    i--; // move iterator back after detaching so it points to next element
+                    actual.remove();
                     LOGGER.log(Level.FINE, "Operator {0} removed", actual);
                 }
             } else {
@@ -169,38 +164,46 @@ private void removeSpareOperators(final Element element, final Collection spareOperators) {
         assert operator != null && spareOperators != null && isOperator(operator);
-        return (isEnabled(REMOVE_EMPTY_OPERATORS) && operator.getText().isEmpty())
-                || (spareOperators.contains(operator.getTextTrim()));
+        if (!isEnabled(REMOVE_EMPTY_OPERATORS)) {
+            return false;
+        }
+        if (operator.textNodes().isEmpty()) {
+            return true;
+        }
+        String operatorText = "";
+        for (TextNode textNode : operator.textNodes()) {
+            operatorText += textNode.getWholeText().trim();
+        }
+        return spareOperators.contains(operatorText);
     }
 
     private void replaceOperators(final Element element, final Map replacements) {
         assert element != null && replacements != null;
-        List operatorsToReplace = new ArrayList<>();
-        for (Element operator : element.getDescendants(new ElementFilter(OPERATOR, MATHMLNS))) {
-            if (replacements.containsKey(operator.getTextTrim())) {
-                operatorsToReplace.add(operator);
+        for (Element operator : element.getElementsByTag(OPERATOR)) {
+            for (TextNode textNode : operator.textNodes()) {
+                final String oldOperator = textNode.getWholeText().trim();
+                final String newOperator = replacements.get(oldOperator);
+                if (replacements.containsKey(oldOperator)) {
+                    operator.text(newOperator);
+                    LOGGER.log(Level.FINE, "Operator ''{0}'' was replaced by ''{1}''",
+                            new Object[] { oldOperator, newOperator });
+                    break;
+                }
             }
         }
-        for (Element operator : operatorsToReplace) {
-            final String oldOperator = operator.getTextTrim();
-            final String newOperator = replacements.get(oldOperator);
-            operator.setText(newOperator);
-            LOGGER.log(Level.FINE, "Operator ''{0}'' was replaced by ''{1}''",
-                    new Object[]{oldOperator, newOperator});
-        }
     }
 
     private void replaceIdentifiers(final Element ancestor, final Set operators) {
         assert ancestor != null && operators != null;
         final List toReplace = new ArrayList<>();
-        for (Element element : ancestor.getDescendants(new ElementFilter(IDENTIFIER, MATHMLNS))) {
+        for (Element element : ancestor.getElementsByTag(IDENTIFIER)) {
             // TODO: control whole ranges of symbols rather than listed ones
-            if (operators.contains(element.getTextTrim())) {
+            if (operators.contains(element.ownText().trim())) {
                 toReplace.add(element);
             }
         }
         for (Element element : toReplace) {
-            LOGGER.log(Level.FINE, "Creating an operator from {0}", element.getText());
+            LOGGER.log(Level.FINE, "Creating an operator from {0}", element.ownText());
             replaceElement(element, OPERATOR);
         }
     }
@@ -208,13 +211,13 @@ private void replaceIdentifiers(final Element ancestor, final Set operat
     private void operatorsToIdentifiers(final Element ancestor, final Set identifiers) {
         assert ancestor != null && identifiers != null;
         final List toReplace = new ArrayList<>();
-        for (Element element : ancestor.getDescendants(new ElementFilter(OPERATOR, MATHMLNS))) {
-            if (identifiers.contains(element.getTextTrim())) {
+        for (Element element : ancestor.getElementsByTag(OPERATOR)) {
+            if (identifiers.contains(element.ownText().trim())) {
                 toReplace.add(element);
             }
         }
         for (Element element : toReplace) {
-            LOGGER.log(Level.FINE, "Creating an identifier from {0}", element.getText());
+            LOGGER.log(Level.FINE, "Creating an identifier from {0}", element.ownText());
             replaceElement(element, IDENTIFIER);
         }
     }
diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizer.java
index 11623f2..1ddc1fa 100644
--- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizer.java
+++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizer.java
@@ -15,16 +15,14 @@
  */
 package cz.muni.fi.mir.mathmlcanonicalization.modules;
 
-import static cz.muni.fi.mir.mathmlcanonicalization.modules.AbstractModule.MATHMLNS;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
-import org.jdom2.Document;
-import org.jdom2.Element;
-import org.jdom2.filter.ElementFilter;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
 
 /**
  * Handle sub/super/under/over/multi script elements in MathML.
@@ -34,10 +32,12 @@
  * {@code }, {@code }, {@code } and
  * {@code } (with children {@code } and
  * {@code }) elements in MathML.
- * 

Input + *

+ * Input * Well-formed MathML *
Output
- * The original code with always used:
    + * The original code with always used: + *
      *
    • {@code } (or {@code }) for sums, integrals, etc. * (converted from {@code }, {@code } and * {@code }, {@code } combinations)
    • @@ -71,7 +71,7 @@ public void execute(final Document doc) { if (doc == null) { throw new NullPointerException("doc"); } - final Element root = doc.getRootElement(); + final Element root = doc.root(); if (isEnabled(UNIFY_SCRIPTS)) { final Map replaceMap = new HashMap<>(); replaceMap.put(UNDERSCRIPT, SUBSCRIPT); @@ -96,62 +96,63 @@ public void execute(final Document doc) { private void normalizeSupInSub(final Element element) { assert element != null; - final List children = element.getChildren(); + final List children = element.children(); for (int i = 0; i < children.size(); i++) { final Element actual = children.get(i); normalizeSupInSub(actual); - if (!actual.getName().equals(SUBSCRIPT)) { + if (!actual.tagName().equals(SUBSCRIPT)) { continue; } - List subscriptChildren = actual.getChildren(); + List subscriptChildren = actual.children(); if (subscriptChildren.size() != 2) { LOGGER.fine("Invalid msub, skipped"); continue; } - if (!subscriptChildren.get(0).getName().equals(SUPERSCRIPT)) { + if (!subscriptChildren.get(0).tagName().equals(SUPERSCRIPT)) { continue; } - final List superscriptChildren = subscriptChildren.get(0).getChildren(); + final List superscriptChildren = subscriptChildren.get(0).children(); if (superscriptChildren.size() != 2) { LOGGER.fine("Invalid msup, skipped"); continue; } - final Element newMsub = new Element(SUBSCRIPT, MATHMLNS); - newMsub.addContent(superscriptChildren.get(0).detach()); - newMsub.addContent(subscriptChildren.get(1).detach()); - final Element newMsup = new Element(SUPERSCRIPT, MATHMLNS); - newMsup.addContent(newMsub); - newMsup.addContent(superscriptChildren.get(0).detach()); - children.set(i, newMsup); + final Element newMsub = new Element(SUBSCRIPT); + newMsub.appendChild(superscriptChildren.get(0)); + newMsub.appendChild(subscriptChildren.get(1)); + final Element newMsup = new Element(SUPERSCRIPT); + newMsup.appendChild(newMsub); + newMsup.appendChild(superscriptChildren.get(1)); + children.get(i).replaceWith(newMsup); LOGGER.finer("Sub/sup scripts swapped"); } } private void normalizeMsubsup(final Element element, Collection firstChildren) { assert element != null && firstChildren != null; - final List children = element.getChildren(); + final List children = element.children(); for (int i = 0; i < children.size(); i++) { final Element actual = children.get(i); - if (actual.getName().equals(SUBSUP)) { - final List actualChildren = actual.getChildren(); + + // traverse and normalise children first + normalizeMsubsup(actual, firstChildren); + + if (actual.tagName().equals(SUBSUP)) { + final List actualChildren = actual.children(); if (actualChildren.size() != 3) { LOGGER.fine("Invalid msubsup, skipped"); continue; } - if (!firstChildren.contains(actualChildren.get(0).getName())) { + if (!firstChildren.contains(actualChildren.get(0).tagName())) { continue; } - final Element newMsub = new Element(SUBSCRIPT, MATHMLNS); - newMsub.addContent(actualChildren.get(0).detach()); - newMsub.addContent(actualChildren.get(0).detach()); - final Element newMsup = new Element(SUPERSCRIPT, MATHMLNS); - newMsup.addContent(newMsub); - newMsup.addContent(actualChildren.get(0).detach()); - children.set(i, newMsup); - i--; // move back to check the children of the new transformation + final Element newMsub = new Element(SUBSCRIPT); + newMsub.appendChild(actualChildren.get(0)); + newMsub.appendChild(actualChildren.get(1)); + final Element newMsup = new Element(SUPERSCRIPT); + newMsup.appendChild(newMsub); + newMsup.appendChild(actualChildren.get(2)); + children.get(i).replaceWith(newMsup); LOGGER.finer("Msubsup converted to nested msub and msup"); - } else { - normalizeMsubsup(actual, firstChildren); } } } @@ -159,13 +160,13 @@ private void normalizeMsubsup(final Element element, Collection firstChi private void replaceDescendants(final Element ancestor, final Map map) { assert ancestor != null && map != null; final List toReplace = new ArrayList<>(); - for (Element element : ancestor.getDescendants(new ElementFilter())) { - if (map.containsKey(element.getName())) { + for (Element element : ancestor.getAllElements()) { + if (map.containsKey(element.tagName())) { toReplace.add(element); } } for (Element element : toReplace) { - replaceElement(element, map.get(element.getName())); + replaceElement(element, map.get(element.tagName())); } } diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/SingleTopElementOutputter.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/SingleTopElementOutputter.java index 8bf2a4f..593f773 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/SingleTopElementOutputter.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/SingleTopElementOutputter.java @@ -15,11 +15,10 @@ */ package cz.muni.fi.mir.mathmlcanonicalization.modules; -import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; -import org.jdom2.Document; -import org.jdom2.Element; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; /** * Make sure any {@code } element has exactly one child. @@ -42,28 +41,22 @@ public void execute(final Document doc) { if (doc == null) { throw new NullPointerException("doc"); } - traverseDocument(doc.getRootElement()); + traverseDocument(doc.root()); } - private void traverseDocument(final Element element) { - assert element != null; - final List children = new ArrayList(element.getChildren()); + private void traverseDocument(final Element rootElement) { + assert rootElement != null; + final List mathElements = rootElement.getElementsByTag("math"); + LOGGER.fine(mathElements.size() + MATH + " elements found"); - if (element.getName().equals(MATH)) { - LOGGER.fine(MATH + " element found"); - if (element.getChildren().size() > 1) { + for (Element mathElement : mathElements) { + if (mathElement.childNodeSize() > 1) { LOGGER.fine(MATH + " element found have multiple children"); Element mrow = new Element(ROW); - mrow.setNamespace(element.getNamespace()); - LOGGER.fine("Namespace of the new " + ROW + " element set to " + mrow.getNamespace()); - mrow.setContent(element.cloneContent()); - element.setContent(mrow); + mrow.appendChildren(mathElement.childNodes()); + mathElement.appendChild(mrow); LOGGER.fine(MATH + " children moved under new " + ROW + " element"); } - } else { // cannot contain nested elements so no need to traverse - for (Element child : children) { - traverseDocument(child); - } } } diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java index 1678b5e..dc64095 100644 --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java @@ -15,15 +15,12 @@ */ package cz.muni.fi.mir.mathmlcanonicalization.modules; +import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.logging.Logger; -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.Namespace; -import org.jdom2.filter.Filters; -import org.jdom2.xpath.XPathExpression; -import org.jdom2.xpath.XPathFactory; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; /** * Removes unary operators, i.e. {@code //mo[count(preceding-sibling::*) = 0]}. @@ -38,6 +35,7 @@ * The original code with all unatry operators removed *

      *
      Example Input + * *
      {@code
        * 
        * 
      @@ -53,7 +51,9 @@
        *   
        * 
        * }
      + * * Example Output + * *
      {@code
        * 
        * 
      @@ -79,19 +79,6 @@ public class UnaryOperatorRemover extends AbstractModule implements DOMModule {
           private static final String PM_UNARY_OPERATORS_TO_REMOVE = "pmathremoveunaryoperators";
           private static final String CM_UNARY_OPERATORS_TO_REMOVE = "cmathremoveunaryoperators";
       
      -    private static final XPathExpression xpPMUnaryOperators = XPathFactory.instance().compile(
      -            "//mathml:mo[count(preceding-sibling::*) = 0]|//mo[count(preceding-sibling::*) = 0]",
      -            Filters.element(), null,
      -            Namespace.getNamespace("mathml", "http://www.w3.org/1998/Math/MathML"));
      -    private static final XPathExpression xpPMSecondOperatorInDoubleOperators = XPathFactory.instance().compile(
      -            "//mathml:mo[preceding-sibling::*[1][self::mathml:mo]]|//mo[preceding-sibling::*[1][self::mo]]",
      -            Filters.element(), null,
      -            Namespace.getNamespace("mathml", "http://www.w3.org/1998/Math/MathML"));
      -    private static final XPathExpression xpCMApplyWithTwoChildrens = XPathFactory.instance().compile(
      -            "//mathml:apply[count(child::*)=2]|//apply[count(child::*)=2]",
      -            Filters.element(), null,
      -            Namespace.getNamespace("mathml", "http://www.w3.org/1998/Math/MathML"));
      -
           public UnaryOperatorRemover() {
               declareProperty(PM_UNARY_OPERATORS_TO_REMOVE);
               declareProperty(CM_UNARY_OPERATORS_TO_REMOVE);
      @@ -104,7 +91,7 @@ public void execute(final Document doc) {
                   throw new NullPointerException("doc");
               }
       
      -        final Element root = doc.getRootElement();
      +        final Element root = doc.root();
       
               removeUnaryOperator(root);
       
      @@ -118,26 +105,27 @@ private void removeUnaryOperator(final Element rootElem) {
               final Set pmCharsToRemove = getPropertySet(PM_UNARY_OPERATORS_TO_REMOVE);
       
               if (!pmCharsToRemove.isEmpty()) {
      -
      -            // Unary operators
      -            List pmElemsToRemove = xpPMUnaryOperators.evaluate(rootElem);
      -            for (Element toRemove : pmElemsToRemove) {
      -                if (pmCharsToRemove.contains(toRemove.getValue())) {
      -                    LOGGER.finest("Removing element '" + toRemove.getQualifiedName() + "' with value '" + toRemove.getValue() + "'.");
      -                    toRemove.detach();
      -                } else {
      -                    LOGGER.finest("Skipping element '" + toRemove.getQualifiedName() + "' with value '" + toRemove.getValue() + "'.");
      +            List pmElemsToRemove = new ArrayList<>();
      +            for (Element operator : rootElem.getElementsByTag(OPERATOR)) {
      +                int index = operator.elementSiblingIndex();
      +                if (index != 0 && operator.previousElementSibling().tagName().equals(OPERATOR)) {
      +                    System.out.println(operator.text());
      +                    index = 0;
      +                }
      +                if (index == 0) {
      +                    pmElemsToRemove.add(operator);
                       }
                   }
       
      -            // Second of the double operators
      -            pmElemsToRemove = xpPMSecondOperatorInDoubleOperators.evaluate(rootElem);
      +            // Unary operators
                   for (Element toRemove : pmElemsToRemove) {
      -                if (pmCharsToRemove.contains(toRemove.getValue())) {
      -                    LOGGER.finest("Removing the second element out of double elements '" + toRemove.getQualifiedName() + "' with value '" + toRemove.getValue() + "'.");
      -                    toRemove.detach();
      +                if (pmCharsToRemove.contains(toRemove.text())) {
      +                    LOGGER.finest(
      +                            "Removing element '" + toRemove.tagName() + "' with value '" + toRemove.text() + "'.");
      +                    toRemove.remove();
                       } else {
      -                    LOGGER.finest("Skipping the second element out of double elements '" + toRemove.getQualifiedName() + "' with value '" + toRemove.getValue() + "'.");
      +                    LOGGER.finest(
      +                            "Skipping element '" + toRemove.tagName() + "' with value '" + toRemove.text() + "'.");
                       }
                   }
       
      @@ -146,19 +134,25 @@ private void removeUnaryOperator(final Element rootElem) {
               LOGGER.finer("RemoveUnaryOperator Presentation MathML finished");
       
               /* Content MathML */
      -        List applyWithTwoChildrens = xpCMApplyWithTwoChildrens.evaluate(rootElem);
      +        List applyWithTwoChildrens = new ArrayList<>();
      +        for (Element element : rootElem.getElementsByTag("apply")) {
      +            if (element.childrenSize() == 2) {
      +                applyWithTwoChildrens.add(element);
      +            }
      +        }
      +
               final Set cmOperatorsToRemove = getPropertySet(CM_UNARY_OPERATORS_TO_REMOVE);
       
               for (Element applyElem : applyWithTwoChildrens) {
      -            Element operator = applyElem.getChildren().get(0);
      -            if (cmOperatorsToRemove.contains(operator.getName())) {
      -                Element operand = applyElem.getChildren().get(1);
      -                LOGGER.finest("Removing operator '" + operator.getQualifiedName() + "' for operand '" + operand.getQualifiedName() + "'.");
      -                operand.detach();
      -                Element parent = applyElem.getParentElement();
      -                int applyElemIndex = parent.indexOf(applyElem);
      -                parent.setContent(applyElemIndex, operand);
      -                applyElem.detach();
      +            Element operator = applyElem.children().get(0);
      +            if (cmOperatorsToRemove.contains(operator.tagName())) {
      +                Element operand = applyElem.children().get(1);
      +                LOGGER.finest(
      +                        "Removing operator '" + operator.tagName() + "' for operand '" + operand.tagName() + "'.");
      +                Element parent = applyElem.parent();
      +                int applyElemIndex = applyElem.siblingIndex();
      +                parent.insertChildren(applyElemIndex, operand);
      +                applyElem.remove();
                   }
               }
       
      diff --git a/src/main/resources/cz/muni/fi/mir/mathmlcanonicalization/default-config.xml b/src/main/resources/cz/muni/fi/mir/mathmlcanonicalization/default-config.xml
      index 24e3b82..72fa7dd 100644
      --- a/src/main/resources/cz/muni/fi/mir/mathmlcanonicalization/default-config.xml
      +++ b/src/main/resources/cz/muni/fi/mir/mathmlcanonicalization/default-config.xml
      @@ -18,6 +18,7 @@
               closure
               nargs occurrence
               open close
      +        xmlns
           
           
           
      diff --git a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerTest.java b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerTest.java
      index 1f38941..dc752a4 100644
      --- a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerTest.java
      +++ b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/MathMLCanonicalizerTest.java
      @@ -23,6 +23,7 @@
       import java.io.IOException;
       import java.io.InputStream;
       import java.io.UnsupportedEncodingException;
      +import java.lang.reflect.InvocationTargetException;
       import java.nio.charset.StandardCharsets;
       import java.util.logging.Logger;
       
      @@ -47,8 +48,9 @@ public MathMLCanonicalizerTest() {
           }
       
           @Test
      -    public void testLoadingProperties() throws
      -            UnsupportedEncodingException, IOException, JDOMException, ModuleException {
      +    public void testLoadingProperties()
      +            throws UnsupportedEncodingException, IOException, JDOMException, ModuleException, IllegalArgumentException,
      +            InvocationTargetException, NoSuchMethodException, SecurityException {
               final String config = XML_DECLARATION
                       + ""
                       + " value"
      @@ -74,6 +76,7 @@ public void shouldCreateDefaultCanonicalizer() throws Exception {
               MathMLCanonicalizer canonicalizer = MathMLCanonicalizer.getDefaultCanonicalizer();
       
               for (InputStream resource : ModuleTestResources.getAllTestResources()) {
      +            System.out.println(resource);
                   canonicalizer.canonicalize(resource, new ByteArrayOutputStream());
                   // we don't check result; it just should not throw an exception
               }
      diff --git a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModuleTest.java b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModuleTest.java
      index 6d143a6..510964d 100644
      --- a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModuleTest.java
      +++ b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/AbstractModuleTest.java
      @@ -15,22 +15,19 @@
        */
       package cz.muni.fi.mir.mathmlcanonicalization.modules;
       
      -import cz.muni.fi.mir.mathmlcanonicalization.Settings;
      +import static org.junit.jupiter.api.Assertions.assertEquals;
      +
       import java.io.ByteArrayInputStream;
       import java.io.ByteArrayOutputStream;
       import java.io.IOException;
       import java.io.InputStream;
      -import java.io.InputStreamReader;
      +import java.nio.charset.StandardCharsets;
       import java.util.logging.Level;
       import java.util.logging.Logger;
      -import org.custommonkey.xmlunit.XMLTestCase;
      -import org.custommonkey.xmlunit.XMLUnit;
      -import org.jdom2.Document;
      -import org.jdom2.JDOMException;
      -import org.jdom2.input.SAXBuilder;
      -import org.jdom2.output.XMLOutputter;
      +import org.jsoup.Jsoup;
      +import org.jsoup.nodes.Document;
      +
       import org.junit.jupiter.api.*;
      -import org.xml.sax.SAXException;
       
       /**
        * Abstract class to allow descendants to simple compare desired and produced
      @@ -50,42 +47,47 @@ protected void setPrintProcessed(boolean shouldPrintProcessed) {
           }
       
           protected void testXML(Module instance, String testFile) {
      -        testXML(instance, testFile, true);
      +        testHTML(instance, testFile, true);
           }
       
      -    protected void testXML(Module instance, String testFile, boolean testIdempotence) {
      -        final InputStream processed = getProcessed(instance, testFile, shouldPrintProcessed);
      -        final InputStream canonical = getCanonical(testFile);
      -        XMLUnit.setIgnoreWhitespace(true);
      +    protected void testHTML(Module instance, String testFile, boolean testIdempotence) {
               try {
      -            new XMLTestCase() {
      -            }.assertXMLEqual(getReader(canonical), getReader(processed));
      -        } catch (SAXException ex) {
      -            LOGGER.log(Level.SEVERE, "cannot compare XML streams", ex);
      -        } catch (IOException ex) {
      -            LOGGER.log(Level.SEVERE, "problem with streams", ex);
      +            final String processed = new String(getProcessed(instance, testFile, shouldPrintProcessed).readAllBytes(),
      +                    StandardCharsets.UTF_8);
      +            final String canonical = new String(getCanonical(testFile).readAllBytes(), StandardCharsets.UTF_8);
      +
      +            assertEquals(normalize(canonical), normalize(processed));
      +        } catch (IOException e) {
      +
               }
      +
               if (testIdempotence) {
                   testIdempotence(instance, testFile);
               }
           }
       
           protected void testIdempotence(Module instance, String testFile) {
      -        final InputStream processed = getProcessed(instance, testFile, false);
      -        final InputStream processedTwice = getProcessed(
      -                instance, getProcessed(instance, testFile, false), false);
               try {
      -            new XMLTestCase() {
      -            }.assertXMLEqual(getReader(processed), getReader(processedTwice));
      -        } catch (SAXException ex) {
      -            LOGGER.log(Level.SEVERE, "cannot compare XML streams", ex);
      -        } catch (IOException ex) {
      -            LOGGER.log(Level.SEVERE, "problem with streams", ex);
      +            final String processed = new String(getProcessed(instance, testFile, false).readAllBytes(),
      +                    StandardCharsets.UTF_8);
      +            final String processedTwice = new String(
      +                    getProcessed(instance, getProcessed(instance, testFile, false), false).readAllBytes(),
      +                    StandardCharsets.UTF_8);
      +
      +            assertEquals(normalize(processed), normalize(processedTwice));
      +        } catch (IOException e) {
      +
               }
           }
       
      +    private static String normalize(String original) {
      +        return original.replaceAll("(^\\s+)|(\\s*\n+\\s+)", "") // remove whitespaces at line start & newlines
      +                .replaceAll("(>)(\\s+)(<)", "$1$3") // remove white space between tags
      +                .toLowerCase();
      +    }
      +
           private InputStream getProcessed(Module instance, String testFile, boolean shouldPrint) {
      -        InputStream resourceStream = this.getClass().getResourceAsStream(testFile + ".original.xml");
      +        InputStream resourceStream = this.getClass().getResourceAsStream(testFile + ".original.html");
               return getProcessed(instance, resourceStream, shouldPrint);
           }
       
      @@ -93,7 +95,7 @@ private InputStream getProcessed(Module instance, String testFile, boolean shoul
            * Get input processed by specified module.
            *
            * @param instance a configured instance of the tested module
      -     * @param in input stream with original XML document
      +     * @param in       input stream with original XML document
            * @return input stream with processed input
            */
           private InputStream getProcessed(Module instance, InputStream in, boolean shouldPrint) {
      @@ -120,16 +122,12 @@ private InputStream getProcessed(StreamModule instance, InputStream in, boolean
           }
       
           private InputStream getProcessed(DOMModule instance, InputStream in, boolean shouldPrint) {
      -        SAXBuilder builder = Settings.setupSAXBuilder();
               Document doc;
      -        XMLOutputter serializer = new XMLOutputter();
               ByteArrayOutputStream output = new ByteArrayOutputStream();
               try {
      -            doc = builder.build(in);
      +            doc = Jsoup.parse(in, null, "");
                   instance.execute(doc);
      -            serializer.output(doc, output);
      -        } catch (JDOMException ex) {
      -            LOGGER.log(Level.SEVERE, "cannot build document", ex);
      +            output.write(doc.html().getBytes("UTF-8"));
               } catch (IOException ex) {
                   LOGGER.log(Level.SEVERE, "cannot convert between stream and DOM", ex);
               } catch (ModuleException ex) {
      @@ -142,11 +140,7 @@ private InputStream getProcessed(DOMModule instance, InputStream in, boolean sho
           }
       
           private InputStream getCanonical(String testFile) {
      -        return this.getClass().getResourceAsStream(testFile + ".canonical.xml");
      -    }
      -
      -    private InputStreamReader getReader(InputStream inputStream) {
      -        return new InputStreamReader(inputStream);
      +        return this.getClass().getResourceAsStream(testFile + ".canonical.html");
           }
       
           private InputStream getInputStream(ByteArrayOutputStream output) {
      diff --git a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java
      index efbf92a..33dbcb8 100644
      --- a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java
      +++ b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest.java
      @@ -41,6 +41,7 @@ public static void setUpBeforeAll() {
               DEFAULT_INSTANCE.setProperty("keepAttributes.interval", "closure");
               DEFAULT_INSTANCE.setProperty("keepAttributes.declare", "nargs occurrence");
               DEFAULT_INSTANCE.setProperty("keepAttributes.mfenced", "open close");
      +        DEFAULT_INSTANCE.setProperty("keepAttributes.math", "xmlns");
           }
       
           @Test
      diff --git a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ModuleTestResources.java b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ModuleTestResources.java
      index 5c89fd7..248b417 100644
      --- a/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ModuleTestResources.java
      +++ b/src/test/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ModuleTestResources.java
      @@ -4,7 +4,7 @@
       import java.util.Iterator;
       
       /**
      - * Class gives access to all *.original.xml test resources.
      + * Class gives access to all *.original.html test resources.
        */
       public class ModuleTestResources {
       
      @@ -32,46 +32,47 @@ public void remove() {
            * Test resources relative to this class package.
            */
           private static final String[] TEST_RESOURCES = {
      -        "ElementMinimizerTest/attributes.original.xml",
      -        "ElementMinimizerTest/comments.original.xml",
      -        "ElementMinimizerTest/mfrac.original.xml",
      -        "ElementMinimizerTest/mphantom.original.xml",
      -        "FunctionNormalizerTest/function2.original.xml",
      -        "FunctionNormalizerTest/function3.original.xml",
      -        "FunctionNormalizerTest/function.original.xml",
      -        "FunctionNormalizerTest/sin.original.xml",
      -        "MfencedReplacerTest/blank-separators.original.xml",
      -        "MfencedReplacerTest/interval-configured.original.xml",
      -        "MfencedReplacerTest/interval.original.xml",
      -        "MfencedReplacerTest/nested.original.xml",
      -        "MfencedReplacerTest/no-children.original.xml",
      -        "MfencedReplacerTest/sequence-separators.original.xml",
      -        "MrowNormalizerTest/configured.original.xml",
      -        "MrowNormalizerTest/frac.original.xml",
      -        "MrowNormalizerTest/interval.original.xml",
      -        "MrowNormalizerTest/mixed1.original.xml",
      -        "MrowNormalizerTest/mixed2.original.xml",
      -        "MrowNormalizerTest/mixed3.original.xml",
      -        "MrowNormalizerTest/mixed4.original.xml",
      -        "MrowNormalizerTest/parentheses1.original.xml",
      -        "MrowNormalizerTest/parentheses2.original.xml",
      -        "MrowNormalizerTest/parentheses3.original.xml",
      -        "MrowNormalizerTest/parentheses4.original.xml",
      -        "MrowNormalizerTest/parentheses5.original.xml",
      -        "MrowNormalizerTest/sqrt.original.xml",
      -        "MrowNormalizerTest/tuple.original.xml",
      -        "OperatorNormalizerTest/identifier-replacement.original.xml",
      -        "OperatorNormalizerTest/multiplication-blank.original.xml",
      -        "OperatorNormalizerTest/multiplication-cdot.original.xml",
      -        "OperatorNormalizerTest/operator2identifier.original.xml",
      -        "OperatorNormalizerTest/operator-unification.original.xml",
      -        "OperatorNormalizerTest/unicode.original.xml",
      -        "ScriptNormalizerTest/complexsubsup.original.xml",
      -        "ScriptNormalizerTest/invalid-scripts.original.xml",
      -        "ScriptNormalizerTest/nested-sub-sup.original.xml",
      -        "ScriptNormalizerTest/sub-sup.original.xml",
      -        "ScriptNormalizerTest/subsup.original.xml",
      -        "ScriptNormalizerTest/underover.original.xml"
      +            "ElementMinimizerTest/attributes.original.html",
      +            "ElementMinimizerTest/comments.original.html",
      +            "ElementMinimizerTest/mfrac.original.html",
      +            "ElementMinimizerTest/mglyph.original.html",
      +            "ElementMinimizerTest/mphantom.original.html",
      +            "FunctionNormalizerTest/function2.original.html",
      +            "FunctionNormalizerTest/function3.original.html",
      +            "FunctionNormalizerTest/function.original.html",
      +            "FunctionNormalizerTest/sin.original.html",
      +            "MfencedReplacerTest/blank-separators.original.html",
      +            "MfencedReplacerTest/interval-configured.original.html",
      +            "MfencedReplacerTest/interval.original.html",
      +            "MfencedReplacerTest/nested.original.html",
      +            "MfencedReplacerTest/no-children.original.html",
      +            "MfencedReplacerTest/sequence-separators.original.html",
      +            "MrowNormalizerTest/configured.original.html",
      +            "MrowNormalizerTest/frac.original.html",
      +            "MrowNormalizerTest/interval.original.html",
      +            "MrowNormalizerTest/mixed1.original.html",
      +            "MrowNormalizerTest/mixed2.original.html",
      +            "MrowNormalizerTest/mixed3.original.html",
      +            "MrowNormalizerTest/mixed4.original.html",
      +            "MrowNormalizerTest/parentheses1.original.html",
      +            "MrowNormalizerTest/parentheses2.original.html",
      +            "MrowNormalizerTest/parentheses3.original.html",
      +            "MrowNormalizerTest/parentheses4.original.html",
      +            "MrowNormalizerTest/parentheses5.original.html",
      +            "MrowNormalizerTest/sqrt.original.html",
      +            "MrowNormalizerTest/tuple.original.html",
      +            "OperatorNormalizerTest/identifier-replacement.original.html",
      +            "OperatorNormalizerTest/multiplication-blank.original.html",
      +            "OperatorNormalizerTest/multiplication-cdot.original.html",
      +            "OperatorNormalizerTest/operator2identifier.original.html",
      +            "OperatorNormalizerTest/operator-unification.original.html",
      +            "OperatorNormalizerTest/unicode.original.html",
      +            "ScriptNormalizerTest/complexsubsup.original.html",
      +            "ScriptNormalizerTest/invalid-scripts.original.html",
      +            "ScriptNormalizerTest/nested-sub-sup.original.html",
      +            "ScriptNormalizerTest/sub-sup.original.html",
      +            "ScriptNormalizerTest/subsup.original.html",
      +            "ScriptNormalizerTest/underover.original.html"
           };
       
           public static Iterable getAllTestResources() {
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.html
      new file mode 100644
      index 0000000..c3bee6e
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                b
      +            
      +            =
      +            
      +                a
      +                b
      +              
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.xml
      deleted file mode 100644
      index 2efb9d5..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.canonical.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -         a 
      -         b 
      -    
      -     = 
      -    
      -         a 
      -         b 
      -      
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.html
      new file mode 100644
      index 0000000..e1948bf
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                b
      +            
      +            =
      +            
      +                a
      +                b
      +              
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.xml
      deleted file mode 100644
      index 3785c0a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/attributes.original.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -         a 
      -         b 
      -    
      -     = 
      -    
      -         a 
      -         b 
      -      
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.html
      new file mode 100644
      index 0000000..d5a45d8
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    +
      +                    z
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.xml
      deleted file mode 100644
      index 21e2e92..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.canonical.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        
      -             x 
      -             + 
      -             z 
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.html
      new file mode 100644
      index 0000000..33c4c2d
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    
      +                    +
      +                    z
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.xml
      deleted file mode 100644
      index 87575ce..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/comments.original.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    
      -        
      -             x 
      -            
      -             + 
      -             z 
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.html
      new file mode 100644
      index 0000000..0b37928
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                b
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.xml
      deleted file mode 100644
      index 1410ef2..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.canonical.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -         a 
      -         b 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.html
      new file mode 100644
      index 0000000..b921d1c
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                b
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.xml
      deleted file mode 100644
      index 96a6215..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mfrac.original.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -         a 
      -         b 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.html
      new file mode 100644
      index 0000000..c107624
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                num1
      +                plus
      +                num2
      +                eqls
      +                rslt
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml
      deleted file mode 100644
      index 20bd9c1..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.canonical.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        num1
      -        plus
      -        num2
      -        eqls
      -        rslt
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.html
      new file mode 100644
      index 0000000..1d12849
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +		
      +			
      +				
      +				
      +				
      +				
      +				
      +			
      +		
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml
      deleted file mode 100644
      index a1ebe57..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mglyph.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -	
      -		
      -		
      -		
      -		
      -		
      -	
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.html
      new file mode 100644
      index 0000000..5525d2b
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.html
      @@ -0,0 +1,22 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    +
      +                    y
      +                    +
      +                    z
      +                
      +                
      +                    x
      +                    +
      +                    z
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.xml
      deleted file mode 100644
      index d3ab594..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.canonical.xml
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -
      -
      -    
      -        
      -             x 
      -             + 
      -             y 
      -             + 
      -             z 
      -        
      -        
      -             x 
      -             + 
      -             z 
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.html
      new file mode 100644
      index 0000000..8a138dc
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.html
      @@ -0,0 +1,26 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    +
      +                    y
      +                    +
      +                    z
      +                
      +                
      +                    x
      +                    
      +                        +
      +                        y
      +                    
      +                    +
      +                    z
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.xml
      deleted file mode 100644
      index 3018c73..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizerTest/mphantom.original.xml
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -
      -
      -    
      -        
      -             x 
      -             + 
      -             y 
      -             + 
      -             z 
      -        
      -        
      -             x 
      -            
      -                 + 
      -                 y 
      -            
      -             + 
      -             z 
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.html
      new file mode 100644
      index 0000000..4e56629
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.html
      @@ -0,0 +1,14 @@
      +
      +    
      +    
      +    
      +        
      +            f
      +            
      +                (
      +                x
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.xml
      deleted file mode 100644
      index 6a8fdc8..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -    f
      -    
      -        (
      -        x
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.html
      new file mode 100644
      index 0000000..4b0cde1
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            f
      +            
      +            
      +                (
      +                x
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.xml
      deleted file mode 100644
      index 1e6698f..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    f
      -    
      -    
      -        (
      -        x
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.html
      new file mode 100644
      index 0000000..2fe2ff4
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.html
      @@ -0,0 +1,24 @@
      +
      +    
      +    
      +    
      +        
      +            f
      +            
      +                (
      +                (
      +                a
      +                +
      +                b
      +                )
      +                /
      +                (
      +                c
      +                -
      +                d
      +                )
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.xml
      deleted file mode 100644
      index 782e0d1..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.canonical.xml
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -
      -
      -    f
      -    
      -        (
      -        (
      -        a
      -        +
      -        b
      -        )
      -        /
      -        (
      -        c
      -        -
      -        d
      -        )
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.html
      new file mode 100644
      index 0000000..3d54d31
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.html
      @@ -0,0 +1,23 @@
      +
      +    
      +    
      +    
      +        
      +            f
      +            
      +            
      +                (
      +                a
      +                +
      +                b
      +                )
      +                /
      +                (
      +                c
      +                -
      +                d
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.xml
      deleted file mode 100644
      index ae0fd29..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function2.original.xml
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -
      -
      -    f
      -    
      -    
      -        (
      -        a
      -        +
      -        b
      -        )
      -        /
      -        (
      -        c
      -        -
      -        d
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.html
      new file mode 100644
      index 0000000..edc456e
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.html
      @@ -0,0 +1,18 @@
      +
      +    
      +    
      +    
      +        
      +            f
      +            
      +                (
      +                a
      +                +
      +                b
      +                )
      +            
      +            +
      +            c
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.xml
      deleted file mode 100644
      index b8f3afe..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.canonical.xml
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -
      -
      -    f
      -    
      -        (
      -        a
      -        +
      -        b
      -        )
      -    
      -    +
      -    c
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.html
      new file mode 100644
      index 0000000..f71b016
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            f
      +            
      +             ( 
      +            a
      +            +
      +            b
      +             ) 
      +            +
      +            c
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.xml
      deleted file mode 100644
      index 629ab21..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/function3.original.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    f
      -    
      -     ( 
      -    a
      -    +
      -    b
      -     ) 
      -    +
      -    c
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.html
      new file mode 100644
      index 0000000..93937e4
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.html
      @@ -0,0 +1,14 @@
      +
      +    
      +    
      +    
      +        
      +            sin
      +            
      +                (
      +                x
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.xml
      deleted file mode 100644
      index a5dc1d2..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -    sin
      -    
      -        (
      -        x
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.html
      new file mode 100644
      index 0000000..12193b1
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.html
      @@ -0,0 +1,11 @@
      +
      +    
      +    
      +    
      +        
      +            sin
      +            
      +            x
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.xml
      deleted file mode 100644
      index a21c13b..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/FunctionNormalizerTest/sin.original.xml
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -
      -
      -    sin
      -    
      -    x
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.html
      new file mode 100644
      index 0000000..80ac4a9
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                (
      +                
      +                    x
      +                    y
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.xml
      deleted file mode 100644
      index 4398f81..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.canonical.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -
      -
      -    
      -        (
      -        
      -            x
      -            y
      -        
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.html
      new file mode 100644
      index 0000000..48e19a9
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +             
      +                x
      +                y
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.xml
      deleted file mode 100644
      index 15150d4..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/blank-separators.original.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -     
      -        x
      -        y
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.html
      new file mode 100644
      index 0000000..ebec268
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            [[
      +            
      +                x
      +                ;
      +                y
      +            
      +            ]]
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.xml
      deleted file mode 100644
      index 49cf5e9..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.canonical.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -     [[ 
      -    
      -         x 
      -         ; 
      -         y 
      -    
      -     ]] 
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.html
      new file mode 100644
      index 0000000..0ce275e
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                x
      +                y
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.xml
      deleted file mode 100644
      index 86834a8..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval-configured.original.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -         x 
      -         y 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.html
      new file mode 100644
      index 0000000..8a03102
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                [
      +                
      +                    x
      +                    ,
      +                    y
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.xml
      deleted file mode 100644
      index d599eab..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.canonical.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -         [ 
      -        
      -             x 
      -             , 
      -             y 
      -        
      -         ) 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.html
      new file mode 100644
      index 0000000..8b58860
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                x
      +                y
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.xml
      deleted file mode 100644
      index f5cbeb3..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/interval.original.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -         x 
      -         y 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.html
      new file mode 100644
      index 0000000..2bba507
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.html
      @@ -0,0 +1,27 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                (
      +                
      +                    x
      +                    ,
      +                    
      +                        [:
      +                        
      +                            y
      +                            ,
      +                            z
      +                        
      +                        :]
      +                    
      +                    ,
      +                    1
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.xml
      deleted file mode 100644
      index e108076..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.canonical.xml
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -
      -
      -    
      -        (
      -        
      -            x
      -            ,
      -            
      -                [:
      -                
      -                    y
      -                    ,
      -                    z
      -                
      -                :]
      -            
      -            ,
      -            1
      -        
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.html
      new file mode 100644
      index 0000000..f5bf98b
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                 x 
      +                
      +                    y
      +                    z
      +                
      +                1
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.xml
      deleted file mode 100644
      index a4db0b7..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/nested.original.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -
      -
      -    
      -         x 
      -        
      -            y
      -            z
      -        
      -        1
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.html
      new file mode 100644
      index 0000000..a5a5038
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                :
      +                ?
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.xml
      deleted file mode 100644
      index 56a813b..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.canonical.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -        :
      -        ?
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.html
      new file mode 100644
      index 0000000..2c99382
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.html
      @@ -0,0 +1,10 @@
      +
      +    
      +    
      +    
      +        
      +            
      +             
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.xml
      deleted file mode 100644
      index 5105887..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/no-children.original.xml
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -
      -
      -    
      -     
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.html
      new file mode 100644
      index 0000000..551b627
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.html
      @@ -0,0 +1,23 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    (
      +                    
      +                        x
      +                        ;
      +                        y
      +                        :
      +                        1
      +                    
      +                    ]
      +                
      +                +
      +                z
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.xml
      deleted file mode 100644
      index 378e2ea..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.canonical.xml
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -
      -
      -    
      -        
      -            (
      -            
      -                x
      -                ;
      -                y
      -                :
      -                1
      -            
      -            ]
      -        
      -        +
      -        z
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.html
      new file mode 100644
      index 0000000..6b338c7
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +              
      +                 
      +                    x
      +                    y
      +                    1 
      +                
      +                +
      +                z
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.xml
      deleted file mode 100644
      index 7abb42a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MfencedReplacerTest/sequence-separators.original.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -      
      -         
      -            x
      -            y
      -            1 
      -        
      -        +
      -        z
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.html
      new file mode 100644
      index 0000000..962305c
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                left
      +                
      +                    x
      +                    ,
      +                    y
      +                
      +                right
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.xml
      deleted file mode 100644
      index 0c0f33b..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.canonical.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -         left 
      -        
      -             x 
      -             , 
      -             y 
      -        
      -         right 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.html
      new file mode 100644
      index 0000000..a8326d0
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            left
      +            x
      +            ,
      +            y
      +            right
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.xml
      deleted file mode 100644
      index 0a9616a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/configured.original.xml
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -
      -
      -     left 
      -     x 
      -     , 
      -     y 
      -     right 
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.html
      new file mode 100644
      index 0000000..1669adc
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                b
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.xml
      deleted file mode 100644
      index 5049855..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.canonical.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -        a
      -        b
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.html
      new file mode 100644
      index 0000000..c5ddef0
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.html
      @@ -0,0 +1,14 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    a
      +                
      +                b
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.xml
      deleted file mode 100644
      index e191f2d..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/frac.original.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -    
      -        
      -            a
      -        
      -        b
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.html
      new file mode 100644
      index 0000000..4d3f400
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                [
      +                
      +                    0
      +                    ,
      +                    100
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.xml
      deleted file mode 100644
      index dd46e34..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.canonical.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -        [
      -        
      -            0
      -            ,
      -            100
      -        
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.html
      new file mode 100644
      index 0000000..69ae2f7
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                [
      +                0
      +                ,
      +                100
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.xml
      deleted file mode 100644
      index 2577a9a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/interval.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        [
      -        0
      -        ,
      -        100
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.html
      new file mode 100644
      index 0000000..5360230
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            1
      +            +
      +            
      +                a
      +                n
      +                
      +                    x
      +                    +
      +                    1
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.xml
      deleted file mode 100644
      index 7145ce7..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.canonical.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    1
      -    +
      -    
      -        a
      -        n
      -        
      -            x
      -            +
      -            1
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.html
      new file mode 100644
      index 0000000..64c90ba
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.html
      @@ -0,0 +1,23 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    1
      +                
      +            
      +            +
      +            
      +                a
      +                n
      +                
      +                    x
      +                    +
      +                    1
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.xml
      deleted file mode 100644
      index ee84748..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed1.original.xml
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -
      -
      -    
      -        
      -            1
      -        
      -    
      -    +
      -    
      -        a
      -        n
      -        
      -            x
      -            +
      -            1
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.html
      new file mode 100644
      index 0000000..5682c06
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.html
      @@ -0,0 +1,20 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +            
      +            =
      +            
      +                
      +                    x
      +                    +
      +                    y
      +                
      +                z
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.xml
      deleted file mode 100644
      index 5085fed..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.canonical.xml
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -
      -
      -    
      -        a
      -    
      -    =
      -    
      -        
      -            x
      -            +
      -            y
      -        
      -        z
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.html
      new file mode 100644
      index 0000000..f50634a
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.html
      @@ -0,0 +1,22 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    a
      +                
      +            
      +            =
      +            
      +                
      +                    x
      +                    +
      +                    y
      +                
      +                z
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.xml
      deleted file mode 100644
      index a6a1918..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed2.original.xml
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -
      -
      -    
      -        
      -            a
      -        
      -    
      -    =
      -    
      -        
      -            x
      -            +
      -            y
      -        
      -        z
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.html
      new file mode 100644
      index 0000000..e6defec
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                2
      +                
      +                    a
      +                    +
      +                    b
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.xml
      deleted file mode 100644
      index 264da35..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.canonical.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -
      -
      -    
      -        2
      -        
      -            a
      -            +
      -            b
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.html
      new file mode 100644
      index 0000000..e187bac
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.html
      @@ -0,0 +1,20 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    2
      +                
      +                
      +                    
      +                        a
      +                    
      +                    +
      +                    b
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.xml
      deleted file mode 100644
      index 1c571a6..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed3.original.xml
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -
      -
      -    
      -        
      -            2
      -        
      -        
      -            
      -                a
      -            
      -            +
      -            b
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.html
      new file mode 100644
      index 0000000..14b3be7
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.html
      @@ -0,0 +1,18 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    a
      +                    
      +                        b
      +                        +
      +                        c
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.xml
      deleted file mode 100644
      index f64d9d8..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.canonical.xml
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -
      -
      -    
      -        
      -            a
      -            
      -                b
      -                +
      -                c
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.html
      new file mode 100644
      index 0000000..1158127
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.html
      @@ -0,0 +1,22 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    
      +                        
      +                            a
      +                        
      +                        
      +                            b
      +                            +
      +                            c
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.xml
      deleted file mode 100644
      index 68b2491..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/mixed4.original.xml
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -
      -
      -    
      -        
      -            
      -                
      -                    a
      -                
      -                
      -                    b
      -                    +
      -                    c
      -                
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.html
      new file mode 100644
      index 0000000..5ec338f
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                [
      +                
      +                    a
      +                    +
      +                    b
      +                
      +                ]
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.xml
      deleted file mode 100644
      index dd1950a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.canonical.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -        [
      -        
      -            a
      -            +
      -            b
      -        
      -        ]
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.html
      new file mode 100644
      index 0000000..5d8040b
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                [
      +                a
      +                +
      +                b
      +                ]
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.xml
      deleted file mode 100644
      index a1edd31..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses1.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        [
      -        a
      -        +
      -        b
      -        ]
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.html
      new file mode 100644
      index 0000000..a411996
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            x
      +            +
      +            
      +                (
      +                
      +                    y
      +                    +
      +                    z
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.xml
      deleted file mode 100644
      index f98372a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.canonical.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    x
      -    +
      -    
      -        (
      -        
      -            y
      -            +
      -            z
      -        
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.html
      new file mode 100644
      index 0000000..2a27c85
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                x
      +                +
      +                (
      +                y
      +                +
      +                z
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.xml
      deleted file mode 100644
      index 8a74d7a..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses2.original.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -        x
      -        +
      -        (
      -        y
      -        +
      -        z
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.html
      new file mode 100644
      index 0000000..c8191d5
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            a
      +            -
      +            
      +                (
      +                
      +                    b
      +                    +
      +                    c
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.xml
      deleted file mode 100644
      index 9687ab9..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.canonical.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    a
      -    -
      -    
      -        (
      -        
      -            b
      -            +
      -            c
      -        
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.html
      new file mode 100644
      index 0000000..2ccb1b0
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                -
      +                (
      +                
      +                    b
      +                    +
      +                    c
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.xml
      deleted file mode 100644
      index 33f91f1..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses3.original.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    
      -        a
      -        -
      -        (
      -        
      -            b
      -            +
      -            c
      -        
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.html
      new file mode 100644
      index 0000000..dfaee7d
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.html
      @@ -0,0 +1,27 @@
      +
      +    
      +    
      +    
      +        
      +            a
      +            -
      +            
      +                (
      +                
      +                    b
      +                    +
      +                    
      +                        (
      +                        
      +                            c
      +                            +
      +                            d
      +                        
      +                        )
      +                    
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.xml
      deleted file mode 100644
      index c7f6d48..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.canonical.xml
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -
      -
      -    a
      -    -
      -    
      -        (
      -        
      -            b
      -            +
      -            
      -                (
      -                
      -                    c
      -                    +
      -                    d
      -                
      -                )
      -            
      -        
      -        )
      -    
      -
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.html
      new file mode 100644
      index 0000000..bdb16dd
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.html
      @@ -0,0 +1,21 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                a
      +                -
      +                (
      +                b
      +                +
      +                (
      +                c
      +                +
      +                d
      +                )
      +                )
      +            
      +        
      +    
      +
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.xml
      deleted file mode 100644
      index dde0194..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses4.original.xml
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -
      -
      -    
      -        a
      -        -
      -        (
      -        b
      -        +
      -        (
      -        c
      -        +
      -        d
      -        )
      -        )
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.html
      new file mode 100644
      index 0000000..7cd179a
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                [
      +                
      +                    5
      +                
      +                ]
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.xml
      deleted file mode 100644
      index e742e48..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.canonical.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        [
      -        
      -            5
      -        
      -        ]
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.html
      new file mode 100644
      index 0000000..afe8129
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            [
      +            
      +                
      +                    5
      +                
      +            
      +            ]
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.xml
      deleted file mode 100644
      index 3ae5765..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/parentheses5.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    [
      -    
      -        
      -            5
      -        
      -    
      -    ]
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.html
      new file mode 100644
      index 0000000..704fd46
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                -
      +                1
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.xml
      deleted file mode 100644
      index 77653c4..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.canonical.xml
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -
      -
      -    
      -         - 
      -         1 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.html
      new file mode 100644
      index 0000000..c1a82c1
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.html
      @@ -0,0 +1,14 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    -
      +                    1
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.xml
      deleted file mode 100644
      index 91b3ff8..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/sqrt.original.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -    
      -        
      -             - 
      -             1 
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.html
      new file mode 100644
      index 0000000..be01123
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.html
      @@ -0,0 +1,17 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                (
      +                
      +                    x
      +                    ,
      +                    y
      +                
      +                )
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.xml
      deleted file mode 100644
      index 4f37ed6..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.canonical.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -    
      -         ( 
      -        
      -             x 
      -             , 
      -             y 
      -        
      -         ) 
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.html
      new file mode 100644
      index 0000000..8d8d02d
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            (
      +            
      +                x
      +                ,
      +                y
      +            
      +            )
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.xml
      deleted file mode 100644
      index 6fc38df..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/MrowNormalizerTest/tuple.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -     ( 
      -    
      -         x 
      -         , 
      -         y 
      -    
      -     ) 
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.html
      new file mode 100644
      index 0000000..32e50c3
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.html
      @@ -0,0 +1,22 @@
      +
      +    
      +    
      +    
      +        
      +            1
      +            ±
      +            
      +                (
      +                x
      +                /
      +                3
      +                -
      +                y
      +                +
      +                5
      +                )
      +            
      +            z
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.xml
      deleted file mode 100644
      index 2d0a565..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.canonical.xml
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -
      -
      -    1
      -    ±
      -    
      -        (
      -        x
      -        /
      -        3
      -        -
      -        y
      -        +
      -        5
      -        )
      -    
      -    z
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.html
      new file mode 100644
      index 0000000..427925a
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.html
      @@ -0,0 +1,23 @@
      +
      +    
      +    
      +    
      +        
      +            1
      +            +-
      +            
      +                (
      +                x
      +                :
      +                3
      +                -
      +                y
      +                +
      +                5
      +                )
      +            
      +            *
      +            z
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.xml
      deleted file mode 100644
      index 4861522..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/identifier-replacement.original.xml
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -
      -
      -    1
      -    +-
      -    
      -        (
      -        x
      -        :
      -        3
      -        -
      -        y
      -        +
      -        5
      -        )
      -    
      -    *
      -    z
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.html
      new file mode 100644
      index 0000000..2b37d50
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            2
      +            
      +            a
      +        
      +            b
      +        
      +            c
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.xml
      deleted file mode 100644
      index 39c62f9..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.canonical.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    2
      -    
      -    a
      -
      -    b
      -
      -    c
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.html
      new file mode 100644
      index 0000000..0cb484e
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            2
      +            
      +            
      +            a
      +            
      +            b
      +            
      +            c
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.xml
      deleted file mode 100644
      index cda9f84..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-blank.original.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -
      -
      -    2
      -    
      -    
      -    a
      -    
      -    b
      -    
      -    c
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.html
      new file mode 100644
      index 0000000..a0ba329
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            2
      +            
      +            a
      +            
      +            b
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.xml
      deleted file mode 100644
      index 18272cd..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.canonical.xml
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -
      -
      -    2
      -    
      -    a
      -    
      -    b
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.html
      new file mode 100644
      index 0000000..2c973a3
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            2
      +            
      +            a
      +            
      +            b
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.xml
      deleted file mode 100644
      index b06b555..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/multiplication-cdot.original.xml
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -
      -
      -    2
      -    
      -    a
      -    
      -    b
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.html
      new file mode 100644
      index 0000000..e82dfb9
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            1
      +            ±
      +            
      +                2
      +                /
      +                3
      +                -
      +                4
      +                +
      +                5
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.xml
      deleted file mode 100644
      index d617832..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.canonical.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    1
      -    ±
      -    
      -        2
      -        /
      -        3
      -        -
      -        4
      -        +
      -        5
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.html
      new file mode 100644
      index 0000000..ca995f9
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            1
      +            +-
      +            
      +                2
      +                :
      +                3
      +                ­
      +                4
      +                +
      +                5
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.xml
      deleted file mode 100644
      index d49efc6..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator-unification.original.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    1
      -    +-
      -    
      -        2
      -        :
      -        3
      -        ­
      -        4
      -        +
      -        5
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.html
      new file mode 100644
      index 0000000..82aa3dd
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            sin
      +            x
      +            
      +                10
      +                +
      +                log
      +                y
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.xml
      deleted file mode 100644
      index 702ec03..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.canonical.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -
      -
      -    sin
      -    x
      -    
      -        10
      -        +
      -        log
      -        y
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.html
      new file mode 100644
      index 0000000..ef0b961
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            sin
      +            x
      +            
      +                10
      +                +
      +                log
      +                y
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.xml
      deleted file mode 100644
      index 07211af..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/operator2identifier.original.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -
      -
      -    sin
      -    x
      -    
      -        10
      -        +
      -        log
      -        y
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.html
      new file mode 100644
      index 0000000..1ad0e95
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.html
      @@ -0,0 +1,12 @@
      +
      +    
      +    
      +    
      +        
      +            a
      +            b bb 
      +                A
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.xml
      deleted file mode 100644
      index 001c26e..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -    a
      -    b
      -    bb
      -    
      -        A
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.html
      new file mode 100644
      index 0000000..4fb1455
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.html
      @@ -0,0 +1,12 @@
      +
      +  
      +  
      +  
      +    
      +        
      +         𝘣𝖻 
      +            
      +        
      +    
      +  
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.xml
      deleted file mode 100644
      index 407b1d4..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/OperatorNormalizerTest/unicode.original.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -    
      -    
      -  𝘣𝖻
      -    
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.html
      new file mode 100644
      index 0000000..e8ee195
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.html
      @@ -0,0 +1,40 @@
      +
      +    
      +    
      +    
      +        
      +            a
      +            *
      +            
      +                (
      +                
      +                    
      +                        x
      +                        
      +                            y
      +                            0.95
      +                        
      +                    
      +                    2
      +                
      +                -
      +                z
      +                )
      +            
      +            -
      +            
      +                
      +                    b
      +                    
      +                        
      +                            a
      +                            1
      +                        
      +                        2
      +                    
      +                
      +                3
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.xml
      deleted file mode 100644
      index e839f02..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.canonical.xml
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -
      -
      -    a
      -    *
      -    
      -        (
      -        
      -            
      -                x
      -                
      -                    y
      -                    0.95
      -                
      -            
      -            2
      -        
      -        -
      -        z
      -        )
      -    
      -    -
      -    
      -        
      -            b
      -            
      -                
      -                    a
      -                    1
      -                
      -                2
      -            
      -        
      -        3
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.html
      new file mode 100644
      index 0000000..06cb859
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.html
      @@ -0,0 +1,34 @@
      +
      +    
      +    
      +    
      +        
      +            a
      +            *
      +            
      +                (
      +                
      +                    x
      +                    
      +                        y
      +                        0.95
      +                    
      +                    2
      +                
      +                -
      +                z
      +                )
      +            
      +            -
      +            
      +                b
      +                
      +                    a
      +                    1
      +                    2
      +                
      +                3
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.xml
      deleted file mode 100644
      index dc53db6..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/complexsubsup.original.xml
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -
      -
      -    a
      -    *
      -    
      -        (
      -        
      -            x
      -            
      -                y
      -                0.95
      -            
      -            2
      -        
      -        -
      -        z
      -        )
      -    
      -    -
      -    
      -        b
      -        
      -            a
      -            1
      -            2
      -        
      -        3
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.html
      new file mode 100644
      index 0000000..939ffd4
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.html
      @@ -0,0 +1,23 @@
      +
      +    
      +    
      +    
      +        
      +            
      +            
      +            
      +                
      +                    x
      +                
      +            
      +            
      +                3
      +            
      +            
      +            
      +                x
      +                2
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.xml
      deleted file mode 100644
      index 8a37f83..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.canonical.xml
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -
      -
      -    
      -    
      -    
      -        
      -            x
      -        
      -    
      -    
      -        3
      -    
      -    
      -    
      -        x
      -        2
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.html
      new file mode 100644
      index 0000000..939ffd4
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.html
      @@ -0,0 +1,23 @@
      +
      +    
      +    
      +    
      +        
      +            
      +            
      +            
      +                
      +                    x
      +                
      +            
      +            
      +                3
      +            
      +            
      +            
      +                x
      +                2
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.xml
      deleted file mode 100644
      index 8a37f83..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/invalid-scripts.original.xml
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -
      -
      -    
      -    
      -    
      -        
      -            x
      -        
      -    
      -    
      -        3
      -    
      -    
      -    
      -        x
      -        2
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.html
      new file mode 100644
      index 0000000..6931ed6
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.html
      @@ -0,0 +1,39 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    1
      +                
      +                
      +                    
      +                        
      +                            y
      +                            2
      +                        
      +                        3
      +                    
      +                
      +            
      +            
      +                
      +                    x
      +                    3
      +                
      +                0
      +            
      +            
      +                
      +                    
      +                        z
      +                        x
      +                    
      +                    4
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.xml
      deleted file mode 100644
      index 4c318fa..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.canonical.xml
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            1
      -        
      -        
      -            
      -                
      -                    y
      -                    2
      -                
      -                3
      -            
      -        
      -    
      -    
      -        
      -            x
      -            3
      -        
      -        0
      -    
      -    
      -        
      -            
      -                z
      -                x
      -            
      -            4
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.html
      new file mode 100644
      index 0000000..a7f7e5d
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.html
      @@ -0,0 +1,39 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    
      +                        
      +                            
      +                                y
      +                                3
      +                            
      +                            2
      +                        
      +                    
      +                
      +                1
      +            
      +            
      +                
      +                    x
      +                    3
      +                
      +                0
      +            
      +            
      +                
      +                    
      +                        z
      +                        4
      +                    
      +                    x
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.xml
      deleted file mode 100644
      index 300df37..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/nested-sub-sup.original.xml
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            
      -                
      -                    
      -                        y
      -                        3
      -                    
      -                    2
      -                
      -            
      -        
      -        1
      -    
      -    
      -        
      -            x
      -            3
      -        
      -        0
      -    
      -    
      -        
      -            
      -                z
      -                4
      -            
      -            x
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.html
      new file mode 100644
      index 0000000..4e2b565
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    1
      +                
      +                2
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.xml
      deleted file mode 100644
      index 3de22e2..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.canonical.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            1
      -        
      -        2
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.html
      new file mode 100644
      index 0000000..7c74982
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.html
      @@ -0,0 +1,15 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    2
      +                
      +                1
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.xml
      deleted file mode 100644
      index f9c3c52..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/sub-sup.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            2
      -        
      -        1
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.html
      new file mode 100644
      index 0000000..dd4fffc
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.html
      @@ -0,0 +1,20 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    1
      +                
      +                2
      +            
      +            
      +                +
      +                1
      +                2
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.xml
      deleted file mode 100644
      index 1bc8202..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.canonical.xml
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            1
      -        
      -        2
      -    
      -    
      -        +
      -        1
      -        2
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.html
      new file mode 100644
      index 0000000..3a5f341
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.html
      @@ -0,0 +1,18 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                x
      +                1
      +                2
      +            
      +            
      +                +
      +                1
      +                2
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.xml
      deleted file mode 100644
      index f7a3d8d..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/subsup.original.xml
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -
      -
      -    
      -        x
      -        1
      -        2
      -    
      -    
      -        +
      -        1
      -        2
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.html
      new file mode 100644
      index 0000000..e75b825
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    1
      +                
      +                2
      +            
      +            
      +                
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.xml
      deleted file mode 100644
      index 815a403..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.canonical.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            1
      -        
      -        2
      -    
      -    
      -        
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.html
      new file mode 100644
      index 0000000..4fdf675
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.html
      @@ -0,0 +1,19 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    x
      +                    1
      +                
      +                2
      +            
      +            
      +                
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.xml
      deleted file mode 100644
      index a8177ed..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/ScriptNormalizerTest/underover.original.xml
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -
      -
      -    
      -        
      -            x
      -            1
      -        
      -        2
      -    
      -    
      -        
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.html
      new file mode 100644
      index 0000000..9ac55ed
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                B
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.xml
      deleted file mode 100644
      index 89803e3..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -
      -    
      -        
      -        B
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.html
      new file mode 100644
      index 0000000..4fa26d1
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                B
      +                
      +                    
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.xml
      deleted file mode 100644
      index 075558f..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-no-namespace.original.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -
      -    
      -        
      -        B
      -        
      -            
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.html
      new file mode 100644
      index 0000000..b681767
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                B
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.xml
      deleted file mode 100644
      index 89a22d2..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -
      -    
      -        
      -        B
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.html
      new file mode 100644
      index 0000000..30ad465
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.html
      @@ -0,0 +1,16 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                B
      +                
      +                    
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.xml
      deleted file mode 100644
      index 1c53ad2..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-double-operator-with-namespace.original.xml
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -
      -
      -
      -    
      -        
      -        B
      -        
      -            
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.html
      new file mode 100644
      index 0000000..261ce08
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.html
      @@ -0,0 +1,70 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                1
      +                
      +                    
      +                    
      +                        
      +                        E
      +                        
      +                            
      +                            
      +                                
      +                                
      +                                    
      +                                    m
      +                                    
      +                                        superscript
      +                                        c
      +                                        2
      +                                    
      +                                
      +                                5
      +                            
      +                            3
      +                        
      +                    
      +                    
      +                        
      +                        
      +                            
      +                                superscript
      +                                
      +                                    subscript
      +                                    
      +                                    a
      +                                
      +                                b
      +                            
      +                            
      +                                
      +                                f
      +                                x
      +                                d
      +                                x
      +                            
      +                        
      +                        
      +                            
      +                            
      +                                
      +                                F
      +                                b
      +                            
      +                            
      +                                
      +                                F
      +                                a
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.xml
      deleted file mode 100644
      index 0b98dd7..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.canonical.xml
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -
      -
      -
      -    
      -        
      -        1
      -        
      -            
      -            
      -                
      -                E
      -                
      -                    
      -                    
      -                        
      -                        
      -                            
      -                            m
      -                            
      -                                superscript
      -                                c
      -                                2
      -                            
      -                        
      -                        5
      -                    
      -                    3
      -                
      -            
      -            
      -                
      -                
      -                    
      -                        superscript
      -                        
      -                            subscript
      -                            
      -                            a
      -                        
      -                        b
      -                    
      -                    
      -                        
      -                        f
      -                        x
      -                        d
      -                        x
      -                    
      -                
      -                
      -                    
      -                    
      -                        
      -                        F
      -                        b
      -                    
      -                    
      -                        
      -                        F
      -                        a
      -                    
      -                
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.html
      new file mode 100644
      index 0000000..8a550fa
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.html
      @@ -0,0 +1,76 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                
      +                    
      +                    1
      +                    
      +                        
      +                        
      +                            
      +                            
      +                                
      +                                E
      +                            
      +                            
      +                                
      +                                
      +                                    
      +                                    
      +                                        
      +                                        m
      +                                        
      +                                            superscript
      +                                            c
      +                                            2
      +                                        
      +                                    
      +                                    5
      +                                
      +                                3
      +                            
      +                        
      +                        
      +                            
      +                            
      +                                
      +                                    superscript
      +                                    
      +                                        subscript
      +                                        
      +                                        a
      +                                    
      +                                    b
      +                                
      +                                
      +                                    
      +                                    f
      +                                    x
      +                                    d
      +                                    x
      +                                
      +                            
      +                            
      +                                
      +                                
      +                                    
      +                                    F
      +                                    b
      +                                
      +                                
      +                                    
      +                                    F
      +                                    a
      +                                
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.xml
      deleted file mode 100644
      index e3a9f51..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-no-namespace.original.xml
      +++ /dev/null
      @@ -1,72 +0,0 @@
      -
      -
      -
      -    
      -        
      -        
      -            
      -            1
      -            
      -                
      -                
      -                    
      -                    
      -                        
      -                        E
      -                    
      -                    
      -                        
      -                        
      -                            
      -                            
      -                                
      -                                m
      -                                
      -                                    superscript
      -                                    c
      -                                    2
      -                                
      -                            
      -                            5
      -                        
      -                        3
      -                    
      -                
      -                
      -                    
      -                    
      -                        
      -                            superscript
      -                            
      -                                subscript
      -                                
      -                                a
      -                            
      -                            b
      -                        
      -                        
      -                            
      -                            f
      -                            x
      -                            d
      -                            x
      -                        
      -                    
      -                    
      -                        
      -                        
      -                            
      -                            F
      -                            b
      -                        
      -                        
      -                            
      -                            F
      -                            a
      -                        
      -                    
      -                
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.html
      new file mode 100644
      index 0000000..f5d9b3c
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.html
      @@ -0,0 +1,70 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                1
      +                
      +                    
      +                    
      +                        
      +                        E
      +                        
      +                            
      +                            
      +                                
      +                                
      +                                    
      +                                    m
      +                                    
      +                                        superscript
      +                                        c
      +                                        2
      +                                    
      +                                
      +                                5
      +                            
      +                            3
      +                        
      +                    
      +                    
      +                        
      +                        
      +                            
      +                                superscript
      +                                
      +                                    subscript
      +                                    
      +                                    a
      +                                
      +                                b
      +                            
      +                            
      +                                
      +                                f
      +                                x
      +                                d
      +                                x
      +                            
      +                        
      +                        
      +                            
      +                            
      +                                
      +                                F
      +                                b
      +                            
      +                            
      +                                
      +                                F
      +                                a
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.xml
      deleted file mode 100644
      index 3caf2a7..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.canonical.xml
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -
      -
      -
      -    
      -        
      -        1
      -        
      -            
      -            
      -                
      -                E
      -                
      -                    
      -                    
      -                        
      -                        
      -                            
      -                            m
      -                            
      -                                superscript
      -                                c
      -                                2
      -                            
      -                        
      -                        5
      -                    
      -                    3
      -                
      -            
      -            
      -                
      -                
      -                    
      -                        superscript
      -                        
      -                            subscript
      -                            
      -                            a
      -                        
      -                        b
      -                    
      -                    
      -                        
      -                        f
      -                        x
      -                        d
      -                        x
      -                    
      -                
      -                
      -                    
      -                    
      -                        
      -                        F
      -                        b
      -                    
      -                    
      -                        
      -                        F
      -                        a
      -                    
      -                
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.html
      new file mode 100644
      index 0000000..9c536aa
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.html
      @@ -0,0 +1,76 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                
      +                    
      +                    1
      +                    
      +                        
      +                        
      +                            
      +                            
      +                                
      +                                E
      +                            
      +                            
      +                                
      +                                
      +                                    
      +                                    
      +                                        
      +                                        m
      +                                        
      +                                            superscript
      +                                            c
      +                                            2
      +                                        
      +                                    
      +                                    5
      +                                
      +                                3
      +                            
      +                        
      +                        
      +                            
      +                            
      +                                
      +                                    superscript
      +                                    
      +                                        subscript
      +                                        
      +                                        a
      +                                    
      +                                    b
      +                                
      +                                
      +                                    
      +                                    f
      +                                    x
      +                                    d
      +                                    x
      +                                
      +                            
      +                            
      +                                
      +                                
      +                                    
      +                                    F
      +                                    b
      +                                
      +                                
      +                                    
      +                                    F
      +                                    a
      +                                
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.xml
      deleted file mode 100644
      index f454bd4..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/cmathml-with-namespace.original.xml
      +++ /dev/null
      @@ -1,72 +0,0 @@
      -
      -
      -
      -    
      -        
      -        
      -            
      -            1
      -            
      -                
      -                
      -                    
      -                    
      -                        
      -                        E
      -                    
      -                    
      -                        
      -                        
      -                            
      -                            
      -                                
      -                                m
      -                                
      -                                    superscript
      -                                    c
      -                                    2
      -                                
      -                            
      -                            5
      -                        
      -                        3
      -                    
      -                
      -                
      -                    
      -                    
      -                        
      -                            superscript
      -                            
      -                                subscript
      -                                
      -                                a
      -                            
      -                            b
      -                        
      -                        
      -                            
      -                            f
      -                            x
      -                            d
      -                            x
      -                        
      -                    
      -                    
      -                        
      -                        
      -                            
      -                            F
      -                            b
      -                        
      -                        
      -                            
      -                            F
      -                            a
      -                        
      -                    
      -                
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.html
      new file mode 100644
      index 0000000..982753c
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                B
      +                <
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.xml
      deleted file mode 100644
      index e334e28..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -
      -    
      -        B
      -        <
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.html
      new file mode 100644
      index 0000000..c3de897
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.html
      @@ -0,0 +1,14 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                B
      +                <
      +                +
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.xml
      deleted file mode 100644
      index bc3a31c..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-no-namespace.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -
      -    
      -        B
      -        <
      -        +
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.html
      new file mode 100644
      index 0000000..739c94d
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.html
      @@ -0,0 +1,13 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                B
      +                <
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.xml
      deleted file mode 100644
      index 825cad0..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.canonical.xml
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -
      -
      -
      -    
      -        B
      -        <
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.html
      new file mode 100644
      index 0000000..7982aee
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.html
      @@ -0,0 +1,14 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                B
      +                <
      +                +
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.xml
      deleted file mode 100644
      index 3ee5569..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-double-operator-with-namespace.original.xml
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -
      -
      -    
      -        B
      -        <
      -        +
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.html
      new file mode 100644
      index 0000000..d1a301f
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.html
      @@ -0,0 +1,84 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    1
      +                    
      +                    
      +                        
      +                            
      +                                E
      +                            
      +                            =
      +                            
      +                                
      +                                    m
      +                                    
      +                                    
      +                                        c
      +                                        2
      +                                    
      +                                
      +                                +
      +                                5
      +                                -
      +                                3
      +                            
      +                        
      +                        
      +                            
      +                                
      +                                    
      +                                        
      +                                        a
      +                                        b
      +                                    
      +                                
      +                                
      +                                    f
      +                                    
      +                                    
      +                                        
      +                                            (
      +                                            x
      +                                            )
      +                                        
      +                                    
      +                                    
      +                                    d
      +                                    
      +                                    x
      +                                
      +                            
      +                            =
      +                            
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        b
      +                                        )
      +                                    
      +                                
      +                                -
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        a
      +                                        )
      +                                    
      +                                
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.xml
      deleted file mode 100644
      index 1f80976..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.canonical.xml
      +++ /dev/null
      @@ -1,80 +0,0 @@
      -
      -
      -
      -    
      -        
      -            1
      -            
      -            
      -                
      -                    
      -                        E
      -                    
      -                    =
      -                    
      -                        
      -                            m
      -                            
      -                            
      -                                c
      -                                2
      -                            
      -                        
      -                        +
      -                        5
      -                        -
      -                        3
      -                    
      -                
      -                
      -                    
      -                        
      -                            
      -                                
      -                                a
      -                                b
      -                            
      -                        
      -                        
      -                            f
      -                            
      -                            
      -                                
      -                                    (
      -                                    x
      -                                    )
      -                                
      -                            
      -                            
      -                            d
      -                            
      -                            x
      -                        
      -                    
      -                    =
      -                    
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                b
      -                                )
      -                            
      -                        
      -                        -
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                a
      -                                )
      -                            
      -                        
      -                    
      -                
      -            
      -        
      -    
      -
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.html
      new file mode 100644
      index 0000000..67305a9
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.html
      @@ -0,0 +1,86 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                +
      +                
      +                    1
      +                    
      +                    
      +                        
      +                            
      +                                -
      +                                E
      +                            
      +                            =
      +                            
      +                                
      +                                    m
      +                                    
      +                                    
      +                                        c
      +                                        2
      +                                    
      +                                
      +                                +
      +                                5
      +                                -
      +                                3
      +                            
      +                        
      +                        
      +                            
      +                                
      +                                    
      +                                        
      +                                        a
      +                                        b
      +                                    
      +                                
      +                                
      +                                    f
      +                                    
      +                                    
      +                                        
      +                                            (
      +                                            x
      +                                            )
      +                                        
      +                                    
      +                                    
      +                                    d
      +                                    
      +                                    x
      +                                
      +                            
      +                            =
      +                            
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        b
      +                                        )
      +                                    
      +                                
      +                                -
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        a
      +                                        )
      +                                    
      +                                
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.xml
      deleted file mode 100644
      index 2cdadb4..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-no-namespace.original.xml
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -
      -
      -
      -    
      -        +
      -        
      -            1
      -            
      -            
      -                
      -                    
      -                        -
      -                        E
      -                    
      -                    =
      -                    
      -                        
      -                            m
      -                            
      -                            
      -                                c
      -                                2
      -                            
      -                        
      -                        +
      -                        5
      -                        -
      -                        3
      -                    
      -                
      -                
      -                    
      -                        
      -                            
      -                                
      -                                a
      -                                b
      -                            
      -                        
      -                        
      -                            f
      -                            
      -                            
      -                                
      -                                    (
      -                                    x
      -                                    )
      -                                
      -                            
      -                            
      -                            d
      -                            
      -                            x
      -                        
      -                    
      -                    =
      -                    
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                b
      -                                )
      -                            
      -                        
      -                        -
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                a
      -                                )
      -                            
      -                        
      -                    
      -                
      -            
      -        
      -    
      -
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.html
      new file mode 100644
      index 0000000..00be2fc
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.html
      @@ -0,0 +1,84 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                
      +                    1
      +                    
      +                    
      +                        
      +                            
      +                                E
      +                            
      +                            =
      +                            
      +                                
      +                                    m
      +                                    
      +                                    
      +                                        c
      +                                        2
      +                                    
      +                                
      +                                +
      +                                5
      +                                -
      +                                3
      +                            
      +                        
      +                        
      +                            
      +                                
      +                                    
      +                                        
      +                                        a
      +                                        b
      +                                    
      +                                
      +                                
      +                                    f
      +                                    
      +                                    
      +                                        
      +                                            (
      +                                            x
      +                                            )
      +                                        
      +                                    
      +                                    
      +                                    d
      +                                    
      +                                    x
      +                                
      +                            
      +                            =
      +                            
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        b
      +                                        )
      +                                    
      +                                
      +                                -
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        a
      +                                        )
      +                                    
      +                                
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.xml
      deleted file mode 100644
      index 3b09139..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.canonical.xml
      +++ /dev/null
      @@ -1,80 +0,0 @@
      -
      -
      -
      -    
      -        
      -            1
      -            
      -            
      -                
      -                    
      -                        E
      -                    
      -                    =
      -                    
      -                        
      -                            m
      -                            
      -                            
      -                                c
      -                                2
      -                            
      -                        
      -                        +
      -                        5
      -                        -
      -                        3
      -                    
      -                
      -                
      -                    
      -                        
      -                            
      -                                
      -                                a
      -                                b
      -                            
      -                        
      -                        
      -                            f
      -                            
      -                            
      -                                
      -                                    (
      -                                    x
      -                                    )
      -                                
      -                            
      -                            
      -                            d
      -                            
      -                            x
      -                        
      -                    
      -                    =
      -                    
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                b
      -                                )
      -                            
      -                        
      -                        -
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                a
      -                                )
      -                            
      -                        
      -                    
      -                
      -            
      -        
      -    
      -
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.html b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.html
      new file mode 100644
      index 0000000..4663cd8
      --- /dev/null
      +++ b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.html
      @@ -0,0 +1,86 @@
      +
      +    
      +    
      +    
      +        
      +            
      +                +
      +                
      +                    1
      +                    
      +                    
      +                        
      +                            
      +                                -
      +                                E
      +                            
      +                            =
      +                            
      +                                
      +                                    m
      +                                    
      +                                    
      +                                        c
      +                                        2
      +                                    
      +                                
      +                                +
      +                                5
      +                                -
      +                                3
      +                            
      +                        
      +                        
      +                            
      +                                
      +                                    
      +                                        
      +                                        a
      +                                        b
      +                                    
      +                                
      +                                
      +                                    f
      +                                    
      +                                    
      +                                        
      +                                            (
      +                                            x
      +                                            )
      +                                        
      +                                    
      +                                    
      +                                    d
      +                                    
      +                                    x
      +                                
      +                            
      +                            =
      +                            
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        b
      +                                        )
      +                                    
      +                                
      +                                -
      +                                
      +                                    F
      +                                    
      +                                    
      +                                        (
      +                                        a
      +                                        )
      +                                    
      +                                
      +                            
      +                        
      +                    
      +                
      +            
      +        
      +    
      +
      \ No newline at end of file
      diff --git a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.xml b/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.xml
      deleted file mode 100644
      index a65a87e..0000000
      --- a/src/test/resources/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemoverTest/pmathml-with-namespace.original.xml
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -
      -
      -
      -    
      -        +
      -        
      -            1
      -            
      -            
      -                
      -                    
      -                        -
      -                        E
      -                    
      -                    =
      -                    
      -                        
      -                            m
      -                            
      -                            
      -                                c
      -                                2
      -                            
      -                        
      -                        +
      -                        5
      -                        -
      -                        3
      -                    
      -                
      -                
      -                    
      -                        
      -                            
      -                                
      -                                a
      -                                b
      -                            
      -                        
      -                        
      -                            f
      -                            
      -                            
      -                                
      -                                    (
      -                                    x
      -                                    )
      -                                
      -                            
      -                            
      -                            d
      -                            
      -                            x
      -                        
      -                    
      -                    =
      -                    
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                b
      -                                )
      -                            
      -                        
      -                        -
      -                        
      -                            F
      -                            
      -                            
      -                                (
      -                                a
      -                                )
      -                            
      -                        
      -                    
      -                
      -            
      -        
      -    
      -
      
      From 5c9c65d3d6ff22c5c59a1d61e1f086a45de53e63 Mon Sep 17 00:00:00 2001
      From: =?UTF-8?q?Mari=C3=A1n=20Lal=C3=ADk?= 
      Date: Tue, 3 May 2022 07:51:36 +0200
      Subject: [PATCH 3/3] removed leftover test printlines
      
      ---
       .../fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java  | 1 -
       .../mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java | 1 -
       2 files changed, 2 deletions(-)
      
      diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java
      index 896454a..1a19a61 100644
      --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java
      +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/ElementMinimizer.java
      @@ -132,7 +132,6 @@ private void minimizeAttributes(Element element) {
           }
       
           private Boolean isWhitelisted(Attribute attribute, List whitelist) {
      -        System.out.println(attribute.getKey());
               for (String attr : whitelist) {
                   if (attribute.getKey().equals(attr)
                           || attr.contains("=")
      diff --git a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java
      index dc64095..f885ed7 100644
      --- a/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java
      +++ b/src/main/java/cz/muni/fi/mir/mathmlcanonicalization/modules/UnaryOperatorRemover.java
      @@ -109,7 +109,6 @@ private void removeUnaryOperator(final Element rootElem) {
                   for (Element operator : rootElem.getElementsByTag(OPERATOR)) {
                       int index = operator.elementSiblingIndex();
                       if (index != 0 && operator.previousElementSibling().tagName().equals(OPERATOR)) {
      -                    System.out.println(operator.text());
                           index = 0;
                       }
                       if (index == 0) {