Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
db6d76d6
Commit
db6d76d6
authored
Aug 26, 2013
by
Will Daly
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Patched textbook TOC request during course import.
Patched Snuggletex server calls
parent
a374fceb
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
595 additions
and
93 deletions
+595
-93
common/lib/capa/capa/tests/test_files/dynamath_input.txt
+43
-0
common/lib/capa/capa/tests/test_files/snuggletex_2x+3y.xml
+236
-0
common/lib/capa/capa/tests/test_files/snuggletex_x+x+3y.xml
+226
-0
common/lib/capa/capa/tests/test_responsetypes.py
+74
-90
common/lib/xmodule/xmodule/tests/test_export.py
+16
-3
No files found.
common/lib/capa/capa/tests/test_files/dynamath_input.txt
0 → 100644
View file @
db6d76d6
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<mrow>
<mi>cos</mi>
<mrow><mo>(</mo><mi>θ</mi><mo>)</mo></mrow>
</mrow>
<mo>⋅</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd>
</mtr>
<mtr>
<mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>+</mo>
<mi>i</mi>
<mo>⋅</mo>
<mrow>
<mi>sin</mi>
<mrow>
<mo>(</mo><mi>θ</mi><mo>)</mo>
</mrow>
</mrow>
<mo>⋅</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd>
</mtr>
<mtr>
<mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mstyle>
</math>
common/lib/capa/capa/tests/test_files/snuggletex_2x+3y.xml
0 → 100644
View file @
db6d76d6
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xml:lang=
"en"
>
<head>
<meta
content=
"application/xhtml+xml; charset=UTF-8"
http-equiv=
"Content-Type"
/>
<meta
content=
"SnuggleTeX"
name=
"Generator"
/>
<meta
content=
"SnuggleTeX Documentation"
name=
"description"
/>
<meta
content=
"David McKain"
name=
"author"
/>
<meta
content=
"The University of Edinburgh"
name=
"publisher"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/core.css"
rel=
"stylesheet"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/webapp.css"
rel=
"stylesheet"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/snuggletex.css"
rel=
"stylesheet"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/jquery-ui-1.7.2.custom.css"
rel=
"stylesheet"
/><script
src=
"/snuggletex-webapp-1.2.2/includes/jquery.js"
type=
"text/javascript"
></script><script
src=
"/snuggletex-webapp-1.2.2/includes/jquery-ui-1.7.2.custom.js"
type=
"text/javascript"
></script><script
src=
"/snuggletex-webapp-1.2.2/includes/webapp.js"
type=
"text/javascript"
></script><title>
SnuggleTeX - ASCIIMathML Enrichment Demo
</title><script
src=
"/snuggletex-webapp-1.2.2/includes/ASCIIMathML.js"
type=
"text/javascript"
></script><script
src=
"/snuggletex-webapp-1.2.2/includes/ASCIIMathMLwidget.js"
type=
"text/javascript"
></script></head>
<body
id=
"asciiMathMLUpConversionDemo"
>
<table
border=
"0"
cellpadding=
"0"
cellspacing=
"0"
id=
"header"
width=
"100%"
>
<tr>
<td
align=
"left"
id=
"logo"
valign=
"top"
><a
class=
"headertext"
href=
"http://www.ed.ac.uk"
><img
alt=
"The University of Edinburgh"
height=
"84"
src=
"/snuggletex-webapp-1.2.2/includes/uoe_logo.jpg"
width=
"84"
/></a></td>
<td
align=
"left"
>
<h3>
THE UNIVERSITY of EDINBURGH
</h3>
<h1>
SCHOOL OF PHYSICS AND ASTRONOMY
</h1>
</td>
</tr>
</table>
<h1
id=
"location"
><a
href=
"/snuggletex-webapp-1.2.2"
>
SnuggleTeX (1.2.2)
</a></h1>
<div
id=
"content"
>
<div
id=
"skipnavigation"
><a
href=
"#maincontent"
>
Skip Navigation
</a></div>
<div
id=
"navigation"
>
<div
id=
"navinner"
>
<h2>
About SnuggleTeX
</h2>
<ul>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/overview-and-features.html"
>
Overview
&
Features
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/use-cases.html"
>
Why Use SnuggleTeX?
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/license.html"
>
License
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/release-notes.html"
>
Release Notes
</a></li>
</ul>
<h2>
Demos
&
Samples
</h2>
<ul>
<li><a
href=
"/snuggletex-webapp-1.2.2/MathInputDemo"
>
Simple Math Input Demo
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/FullLaTeXInputDemo"
>
Full LaTeX Input Demo
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/UpConversionDemo"
>
MathML Semantic Enrichment Demo
</a></li>
<li><a
class=
"selected"
href=
"/snuggletex-webapp-1.2.2/ASCIIMathMLUpConversionDemo"
>
ASCIIMathML Enrichment Demo
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/web-output-samples.html"
>
Web Output Samples
</a></li>
</ul>
<h2>
User Guide
</h2>
<ul>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/getting-snuggletex.html"
>
Getting SnuggleTeX
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/software-requirements.html"
>
Software Requirements
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/your-classpath.html"
>
Setting up Your ClassPath
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/examples.html"
>
Examples
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/basic-usage.html"
>
Basic Usage
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/inputs.html"
>
Parsing LaTeX Inputs
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/xml-or-dom-output.html"
>
Creating XML String or DOM Outputs
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/web-output.html"
>
Creating Web Pages
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/error-reporting.html"
>
Error Reporting
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/supported-latex.html"
>
Supported LaTeX
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/advanced-usage.html"
>
Advanced Usage
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/semantic-enrichment.html"
>
Semantic Enrichment
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/migrating-from-older-versions.html"
>
Migrating from older versions
</a></li>
<li><a
href=
"http://snuggletex.sourceforge.net/maven/apidocs/index.html"
>
API Documentation
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"http://snuggletex.sourceforge.net/maven/xref/index.html"
>
Source Code Cross-Reference
<span
class=
"extlink"
>
</span></a></li>
</ul>
<h2>
SnuggleTeX Project Links
</h2>
<ul>
<li><a
href=
"http://sourceforge.net/project/showfiles.php?group_id=221375"
>
Download from SourceForge.net
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"http://sourceforge.net/projects/snuggletex/"
>
SnuggleTeX on SourceForge.net
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"http://snuggletex.sourceforge.net/maven/"
>
SnuggleTeX Maven Developer Reports
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"https://www.wiki.ed.ac.uk/display/Physics/SnuggleTeX"
>
SnuggleTeX Wiki
<span
class=
"extlink"
>
</span></a></li>
</ul>
</div>
</div>
<div
id=
"maincontent"
>
<div
id=
"popup"
></div>
<div
id=
"maininner"
>
<h2>
ASCIIMathML Enrichment Demo
</h2>
<h3>
Input
</h3>
<p>
This demo is similar to the
<a
href=
"/snuggletex-webapp-1.2.2/UpConversionDemo"
>
MathML Semantic Enrichnment Demo
</a>
but uses
<a
href=
"http://www1.chapman.edu/~jipsen/asciimath.html"
>
ASCIIMathML
</a>
as
an alternative input format, which provides real-time feedback as you
type but can often generate MathML with odd semantics in it.
SnuggleTeX includes some functionality that can to convert this raw MathML into
something equivalent to its own MathML output, thereby allowing you to
<a
href=
"/snuggletex-webapp-1.2.2/documentation/semantic-enrichment.html"
>
semantically enrich
</a>
it in
certain simple cases, making ASCIIMathML a possibly viable input format
for simple semantic maths.
</p>
<p>
To try the demo, simply enter some some ASCIIMathML into the box below.
You should see a real time preview of this while you type.
Then hit
<tt>
Go!
</tt>
to use SnuggleTeX to semantically enrich your
input.
</p>
<form
action=
"/snuggletex-webapp-1.2.2/ASCIIMathMLUpConversionDemo"
class=
"input"
method=
"post"
>
<div
class=
"inputBox"
>
ASCIIMath Input:
<input
id=
"asciiMathInput"
name=
"asciiMathInput"
type=
"text"
value=
""
/><input
id=
"asciiMathML"
name=
"asciiMathML"
type=
"hidden"
/><input
type=
"submit"
value=
"Go!"
/></div>
</form>
<h3>
Live Preview
</h3>
<p>
This is a MathML rendering of your input, generated by ASCIIMathML as you type.
</p>
<div
class=
"result"
>
<div
id=
"preview"
>
</div>
</div>
<p>
This is the underlying MathML source generated by ASCIIMathML, again updated in real time.
</p>
<div
class=
"result"
><pre
id=
"previewSource"
>
</pre></div><script
type=
"text/javascript"
>
registerASCIIMathMLInputWidget('asciiMathInput', 'preview', 'asciiMathML', 'previewSource');
var inputChanged = false;
// Hide any existing output stuff in page on first change, as it will no longer be in sync
jQuery(document).ready(function() {
jQuery('#asciiMathInput').bind('keydown', function() {
if (!inputChanged) jQuery('.outputContainer').css('visibility', 'hidden');
inputChanged = true;
});
});
</script><div
class=
"outputContainer"
>
<h3>
Enhanced Presentation MathML
</h3>
<p>
This shows the result of attempting to enrich the raw Presentation MathML
generated by ASCIIMathML:
</p><pre
class=
"result"
>
<
math xmlns="http://www.w3.org/1998/Math/MathML"
>
<
mrow
>
<
mrow
>
<
mn
>
2
<
/mn
>
<
mo
>
*
<
/mo
>
<
mi
>
x
<
/mi
>
<
/mrow
>
<
mo
>
+
<
/mo
>
<
mrow
>
<
mn
>
3
<
/mn
>
<
mo
>
*
<
/mo
>
<
mi
>
y
<
/mi
>
<
/mrow
>
<
/mrow
>
<
/math
>
</pre><h3>
Content MathML
</h3>
<p>
This shows the result of an attempted
<a
href=
"documentation/content-mathml.html"
>
conversion to Content MathML
</a>
:
</p><pre
class=
"result"
>
<
math xmlns="http://www.w3.org/1998/Math/MathML"
>
<
apply
>
<
plus/
>
<
apply
>
<
times/
>
<
cn
>
2
<
/cn
>
<
ci
>
x
<
/ci
>
<
/apply
>
<
apply
>
<
times/
>
<
cn
>
3
<
/cn
>
<
ci
>
y
<
/ci
>
<
/apply
>
<
/apply
>
<
/math
>
</pre><h3>
Maxima Input Form
</h3>
<p>
This shows the result of an attempted
<a
href=
"documentation/maxima-input.html"
>
conversion to Maxima Input syntax
</a>
:
</p><pre
class=
"result"
>
(2 * x) + (3 * y)
</pre><h3>
MathML Parallel Markup
</h3>
<p>
This shows the enhanced Presentation MathML with other forms encapsulated
as annotations:
</p><pre
class=
"result"
>
<
math xmlns="http://www.w3.org/1998/Math/MathML"
>
<
semantics
>
<
mrow
>
<
mrow
>
<
mn
>
2
<
/mn
>
<
mo
>
*
<
/mo
>
<
mi
>
x
<
/mi
>
<
/mrow
>
<
mo
>
+
<
/mo
>
<
mrow
>
<
mn
>
3
<
/mn
>
<
mo
>
*
<
/mo
>
<
mi
>
y
<
/mi
>
<
/mrow
>
<
/mrow
>
<
annotation-xml encoding="MathML-Content"
>
<
apply
>
<
plus/
>
<
apply
>
<
times/
>
<
cn
>
2
<
/cn
>
<
ci
>
x
<
/ci
>
<
/apply
>
<
apply
>
<
times/
>
<
cn
>
3
<
/cn
>
<
ci
>
y
<
/ci
>
<
/apply
>
<
/apply
>
<
/annotation-xml
>
<
annotation encoding="ASCIIMathInput"/
>
<
annotation encoding="Maxima"
>
(2 * x) + (3 * y)
<
/annotation
>
<
/semantics
>
<
/math
>
</pre></div>
</div>
</div>
</div>
<div
id=
"copyright"
>
<p>
SnuggleTeX Release 1.2.2 —
<a
href=
"/snuggletex-webapp-1.2.2/documentation/release-notes.html"
>
Release Notes
</a><br
/>
Copyright © 2009
<a
href=
"http://www.ph.ed.ac.uk"
>
The School of Physics and Astronomy
</a>
,
<a
href=
"http://www.ed.ac.uk"
>
The University of Edinburgh
</a>
.
<br
/>
For more information, contact
<a
href=
"http://www.ph.ed.ac.uk/elearning/contacts/#dmckain"
>
David McKain
</a>
.
</p>
<p>
The University of Edinburgh is a charitable body, registered in Scotland,
with registration number SC005336.
</p>
</div>
</body>
</html>
\ No newline at end of file
common/lib/capa/capa/tests/test_files/snuggletex_x+x+3y.xml
0 → 100644
View file @
db6d76d6
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
xml:lang=
"en"
>
<head>
<meta
content=
"application/xhtml+xml; charset=UTF-8"
http-equiv=
"Content-Type"
/>
<meta
content=
"SnuggleTeX"
name=
"Generator"
/>
<meta
content=
"SnuggleTeX Documentation"
name=
"description"
/>
<meta
content=
"David McKain"
name=
"author"
/>
<meta
content=
"The University of Edinburgh"
name=
"publisher"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/core.css"
rel=
"stylesheet"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/webapp.css"
rel=
"stylesheet"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/snuggletex.css"
rel=
"stylesheet"
/>
<link
href=
"/snuggletex-webapp-1.2.2/includes/jquery-ui-1.7.2.custom.css"
rel=
"stylesheet"
/><script
src=
"/snuggletex-webapp-1.2.2/includes/jquery.js"
type=
"text/javascript"
></script><script
src=
"/snuggletex-webapp-1.2.2/includes/jquery-ui-1.7.2.custom.js"
type=
"text/javascript"
></script><script
src=
"/snuggletex-webapp-1.2.2/includes/webapp.js"
type=
"text/javascript"
></script><title>
SnuggleTeX - ASCIIMathML Enrichment Demo
</title><script
src=
"/snuggletex-webapp-1.2.2/includes/ASCIIMathML.js"
type=
"text/javascript"
></script><script
src=
"/snuggletex-webapp-1.2.2/includes/ASCIIMathMLwidget.js"
type=
"text/javascript"
></script></head>
<body
id=
"asciiMathMLUpConversionDemo"
>
<table
border=
"0"
cellpadding=
"0"
cellspacing=
"0"
id=
"header"
width=
"100%"
>
<tr>
<td
align=
"left"
id=
"logo"
valign=
"top"
><a
class=
"headertext"
href=
"http://www.ed.ac.uk"
><img
alt=
"The University of Edinburgh"
height=
"84"
src=
"/snuggletex-webapp-1.2.2/includes/uoe_logo.jpg"
width=
"84"
/></a></td>
<td
align=
"left"
>
<h3>
THE UNIVERSITY of EDINBURGH
</h3>
<h1>
SCHOOL OF PHYSICS AND ASTRONOMY
</h1>
</td>
</tr>
</table>
<h1
id=
"location"
><a
href=
"/snuggletex-webapp-1.2.2"
>
SnuggleTeX (1.2.2)
</a></h1>
<div
id=
"content"
>
<div
id=
"skipnavigation"
><a
href=
"#maincontent"
>
Skip Navigation
</a></div>
<div
id=
"navigation"
>
<div
id=
"navinner"
>
<h2>
About SnuggleTeX
</h2>
<ul>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/overview-and-features.html"
>
Overview
&
Features
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/use-cases.html"
>
Why Use SnuggleTeX?
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/license.html"
>
License
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/release-notes.html"
>
Release Notes
</a></li>
</ul>
<h2>
Demos
&
Samples
</h2>
<ul>
<li><a
href=
"/snuggletex-webapp-1.2.2/MathInputDemo"
>
Simple Math Input Demo
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/FullLaTeXInputDemo"
>
Full LaTeX Input Demo
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/UpConversionDemo"
>
MathML Semantic Enrichment Demo
</a></li>
<li><a
class=
"selected"
href=
"/snuggletex-webapp-1.2.2/ASCIIMathMLUpConversionDemo"
>
ASCIIMathML Enrichment Demo
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/web-output-samples.html"
>
Web Output Samples
</a></li>
</ul>
<h2>
User Guide
</h2>
<ul>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/getting-snuggletex.html"
>
Getting SnuggleTeX
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/software-requirements.html"
>
Software Requirements
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/your-classpath.html"
>
Setting up Your ClassPath
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/examples.html"
>
Examples
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/basic-usage.html"
>
Basic Usage
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/inputs.html"
>
Parsing LaTeX Inputs
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/xml-or-dom-output.html"
>
Creating XML String or DOM Outputs
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/web-output.html"
>
Creating Web Pages
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/error-reporting.html"
>
Error Reporting
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/supported-latex.html"
>
Supported LaTeX
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/advanced-usage.html"
>
Advanced Usage
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/semantic-enrichment.html"
>
Semantic Enrichment
</a></li>
<li><a
href=
"/snuggletex-webapp-1.2.2/documentation/migrating-from-older-versions.html"
>
Migrating from older versions
</a></li>
<li><a
href=
"http://snuggletex.sourceforge.net/maven/apidocs/index.html"
>
API Documentation
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"http://snuggletex.sourceforge.net/maven/xref/index.html"
>
Source Code Cross-Reference
<span
class=
"extlink"
>
</span></a></li>
</ul>
<h2>
SnuggleTeX Project Links
</h2>
<ul>
<li><a
href=
"http://sourceforge.net/project/showfiles.php?group_id=221375"
>
Download from SourceForge.net
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"http://sourceforge.net/projects/snuggletex/"
>
SnuggleTeX on SourceForge.net
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"http://snuggletex.sourceforge.net/maven/"
>
SnuggleTeX Maven Developer Reports
<span
class=
"extlink"
>
</span></a></li>
<li><a
href=
"https://www.wiki.ed.ac.uk/display/Physics/SnuggleTeX"
>
SnuggleTeX Wiki
<span
class=
"extlink"
>
</span></a></li>
</ul>
</div>
</div>
<div
id=
"maincontent"
>
<div
id=
"popup"
></div>
<div
id=
"maininner"
>
<h2>
ASCIIMathML Enrichment Demo
</h2>
<h3>
Input
</h3>
<p>
This demo is similar to the
<a
href=
"/snuggletex-webapp-1.2.2/UpConversionDemo"
>
MathML Semantic Enrichnment Demo
</a>
but uses
<a
href=
"http://www1.chapman.edu/~jipsen/asciimath.html"
>
ASCIIMathML
</a>
as
an alternative input format, which provides real-time feedback as you
type but can often generate MathML with odd semantics in it.
SnuggleTeX includes some functionality that can to convert this raw MathML into
something equivalent to its own MathML output, thereby allowing you to
<a
href=
"/snuggletex-webapp-1.2.2/documentation/semantic-enrichment.html"
>
semantically enrich
</a>
it in
certain simple cases, making ASCIIMathML a possibly viable input format
for simple semantic maths.
</p>
<p>
To try the demo, simply enter some some ASCIIMathML into the box below.
You should see a real time preview of this while you type.
Then hit
<tt>
Go!
</tt>
to use SnuggleTeX to semantically enrich your
input.
</p>
<form
action=
"/snuggletex-webapp-1.2.2/ASCIIMathMLUpConversionDemo"
class=
"input"
method=
"post"
>
<div
class=
"inputBox"
>
ASCIIMath Input:
<input
id=
"asciiMathInput"
name=
"asciiMathInput"
type=
"text"
value=
""
/><input
id=
"asciiMathML"
name=
"asciiMathML"
type=
"hidden"
/><input
type=
"submit"
value=
"Go!"
/></div>
</form>
<h3>
Live Preview
</h3>
<p>
This is a MathML rendering of your input, generated by ASCIIMathML as you type.
</p>
<div
class=
"result"
>
<div
id=
"preview"
>
</div>
</div>
<p>
This is the underlying MathML source generated by ASCIIMathML, again updated in real time.
</p>
<div
class=
"result"
><pre
id=
"previewSource"
>
</pre></div><script
type=
"text/javascript"
>
registerASCIIMathMLInputWidget('asciiMathInput', 'preview', 'asciiMathML', 'previewSource');
var inputChanged = false;
// Hide any existing output stuff in page on first change, as it will no longer be in sync
jQuery(document).ready(function() {
jQuery('#asciiMathInput').bind('keydown', function() {
if (!inputChanged) jQuery('.outputContainer').css('visibility', 'hidden');
inputChanged = true;
});
});
</script><div
class=
"outputContainer"
>
<h3>
Enhanced Presentation MathML
</h3>
<p>
This shows the result of attempting to enrich the raw Presentation MathML
generated by ASCIIMathML:
</p><pre
class=
"result"
>
<
math xmlns="http://www.w3.org/1998/Math/MathML"
>
<
mrow
>
<
mi
>
x
<
/mi
>
<
mo
>
+
<
/mo
>
<
mi
>
x
<
/mi
>
<
mo
>
+
<
/mo
>
<
mrow
>
<
mn
>
3
<
/mn
>
<
mo
>
*
<
/mo
>
<
mi
>
y
<
/mi
>
<
/mrow
>
<
/mrow
>
<
/math
>
</pre><h3>
Content MathML
</h3>
<p>
This shows the result of an attempted
<a
href=
"documentation/content-mathml.html"
>
conversion to Content MathML
</a>
:
</p><pre
class=
"result"
>
<
math xmlns="http://www.w3.org/1998/Math/MathML"
>
<
apply
>
<
plus/
>
<
ci
>
x
<
/ci
>
<
ci
>
x
<
/ci
>
<
apply
>
<
times/
>
<
cn
>
3
<
/cn
>
<
ci
>
y
<
/ci
>
<
/apply
>
<
/apply
>
<
/math
>
</pre><h3>
Maxima Input Form
</h3>
<p>
This shows the result of an attempted
<a
href=
"documentation/maxima-input.html"
>
conversion to Maxima Input syntax
</a>
:
</p><pre
class=
"result"
>
x + x + (3 * y)
</pre><h3>
MathML Parallel Markup
</h3>
<p>
This shows the enhanced Presentation MathML with other forms encapsulated
as annotations:
</p><pre
class=
"result"
>
<
math xmlns="http://www.w3.org/1998/Math/MathML"
>
<
semantics
>
<
mrow
>
<
mi
>
x
<
/mi
>
<
mo
>
+
<
/mo
>
<
mi
>
x
<
/mi
>
<
mo
>
+
<
/mo
>
<
mrow
>
<
mn
>
3
<
/mn
>
<
mo
>
*
<
/mo
>
<
mi
>
y
<
/mi
>
<
/mrow
>
<
/mrow
>
<
annotation-xml encoding="MathML-Content"
>
<
apply
>
<
plus/
>
<
ci
>
x
<
/ci
>
<
ci
>
x
<
/ci
>
<
apply
>
<
times/
>
<
cn
>
3
<
/cn
>
<
ci
>
y
<
/ci
>
<
/apply
>
<
/apply
>
<
/annotation-xml
>
<
annotation encoding="ASCIIMathInput"/
>
<
annotation encoding="Maxima"
>
x + x + (3 * y)
<
/annotation
>
<
/semantics
>
<
/math
>
</pre></div>
</div>
</div>
</div>
<div
id=
"copyright"
>
<p>
SnuggleTeX Release 1.2.2 —
<a
href=
"/snuggletex-webapp-1.2.2/documentation/release-notes.html"
>
Release Notes
</a><br
/>
Copyright © 2009
<a
href=
"http://www.ph.ed.ac.uk"
>
The School of Physics and Astronomy
</a>
,
<a
href=
"http://www.ed.ac.uk"
>
The University of Edinburgh
</a>
.
<br
/>
For more information, contact
<a
href=
"http://www.ph.ed.ac.uk/elearning/contacts/#dmckain"
>
David McKain
</a>
.
</p>
<p>
The University of Edinburgh is a charitable body, registered in Scotland,
with registration number SC005336.
</p>
</div>
</body>
</html>
\ No newline at end of file
common/lib/capa/capa/tests/test_responsetypes.py
View file @
db6d76d6
...
...
@@ -9,6 +9,7 @@ import pyparsing
import
random
import
unittest
import
textwrap
import
requests
import
mock
from
.
import
new_loncapa_problem
,
test_system
...
...
@@ -199,9 +200,8 @@ class SymbolicResponseTest(ResponseTest):
from
capa.tests.response_xml_factory
import
SymbolicResponseXMLFactory
xml_factory_class
=
SymbolicResponseXMLFactory
def
test_grade_single_input
(
self
):
problem
=
self
.
build_problem
(
math_display
=
True
,
expect
=
"2*x+3*y"
)
def
test_grade_single_input_correct
(
self
):
problem
=
self
.
build_problem
(
math_display
=
True
,
expect
=
"2*x+3*y"
)
# Correct answers
correct_inputs
=
[
...
...
@@ -209,17 +209,27 @@ class SymbolicResponseTest(ResponseTest):
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<mn>2</mn><mo>*</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>*</mo><mi>y</mi>
</mstyle></math>"""
)),
</mstyle></math>"""
),
'snuggletex_2x+3y.xml'
),
(
'x+x+3y'
,
textwrap
.
dedent
(
"""
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<mi>x</mi><mo>+</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>*</mo><mi>y</mi>
</mstyle></math>"""
)),
</mstyle></math>"""
),
'snuggletex_x+x+3y.xml'
),
]
for
(
input_str
,
input_mathml
)
in
correct_inputs
:
self
.
_assert_symbolic_grade
(
problem
,
input_str
,
input_mathml
,
'correct'
)
for
(
input_str
,
input_mathml
,
server_fixture
)
in
correct_inputs
:
print
"Testing input: {0}"
.
format
(
input_str
)
server_resp
=
self
.
_load_fixture
(
server_fixture
)
self
.
_assert_symbolic_grade
(
problem
,
input_str
,
input_mathml
,
'correct'
,
snuggletex_resp
=
server_resp
)
def
test_grade_single_input_incorrect
(
self
):
problem
=
self
.
build_problem
(
math_display
=
True
,
expect
=
"2*x+3*y"
)
# Incorrect answers
incorrect_inputs
=
[
...
...
@@ -234,113 +244,87 @@ class SymbolicResponseTest(ResponseTest):
for
(
input_str
,
input_mathml
)
in
incorrect_inputs
:
self
.
_assert_symbolic_grade
(
problem
,
input_str
,
input_mathml
,
'incorrect'
)
def
test_complex_number_grade
(
self
):
problem
=
self
.
build_problem
(
math_display
=
True
,
def
test_complex_number_grade_correct
(
self
):
problem
=
self
.
build_problem
(
math_display
=
True
,
expect
=
"[[cos(theta),i*sin(theta)],[i*sin(theta),cos(theta)]]"
,
options
=
[
"matrix"
,
"imaginary"
])
# For LaTeX-style inputs, symmath_check() will try to contact
# a server to convert the input to MathML.
# We mock out the server, simulating the response that it would give
# for this input.
import
requests
dirpath
=
os
.
path
.
dirname
(
__file__
)
correct_snuggletex_response
=
open
(
os
.
path
.
join
(
dirpath
,
"test_files/snuggletex_correct.html"
))
.
read
()
.
decode
(
'utf8'
)
wrong_snuggletex_response
=
open
(
os
.
path
.
join
(
dirpath
,
"test_files/snuggletex_wrong.html"
))
.
read
()
.
decode
(
'utf8'
)
# Correct answer
with
mock
.
patch
.
object
(
requests
,
'post'
)
as
mock_post
:
options
=
[
"matrix"
,
"imaginary"
]
)
# Simulate what the LaTeX-to-MathML server would
# send for the correct response input
mock_post
.
return_value
.
text
=
correct_snuggletex_response
correct_snuggletex
=
self
.
_load_fixture
(
'snuggletex_correct.html'
)
dynamath_input
=
self
.
_load_fixture
(
'dynamath_input.txt'
)
student_response
=
"cos(theta)*[[1,0],[0,1]] + i*sin(theta)*[[0,1],[1,0]]"
self
.
_assert_symbolic_grade
(
problem
,
"cos(theta)*[[1,0],[0,1]] + i*sin(theta)*[[0,1],[1,0]]"
,
textwrap
.
dedent
(
"""
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<mrow>
<mi>cos</mi>
<mrow><mo>(</mo><mi>θ</mi><mo>)</mo></mrow>
</mrow>
<mo>⋅</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd>
</mtr>
<mtr>
<mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>+</mo>
<mi>i</mi>
<mo>⋅</mo>
<mrow>
<mi>sin</mi>
<mrow>
<mo>(</mo><mi>θ</mi><mo>)</mo>
</mrow>
</mrow>
<mo>⋅</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd>
</mtr>
<mtr>
<mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mstyle>
</math>
"""
),
'correct'
)
self
.
_assert_symbolic_grade
(
problem
,
student_response
,
dynamath_input
,
'correct'
,
snuggletex_resp
=
correct_snuggletex
)
# Incorrect answer
with
mock
.
patch
.
object
(
requests
,
'post'
)
as
mock_post
:
def
test_complex_number_grade_incorrect
(
self
):
# Simulate what the LaTeX-to-MathML server would
# send for the incorrect response input
mock_post
.
return_value
.
text
=
wrong_snuggletex_response
problem
=
self
.
build_problem
(
math_display
=
True
,
expect
=
"[[cos(theta),i*sin(theta)],[i*sin(theta),cos(theta)]]"
,
options
=
[
"matrix"
,
"imaginary"
])
self
.
_assert_symbolic_grade
(
problem
,
"2"
,
textwrap
.
dedent
(
"""
wrong_snuggletex
=
self
.
_load_fixture
(
'snuggletex_wrong.html'
)
dynamath_input
=
textwrap
.
dedent
(
"""
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true"><mn>2</mn></mstyle>
</math>
"""
),
'incorrect'
)
"""
)
self
.
_assert_symbolic_grade
(
problem
,
"2"
,
dynamath_input
,
'incorrect'
,
snuggletex_resp
=
wrong_snuggletex
,
)
def
test_multiple_inputs_exception
(
self
):
# Should not allow multiple inputs, since we specify
# only one "expect" value
with
self
.
assertRaises
(
Exception
):
self
.
build_problem
(
math_display
=
True
,
expect
=
"2*x+3*y"
,
num_inputs
=
3
)
def
_assert_symbolic_grade
(
self
,
problem
,
student_input
,
dynamath_input
,
expected_correctness
):
self
.
build_problem
(
math_display
=
True
,
expect
=
"2*x+3*y"
,
num_inputs
=
3
)
def
_assert_symbolic_grade
(
self
,
problem
,
student_input
,
dynamath_input
,
expected_correctness
,
snuggletex_resp
=
""
):
"""
Assert that the symbolic response has a certain grade.
`problem` is the capa problem containing the symbolic response.
`student_input` is the text the student entered.
`dynamath_input` is the JavaScript rendered MathML from the page.
`expected_correctness` is either "correct" or "incorrect"
`snuggletex_resp` is the simulated response from the Snuggletex server
"""
input_dict
=
{
'1_2_1'
:
str
(
student_input
),
'1_2_1_dynamath'
:
str
(
dynamath_input
)}
# Simulate what the Snuggletex server would respond
with
mock
.
patch
.
object
(
requests
,
'post'
)
as
mock_post
:
mock_post
.
return_value
.
text
=
snuggletex_resp
correct_map
=
problem
.
grade_answers
(
input_dict
)
self
.
assertEqual
(
correct_map
.
get_correctness
(
'1_2_1'
),
expected_correctness
)
@staticmethod
def
_load_fixture
(
relpath
):
"""
Return a `unicode` object representing the contents
of the fixture file at `relpath` (relative to the test files dir)
"""
abspath
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'test_files'
,
relpath
)
with
open
(
abspath
)
as
fixture_file
:
contents
=
fixture_file
.
read
()
return
contents
.
decode
(
'utf8'
)
class
OptionResponseTest
(
ResponseTest
):
from
capa.tests.response_xml_factory
import
OptionResponseXMLFactory
...
...
common/lib/xmodule/xmodule/tests/test_export.py
View file @
db6d76d6
...
...
@@ -6,6 +6,8 @@ from datetime import datetime, timedelta, tzinfo
from
tempfile
import
mkdtemp
import
unittest
import
shutil
from
textwrap
import
dedent
import
mock
import
pytz
from
fs.osfs
import
OSFS
...
...
@@ -35,12 +37,23 @@ def strip_filenames(descriptor):
class
RoundTripTestCase
(
unittest
.
TestCase
):
''' Check that our test courses roundtrip properly.
"""
Check that our test courses roundtrip properly.
Same course imported , than exported, then imported again.
And we compare original import with second import (after export).
Thus we make sure that export and import work properly.
'''
def
check_export_roundtrip
(
self
,
data_dir
,
course_dir
):
"""
@mock.patch
(
'xmodule.course_module.requests.get'
)
def
check_export_roundtrip
(
self
,
data_dir
,
course_dir
,
mock_get
):
# Patch network calls to retrieve the textbook TOC
mock_get
.
return_value
.
text
=
dedent
(
"""
<?xml version="1.0"?><table_of_contents>
<entry page="5" page_label="ii" name="Table of Contents"/>
</table_of_contents>
"""
)
.
strip
()
root_dir
=
path
(
self
.
temp_dir
)
print
(
"Copying test course to temp dir {0}"
.
format
(
root_dir
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment