# encoding: utf-8

"""This file contains unittests for the interpreter.py module."""

__docformat__ = "restructuredtext en"

#-----------------------------------------------------------------------------
#  Copyright (C) 2008-2009  The IPython Development Team                           
#                                                                             
#  Distributed under the terms of the BSD License.  The full license is in    
#  the file COPYING, distributed as part of this software.                    
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# Imports                                                                     
#-----------------------------------------------------------------------------

from IPython.kernel.core.interpreter import Interpreter
import nose

#-----------------------------------------------------------------------------
# Tests 
#-----------------------------------------------------------------------------

def test_unicode():
    """ Test unicode handling with the interpreter.
    """
    i = Interpreter()
    i.execute_python(u'print "ù"')
    i.execute_python('print "ù"')


def test_split_commands():
    """ Test that commands are indeed individually split.
    """
    i = Interpreter()
    test_atoms = [('(1\n + 1)', ),
                  ('1', '1', ),
                  ]
    for atoms in test_atoms:
        atoms = [atom.rstrip() + '\n' for atom in atoms]
        yield nose.tools.assert_equals, i.split_commands(''.join(atoms)), \
                                atoms


def test_long_lines():
    """ Test for spurious syntax error created by the interpreter.
    """
    test_strings = [u'( 1 +\n 1\n )\n\n',
                    u'(1 \n + 1\n )\n\n',
                   ]
    i = Interpreter()
    for s in test_strings:
        yield i.execute, s