aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/trial/test/test_testcase.py
blob: 4b24f3a19c96beba60e50fde3da9563dadb94a16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.

"""
Direct unit tests for L{twisted.trial.unittest.SynchronousTestCase} and
L{twisted.trial.unittest.TestCase}.
"""

from twisted.trial.unittest import SynchronousTestCase, TestCase


class TestCaseMixin(object):
    """
    L{TestCase} tests.
    """
    def setUp(self):
        """
        Create a couple instances of C{MyTestCase}, each for the same test
        method, to be used in the test methods of this class.
        """
        self.first = self.MyTestCase('test_1')
        self.second = self.MyTestCase('test_1')


    def test_equality(self):
        """
        In order for one test method to be runnable twice, two TestCase
        instances with the same test method name must not compare as equal.
        """
        self.assertTrue(self.first == self.first)
        self.assertTrue(self.first != self.second)
        self.assertFalse(self.first == self.second)


    def test_hashability(self):
        """
        In order for one test method to be runnable twice, two TestCase
        instances with the same test method name should not have the same
        hash value.
        """
        container = {}
        container[self.first] = None
        container[self.second] = None
        self.assertEqual(len(container), 2)



class SynchronousTestCaseTests(TestCaseMixin, SynchronousTestCase):
    class MyTestCase(SynchronousTestCase):
        """
        Some test methods which can be used to test behaviors of
        L{SynchronousTestCase}.
        """
        def test_1(self):
            pass



# Yes, subclass SynchronousTestCase again.  There are no interesting behaviors
# of self being tested below, only of self.MyTestCase.
class AsynchronousTestCaseTests(TestCaseMixin, SynchronousTestCase):
    class MyTestCase(TestCase):
        """
        Some test methods which can be used to test behaviors of
        L{TestCase}.
        """
        def test_1(self):
            pass