"""Tests for the latex preprocessor"""

# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.

from .base import PreprocessorTestsBase
from ..latex import LatexPreprocessor


class TestLatex(PreprocessorTestsBase):
    """Contains test functions for latex.py"""


    def build_preprocessor(self):
        """Make an instance of a preprocessor"""
        preprocessor = LatexPreprocessor()
        preprocessor.enabled = True
        return preprocessor

    def test_constructor(self):
        """Can a LatexPreprocessor be constructed?"""
        self.build_preprocessor()
        

    def test_output(self):
        """Test the output of the LatexPreprocessor"""
        nb = self.build_notebook()
        res = self.build_resources()
        preprocessor = self.build_preprocessor()
        nb, res = preprocessor(nb, res)

        # Make sure the code cell wasn't modified.
        self.assertEqual(nb.cells[0].source, '$ e $')

        # Verify that the markdown cell wasn't processed.
        self.assertEqual(nb.cells[1].source, '$ e $')
    
    def test_highlight(self):
        """Check that highlighting style can be changed"""
        nb = self.build_notebook()
        res = self.build_resources()
        preprocessor = self.build_preprocessor()

        # Set the style to a known builtin that's not the default
        preprocessor.style='colorful'
        nb, res = preprocessor(nb, res)
        style_defs = res['latex']['pygments_definitions']

        # Get the default
        from pygments.formatters import LatexFormatter
        default_defs = LatexFormatter(style='default').get_style_defs()

        # Verify that the style was in fact changed
        assert style_defs != default_defs
