diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py
index df09cff2f6..aa507a5281 100644
--- a/common/lib/capa/capa/inputtypes.py
+++ b/common/lib/capa/capa/inputtypes.py
@@ -457,17 +457,21 @@ class TextLine(InputTypeBase):
"""
A text line input. Can do math preview if "math"="1" is specified.
- If "trailing_text" is set to a value, then the textline will be shown with the value after the text input,
- and before the checkmark or any input-specific feedback. HTML will not work, but properly escaped HTML characters will.
- This feature is useful if you would like to specify a specific type of units for the text input.
+ If "trailing_text" is set to a value, then the textline will be shown with
+ the value after the text input, and before the checkmark or any input-specific
+ feedback. HTML will not work, but properly escaped HTML characters will. This
+ feature is useful if you would like to specify a specific type of units for the
+ text input.
- If the hidden attribute is specified, the textline is hidden and the input id is stored in a div with name equal
- to the value of the hidden attribute. This is used e.g. for embedding simulations turned into questions.
+ If the hidden attribute is specified, the textline is hidden and the input id
+ is stored in a div with name equal to the value of the hidden attribute. This
+ is used e.g. for embedding simulations turned into questions.
Example:
- This example will render out a text line with a math preview and the text 'm/s' after the end of the text line.
+ This example will render out a text line with a math preview and the text 'm/s'
+ after the end of the text line.
"""
template = "textline.html"
diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py
index 6c820503b1..7e2f956f56 100644
--- a/common/lib/capa/capa/tests/test_inputtypes.py
+++ b/common/lib/capa/capa/tests/test_inputtypes.py
@@ -1,6 +1,5 @@
-# coding='utf-8'
"""
-feature Tests of input types.
+Tests of input types.
TODO:
- refactor: so much repetive code (have factory methods that build xml elements directly, etc)
@@ -21,7 +20,6 @@ import json
from lxml import etree
import unittest
import xml.sax.saxutils as saxutils
-import unicodedata as ud
from . import test_system
from capa import inputtypes
@@ -220,87 +218,40 @@ class TextLineTest(unittest.TestCase):
def test_trailing_text_rendering(self):
size = "42"
- trailing_text = 'm/s'
- xml_str = """""".format(size=size, tt=trailing_text)
+ # store (xml_text, expected)
+ trailing_text = []
+ # standard trailing text
+ trailing_text.append(('m/s', 'm/s'))
+ # unicode trailing text
+ trailing_text.append((u'\xc3', u'\xc3'))
+ # html escaped trailing text
+ # this is the only one we expect to change
+ trailing_text.append(('a < b','a < b'))
- element = etree.fromstring(xml_str)
+ for xml_text, expected_text in trailing_text:
+ xml_str = u"""""".format(size=size, tt=xml_text)
- state = {'value': 'BumbleBee', }
- the_input = lookup_tag('textline')(test_system, element, state)
+ element = etree.fromstring(xml_str)
- context = the_input._get_render_context()
+ state = {'value': 'BumbleBee', }
+ the_input = lookup_tag('textline')(test_system, element, state)
- expected = {'id': 'prob_1_2',
- 'value': 'BumbleBee',
- 'status': 'unanswered',
- 'size': size,
- 'msg': '',
- 'hidden': False,
- 'inline': False,
- 'do_math': False,
- 'trailing_text': trailing_text,
- 'preprocessor': None}
- self.assertEqual(context, expected)
+ context = the_input._get_render_context()
-
- def test_trailing_unicode(self):
- size = "42"
- trailing_text = u'\xc3'
- print trailing_text
- xml_str = u"""""".format(size=size, tt=trailing_text)
-
- element = etree.fromstring(xml_str)
-
- state = {'value': 'BumbleBee', }
- the_input = lookup_tag('textline')(test_system, element, state)
-
- context = the_input._get_render_context()
-
- expected = {'id': 'prob_1_2',
- 'value': 'BumbleBee',
- 'status': 'unanswered',
- 'size': size,
- 'msg': '',
- 'hidden': False,
- 'inline': False,
- 'do_math': False,
- 'trailing_text': trailing_text,
- 'preprocessor': None}
- self.assertEqual(context, expected)
-
-
- def test_trailing_text_special_characters(self):
- size = "42"
- trailing_text = 'a < b'
- xml_str = """""".format(size=size, tt=trailing_text)
-
- element = etree.fromstring(xml_str)
-
- state = {'value': 'BumbleBee', }
- the_input = lookup_tag('textline')(test_system, element, state)
-
- context = the_input._get_render_context()
-
- expected = {'id': 'prob_1_2',
- 'value': 'BumbleBee',
- 'status': 'unanswered',
- 'size': size,
- 'msg': '',
- 'hidden': False,
- 'inline': False,
- 'do_math': False,
- 'trailing_text': 'a < b',
- 'preprocessor': None}
- self.assertEqual(context, expected)
+ expected = {'id': 'prob_1_2',
+ 'value': 'BumbleBee',
+ 'status': 'unanswered',
+ 'size': size,
+ 'msg': '',
+ 'hidden': False,
+ 'inline': False,
+ 'do_math': False,
+ 'trailing_text': expected_text,
+ 'preprocessor': None}
+ self.assertEqual(context, expected)
class FileSubmissionTest(unittest.TestCase):