1from cStringIO import StringIO
2
3import unittest
4import unittest2
5
6from unittest2.test.support import resultFactory
7
8
9class TestUnittest(unittest2.TestCase):
10
11    def assertIsSubclass(self, actual, klass):
12        self.assertTrue(issubclass(actual, klass), "Not a subclass.")
13
14    def testInheritance(self):
15        self.assertIsSubclass(unittest2.TestCase, unittest.TestCase)
16        self.assertIsSubclass(unittest2.TestResult, unittest.TestResult)
17        self.assertIsSubclass(unittest2.TestSuite, unittest.TestSuite)
18        self.assertIsSubclass(unittest2.TextTestRunner, unittest.TextTestRunner)
19        self.assertIsSubclass(unittest2.TestLoader, unittest.TestLoader)
20        self.assertIsSubclass(unittest2.TextTestResult, unittest.TestResult)
21
22    def test_new_runner_old_case(self):
23        runner = unittest2.TextTestRunner(resultclass=resultFactory,
24                                          stream=StringIO())
25        class Test(unittest.TestCase):
26            def testOne(self):
27                pass
28        suite = unittest2.TestSuite((Test('testOne'),))
29        result = runner.run(suite)
30        self.assertEqual(result.testsRun, 1)
31        self.assertEqual(len(result.errors), 0)
32
33    def test_old_runner_new_case(self):
34        runner = unittest.TextTestRunner(stream=StringIO())
35        class Test(unittest2.TestCase):
36            def testOne(self):
37                self.assertDictEqual({}, {})
38
39        suite = unittest.TestSuite((Test('testOne'),))
40        result = runner.run(suite)
41        self.assertEqual(result.testsRun, 1)
42        self.assertEqual(len(result.errors), 0)
43
44
45if __name__ == '__main__':
46    unittest2.main()