# encoding: utf-8 """This file contains unittests for the shell.py module.""" __docformat__ = "restructuredtext en" #------------------------------------------------------------------------------- # Copyright (C) 2008 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 #------------------------------------------------------------------------------- import unittest from IPython.kernel.core import shell resultKeys = ('commandIndex', 'stdin', 'stdout', 'stderr') class BasicShellTest(unittest.TestCase): def setUp(self): self.s = shell.InteractiveShell() def testExecute(self): commands = [(0,"a = 5","",""), (1,"b = 10","",""), (2,"c = a + b","",""), (3,"print c","15\n",""), (4,"import math","",""), (5,"2.0*math.pi","6.2831853071795862\n","")] for c in commands: result = self.s.execute(c[1]) self.assertEquals(result, dict(zip(resultKeys,c))) def testPutGet(self): objs = [10,"hi there",1.2342354,{"p":(1,2)}] for o in objs: self.s.put("key",o) value = self.s.get("key") self.assertEquals(value,o) self.assertRaises(TypeError, self.s.put,10) self.assertRaises(TypeError, self.s.get,10) self.s.reset() self.assertRaises(NameError, self.s.get, 'a') def testUpdate(self): d = {"a": 10, "b": 34.3434, "c": "hi there"} self.s.update(d) for k in d.keys(): value = self.s.get(k) self.assertEquals(value, d[k]) self.assertRaises(TypeError, self.s.update, [1,2,2]) def testCommand(self): self.assertRaises(IndexError,self.s.getCommand) self.s.execute("a = 5") self.assertEquals(self.s.getCommand(), dict(zip(resultKeys, (0,"a = 5","","")))) self.assertEquals(self.s.getCommand(0), dict(zip(resultKeys, (0,"a = 5","","")))) self.s.reset() self.assertEquals(self.s.getLastCommandIndex(),-1) self.assertRaises(IndexError,self.s.getCommand)