Test Backend - The Sage Command Line

Skip to content
Back to top
View this page
Edit this page

# Test Backend

This backend is only for doctesting purposes.

EXAMPLES:

We switch to the test backend for the remainder of this file:

Sage

    sage: from sage.repl.rich_output import get_display_manager
    sage: dm = get_display_manager()
    sage: from sage.repl.rich_output.test_backend import BackendTest, TestObject
    sage: doctest_backend = dm.switch_backend(BackendTest())
    sage: dm
    The Sage display manager using the test backend

    sage: dm._output_promotions
    {<class 'sage.repl.rich_output.output_basic.OutputPlainText'>:
     <class 'sage.repl.rich_output.test_backend.TestOutputPlainText'>}
    sage: dm.displayhook(1/2)
    1/2 [TestOutputPlainText]
    TestOutputPlainText container

    sage: test = TestObject()
    sage: test
    called the _repr_ method
    sage: dm.displayhook(test)
    called the _rich_repr_ method [TestOutputPlainText]
    TestOutputPlainText container

Python

    >>> from sage.all import *
    >>> from sage.repl.rich_output import get_display_manager
    >>> dm = get_display_manager()
    >>> from sage.repl.rich_output.test_backend import BackendTest, TestObject
    >>> doctest_backend = dm.switch_backend(BackendTest())
    >>> dm
    The Sage display manager using the test backend

    >>> dm._output_promotions
    {<class 'sage.repl.rich_output.output_basic.OutputPlainText'>:
     <class 'sage.repl.rich_output.test_backend.TestOutputPlainText'>}
    >>> dm.displayhook(Integer(1)/Integer(2))
    1/2 [TestOutputPlainText]
    TestOutputPlainText container

    >>> test = TestObject()
    >>> test
    called the _repr_ method
    >>> dm.displayhook(test)
    called the _rich_repr_ method [TestOutputPlainText]
    TestOutputPlainText container

class sage.repl.rich_output.test_backend.BackendTest

  Bases: `BackendBase`

  display_immediately(plain_text, rich_output)

    Show output without going back to the command line prompt.

    INPUT:

    Same as `displayhook()`.

    OUTPUT:

    This method returns the rich output for doctesting convenience. The actual display framework ignores the return value.

    EXAMPLES:

    Sage

        sage: from sage.repl.rich_output.output_basic import OutputPlainText
        sage: plain_text = OutputPlainText.example()
        sage: from sage.repl.rich_output.test_backend import BackendTest
        sage: backend = BackendTest()
        sage: backend.display_immediately(plain_text, plain_text)
        Example plain text output
        OutputPlainText container

    Python

        >>> from sage.all import *
        >>> from sage.repl.rich_output.output_basic import OutputPlainText
        >>> plain_text = OutputPlainText.example()
        >>> from sage.repl.rich_output.test_backend import BackendTest
        >>> backend = BackendTest()
        >>> backend.display_immediately(plain_text, plain_text)
        Example plain text output
        OutputPlainText container

  supported_output()

    Return the outputs that are supported by the backend.

    OUTPUT:

    Iterable of output container classes. Only the `TestOutputPlainText` output container is supported by the test backend.

    EXAMPLES:

    Sage

        sage: display_manager = sage.repl.rich_output.get_display_manager()
        sage: backend = display_manager._backend
        sage: list(backend.supported_output())
        [<class 'sage.repl.rich_output.test_backend.TestOutputPlainText'>]

    Python

        >>> from sage.all import *
        >>> display_manager = sage.repl.rich_output.get_display_manager()
        >>> backend = display_manager._backend
        >>> list(backend.supported_output())
        [<class 'sage.repl.rich_output.test_backend.TestOutputPlainText'>]

    The output of this method is used by the display manager to set up the actual supported outputs. Compare:

    Sage

        sage: list(display_manager.supported_output())
        [<class 'sage.repl.rich_output.output_basic.OutputPlainText'>]

    [Python]

        >>> from sage.all import *
        >>> list(display_manager.supported_output())
        [<class 'sage.repl.rich_output.output_basic.OutputPlainText'>]

class sage.repl.rich_output.test_backend.TestObject

  Bases: `SageObject`

  Test object with both `_repr_()` and `_rich_repr_()`

class sage.repl.rich_output.test_backend.TestOutputPlainText(*args, **kwds)

  Bases: `OutputPlainText`

  Backend-specific subclass of the plain text output container.

  Backends must not influence how the display system constructs output containers, they can only control how the output container is displayed. In particular, we cannot override the constructor (only the `OutputPlainText` constructor is used).

  EXAMPLES:

  Sage

      sage: from sage.repl.rich_output.test_backend import TestOutputPlainText
      sage: TestOutputPlainText()
      Traceback (most recent call last):
      ...
      AssertionError: cannot override constructor

  Python

      >>> from sage.all import *
      >>> from sage.repl.rich_output.test_backend import TestOutputPlainText
      >>> TestOutputPlainText()
      Traceback (most recent call last):
      ...
      AssertionError: cannot override constructor

  print_to_stdout()

    Write the data to stdout.

    This is just a convenience method to help with debugging.

    EXAMPLES:

    Sage

        sage: from sage.repl.rich_output import get_display_manager
        sage: dm = get_display_manager()
        sage: test_output = dm.displayhook(123)
        123 [TestOutputPlainText]
        sage: type(test_output)
        <class 'sage.repl.rich_output.test_backend.TestOutputPlainText'>
        sage: test_output.print_to_stdout()
        123 [TestOutputPlainText]

    Python

        >>> from sage.all import *
        >>> from sage.repl.rich_output import get_display_manager
        >>> dm = get_display_manager()
        >>> test_output = dm.displayhook(Integer(123))
        123 [TestOutputPlainText]
        >>> type(test_output)
        <class 'sage.repl.rich_output.test_backend.TestOutputPlainText'>
        >>> test_output.print_to_stdout()
        123 [TestOutputPlainText]