#!/usr/bin/env python """A few unit tests for the Shell module. """ from unittest import TestCase, main from IPython import Shell try: import matplotlib has_matplotlib = True except ImportError: has_matplotlib = False class ShellTestBase(TestCase): def _test(self,argv,ans): shell = Shell._select_shell(argv) err = 'Got %s != %s' % (shell,ans) self.failUnlessEqual(shell,ans,err) class ArgsTestCase(ShellTestBase): def test_plain(self): self._test([],Shell.IPShell) def test_tkthread(self): self._test(['-tkthread'],Shell.IPShell) def test_gthread(self): self._test(['-gthread'],Shell.IPShellGTK) def test_qthread(self): self._test(['-qthread'],Shell.IPShellQt) def test_q4thread(self): self._test(['-q4thread'],Shell.IPShellQt4) def test_wthread(self): self._test(['-wthread'],Shell.IPShellWX) if has_matplotlib: class MplArgsTestCase(ShellTestBase): def setUp(self): self.backend = matplotlib.rcParams['backend'] def tearDown(self): matplotlib.rcParams['backend'] = self.backend def _test(self,argv,ans): shell = Shell._select_shell(argv) err = 'Got %s != %s' % (shell,ans) self.failUnlessEqual(shell,ans,err) def test_tk(self): matplotlib.rcParams['backend'] = 'TkAgg' self._test(['-pylab'],Shell.IPShellMatplotlib) def test_ps(self): matplotlib.rcParams['backend'] = 'PS' self._test(['-pylab'],Shell.IPShellMatplotlib) def test_gtk(self): matplotlib.rcParams['backend'] = 'GTKAgg' self._test(['-pylab'],Shell.IPShellMatplotlibGTK) def test_gtk_2(self): self._test(['-gthread','-pylab'],Shell.IPShellMatplotlibGTK) self.failUnlessEqual(matplotlib.rcParams['backend'],'GTKAgg') def test_qt(self): matplotlib.rcParams['backend'] = 'QtAgg' self._test(['-pylab'],Shell.IPShellMatplotlibQt) def test_qt_2(self): self._test(['-qthread','-pylab'],Shell.IPShellMatplotlibQt) self.failUnlessEqual(matplotlib.rcParams['backend'],'QtAgg') def test_qt4(self): matplotlib.rcParams['backend'] = 'Qt4Agg' self._test(['-pylab'],Shell.IPShellMatplotlibQt4) def test_qt4_2(self): self._test(['-q4thread','-pylab'],Shell.IPShellMatplotlibQt4) self.failUnlessEqual(matplotlib.rcParams['backend'],'Qt4Agg') def test_wx(self): matplotlib.rcParams['backend'] = 'WxAgg' self._test(['-pylab'],Shell.IPShellMatplotlibWX) def test_wx_2(self): self._test(['-pylab','-wthread'],Shell.IPShellMatplotlibWX) self.failUnlessEqual(matplotlib.rcParams['backend'],'WXAgg') main()