Exemple #1
0
    def test_syntax_errors(self):
        """
        Test a lot of math strings that give syntax errors

        Rather than have a lot of self.assertRaises, make a loop and keep track
        of those that do not throw a `ParseException`, and assert at the end.
        """
        bad_math_list = [
            '11+',
            '11*',
            'f((x)',
            'sqrt(x^)',
            '3f(x)',  # Not 3*f(x)
            '3|4',
            '3|||4'
        ]
        bad_exceptions = {}
        for math in bad_math_list:
            try:
                preview.latex_preview(math)
            except pyparsing.ParseException:
                pass  # This is what we were expecting. (not excepting :P)
            except Exception as error:  # pragma: no cover
                bad_exceptions[math] = error
            else:  # pragma: no cover
                # If there is no exception thrown, this is a problem
                bad_exceptions[math] = None

        self.assertEquals({}, bad_exceptions)
Exemple #2
0
 def test_no_input(self):
     """
     With no input (including just whitespace), see that no error is thrown.
     """
     self.assertEquals('', preview.latex_preview(''))
     self.assertEquals('', preview.latex_preview('  '))
     self.assertEquals('', preview.latex_preview(' \t '))
Exemple #3
0
 def test_number_sci_notation(self):
     """ Numbers with scientific notation should display nicely """
     self.assertEquals(
         preview.latex_preview('6.0221413E+23'),
         r'6.0221413\!\times\!10^{+23}'
     )
     self.assertEquals(
         preview.latex_preview('-6.0221413E+23'),
         r'-6.0221413\!\times\!10^{+23}'
     )
 def test_number_sci_notation_suffix(self):
     """ Test numbers with both of these. """
     self.assertEquals(
         preview.latex_preview('6.0221413E+23k'),
         r'6.0221413\!\times\!10^{+23}\text{k}'
     )
     self.assertEquals(
         preview.latex_preview('-6.0221413E+23k'),
         r'-6.0221413\!\times\!10^{+23}\text{k}'
     )
Exemple #5
0
    def test_complicated(self):
        """
        Given complicated input, ensure that exactly the correct string is made.
        """
        self.assertEquals(
            preview.latex_preview('11*f(x)+x^2*(3||4)/sqrt(pi)'),
            r'11\cdot \text{f}(x)+\frac{x^{2}\cdot (3\|4)}{\sqrt{\pi}}'
        )

        self.assertEquals(
            preview.latex_preview('log10(1+3/4/Cos(x^2)*(x+1))',
                                  case_sensitive=True),
            (r'\log_{10}\left(1+\frac{3}{4\cdot \text{Cos}\left(x^{2}\right)}'
             r'\cdot (x+1)\right)')
        )
Exemple #6
0
 def test_sum(self):
     """ Sums should combine its elements. """
     # Use 'x' as the first term (instead of, say, '1'), so it can't be
     # interpreted as a negative number.
     self.assertEquals(
         preview.latex_preview('-x+2-3+4', variables=['x']),
         '-x+2-3+4'
     )
Exemple #7
0
 def test_product_keep_going(self):
     """
     Complex products/quotients should split into many '\frac's when needed.
     """
     self.assertEquals(
         preview.latex_preview('2/3*4/5*6'),
         r'\frac{2}{3}\cdot \frac{4}{5}\cdot 6'
     )
Exemple #8
0
 def test_variable_subscript(self):
     """ Things like 'epsilon_max' should display nicely """
     self.assertEquals(
         preview.latex_preview('epsilon_max', variables=['epsilon_max']),
         r'\epsilon_{max}'
     )
Exemple #9
0
 def test_sum_tall(self):
     """ A complicated expression should not hide the tallness. """
     self.assertEquals(
         preview.latex_preview('(2+3^2)'),
         r'\left(2+3^{2}\right)'
     )
Exemple #10
0
 def test_function_tall(self):
     r""" Functions surrounding a tall element should have \left, \right """
     self.assertEquals(
         preview.latex_preview('f(3^2)', functions=['f']),
         r'\text{f}\left(3^{2}\right)'
     )
Exemple #11
0
 def test_variable_simple(self):
     """ Simple valid variables should pass through. """
     self.assertEquals(preview.latex_preview('x', variables=['x']), 'x')
Exemple #12
0
 def test_number_suffix(self):
     """ Suffixes should be escaped. """
     self.assertEquals(preview.latex_preview('1.618%'), r'1.618\text{%}')
Exemple #13
0
 def test_power_parens(self):
     """ Powers should ignore the parenthesis of the last math. """
     self.assertEquals(preview.latex_preview('2^3^(4+5)'), '2^{3^{4+5}}')
Exemple #14
0
 def test_parallel(self):
     r""" Parallel items should combine with '\|'. """
     self.assertEquals(preview.latex_preview('2||3'), r'2\|3')
Exemple #15
0
 def test_power_simple(self):
     """ Powers should wrap the elements with braces correctly. """
     self.assertEquals(preview.latex_preview('2^3^4'), '2^{3^{4}}')
Exemple #16
0
 def test_function_log2(self):
     """ log2 function should be handled specially. """
     self.assertEquals(preview.latex_preview('log2(3)'), r'\log_2(3)')
Exemple #17
0
 def test_function_sqrt(self):
     """ Sqrt function should be handled specially. """
     self.assertEquals(preview.latex_preview('sqrt(3)'), r'\sqrt{3}')
Exemple #18
0
 def test_greek(self):
     """ Variable names that are greek should be formatted accordingly. """
     self.assertEquals(preview.latex_preview('pi'), r'\pi')
Exemple #19
0
 def test_product_big_frac(self):
     """ Division should combine with '\frac'. """
     self.assertEquals(
         preview.latex_preview('2*3/4/5'),
         r'\frac{2\cdot 3}{4\cdot 5}'
     )
Exemple #20
0
 def test_number_simple(self):
     """ Simple numbers should pass through. """
     self.assertEquals(preview.latex_preview('3.1415'), '3.1415')
Exemple #21
0
 def test_product_single_frac(self):
     """ Division should ignore parens if they are extraneous. """
     self.assertEquals(
         preview.latex_preview('(2+3)/(4+5)'),
         r'\frac{2+3}{4+5}'
     )
Exemple #22
0
 def test_product_mult_only(self):
     r""" Simple products should combine with a '\cdot'. """
     self.assertEquals(preview.latex_preview('2*3'), r'2\cdot 3')
Exemple #23
0
 def test_function_simple(self):
     """ Valid function names should be escaped. """
     self.assertEquals(
         preview.latex_preview('f(3)', functions=['f']),
         r'\text{f}(3)'
     )