Completed
Push — master ( 159278...dbe2dc )
by Jerome
01:24
created

TestLCS   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 3
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A test_string() 0 2 1
1
import unittest
2
3
from pycode.utils import Decorator
4
from pycode.utils import lcs
5
6
7
class TestDecorator(unittest.TestCase):
8
    def test_init(self):
9
        self.assertIsNotNone(Decorator())
10
11
    def test_class_without_args(self):
12
        @Decorator
13
        class A:
14
            def a(self):
15
                return 2
16
        a_inst = A()
17
18
        self.assertIsNotNone(a_inst)
19
        self.assertEqual(a_inst.__class__.__name__,"A")
20
        self.assertEqual(a_inst.a(),2)
21
22
    def test_method_without_args(self):
23
        @Decorator
24
        def A():
25
            return 3
26
27
        self.assertEqual(A(), 3)
28
29
    def test_arg_class_without_args(self):
30
        @Decorator
31
        class A:
32
            def __init__(self,b):
33
                self.b = b
34
35
            def a(self):
36
                return self.b
37
38
        a_inst = A(2)
39
40
        self.assertIsNotNone(a_inst)
41
        self.assertEqual(a_inst.__class__.__name__, "A")
42
        self.assertEqual(a_inst.a(), 2)
43
44
    def test_arg_method_without_args(self):
45
        @Decorator
46
        def A(a):
47
            return a
48
49
        self.assertEqual(A(3), 3)
50
51
    def test_class_with_args(self):
52
        @Decorator(1,k=2)
53
        class A:
54
            def a(self):
55
                return 2
56
        a_inst = A()
57
58
        self.assertIsNotNone(a_inst)
59
        self.assertEqual(a_inst.__class__.__name__,"A")
60
        self.assertEqual(a_inst.a(),2)
61
62
    def test_method_with_args(self):
63
        @Decorator(1,k=2)
64
        def A():
65
            return 3
66
67
        self.assertEqual(A(), 3)
68
69
    def test_arg_class_with_args(self):
70
        @Decorator(1,k=2)
71
        class A:
72
            def __init__(self, b):
73
                self.b = b
74
75
            def a(self):
76
                return self.b
77
78
        a_inst = A(2)
79
80
        self.assertIsNotNone(a_inst)
81
        self.assertEqual(a_inst.__class__.__name__, "A")
82
        self.assertEqual(a_inst.a(), 2)
83
84
    def test_arg_method_without_args(self):
85
        @Decorator(1,k=2)
86
        def A(a):
87
            return a
88
89
        self.assertEqual(A(3), 3)
90
91
    def test_callable_as_decorator_arg_in_function(self):
92
        def f(a):
93
            return a*2
94
95
        @Decorator(f, k=2)
96
        def A(a):
97
            return a
98
99
        self.assertEqual(A(3), 3)
100
101
    def test_callable_as_decorator_arg_in_class(self):
102
        def f(a):
103
            return a*2
104
105
        @Decorator(f, k=2)
106
        class A:
107
            def __init__(self, b):
108
                self.b = b
109
110
            def a(self):
111
                return self.b
112
113
        a_inst = A(2)
114
115
        self.assertIsNotNone(a_inst)
116
        self.assertEqual(a_inst.__class__.__name__, "A")
117
        self.assertEqual(a_inst.a(), 2)
118
119
    def test_callable_everywhere_in_function(self):
120
        def f(a):
121
            return a*2
122
123
        def ident(a):
124
            return a
125
126
        @Decorator(f, k=2)
127
        def A(a):
128
            return a
129
130
        self.assertEqual(A(ident(3)), 3)
131
132
    def test_callable_everywhere_in_class(self):
133
        def f(a):
134
            return a*2
135
136
        def g(a):
137
            return a
138
139
        @Decorator(f, k=2)
140
        class A:
141
            def __init__(self, b):
142
                self.b = b
143
144
            def a(self):
145
                return self.b(2)
146
147
        a_inst = A(g)
148
149
        self.assertIsNotNone(a_inst)
150
        self.assertEqual(a_inst.__class__.__name__, "A")
151
        self.assertEqual(a_inst.a(), 2)
152
153
    def test_class_as_only_argument(self):
154
        class B:
155
            def __init__(self, *args, **kwargs):
156
                self.args = args
157
                self.kwargs = kwargs
158
159
        @Decorator(B,4)
160
        class A:
161
            def a(self):
162
                return 2
163
        a_inst = A()
164
165
        self.assertIsNotNone(a_inst)
166
        self.assertEqual(a_inst.__class__.__name__,"A")
167
        self.assertEqual(a_inst.a(),2)
168
169
    def test_class_decorator(self):
170
171
        class A(object):
172
            def __str__(self):
173
                return "Bla"
174
        a = Decorator.create_wrapping_class(A,{})
175
        self.assertEqual(str(a()),"Bla")
176
        self.assertEqual(a().__class__.__name__,"A")
177
        self.assertEqual(repr(a()).split("at 0x")[0],repr(A()).split("at 0x")[0])
178
        self.assertIsInstance(a(),A)
179
        self.assertEqual(repr(a),repr(A))
180
181
    def test_inheritance_in_class_decorator(self):
182
        class A(object):
183
            def a(self):
184
                return 2
185
        class B(A):
186
            def b(self):
187
                return 3
188
        b = Decorator.create_wrapping_class(B,{})
189
        class C(b):
190
            def c(self):
191
                return 4
192
        self.assertEqual(b().b(),3)
193
        self.assertEqual(b().a(),2)
194
        self.assertEqual(C().b(),3)
195
        self.assertTrue(issubclass(C,B))
196
        self.assertTrue(issubclass(C,A))
197
198
class TestLCS(unittest.TestCase):
199
    def test_string(self):
200
        self.assertEqual(lcs("123123123","352515"),"321")
201
202
203
if __name__ == "__main__":
204
    unittest.main()
205