You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
from sympy.printing.codeprinter import CodePrinter
|
|
from sympy.core import symbols
|
|
from sympy.core.symbol import Dummy
|
|
from sympy.testing.pytest import raises
|
|
|
|
|
|
def setup_test_printer(**kwargs):
|
|
p = CodePrinter(settings=kwargs)
|
|
p._not_supported = set()
|
|
p._number_symbols = set()
|
|
return p
|
|
|
|
|
|
def test_print_Dummy():
|
|
d = Dummy('d')
|
|
p = setup_test_printer()
|
|
assert p._print_Dummy(d) == "d_%i" % d.dummy_index
|
|
|
|
def test_print_Symbol():
|
|
|
|
x, y = symbols('x, if')
|
|
|
|
p = setup_test_printer()
|
|
assert p._print(x) == 'x'
|
|
assert p._print(y) == 'if'
|
|
|
|
p.reserved_words.update(['if'])
|
|
assert p._print(y) == 'if_'
|
|
|
|
p = setup_test_printer(error_on_reserved=True)
|
|
p.reserved_words.update(['if'])
|
|
with raises(ValueError):
|
|
p._print(y)
|
|
|
|
p = setup_test_printer(reserved_word_suffix='_He_Man')
|
|
p.reserved_words.update(['if'])
|
|
assert p._print(y) == 'if_He_Man'
|
|
|
|
def test_issue_15791():
|
|
class CrashingCodePrinter(CodePrinter):
|
|
def emptyPrinter(self, obj):
|
|
raise NotImplementedError
|
|
|
|
from sympy.matrices import (
|
|
MutableSparseMatrix,
|
|
ImmutableSparseMatrix,
|
|
)
|
|
|
|
c = CrashingCodePrinter()
|
|
|
|
# these should not silently succeed
|
|
with raises(NotImplementedError):
|
|
c.doprint(ImmutableSparseMatrix(2, 2, {}))
|
|
with raises(NotImplementedError):
|
|
c.doprint(MutableSparseMatrix(2, 2, {}))
|