83 def test_default_arguments_decorator(self):
84 """test default_arguments_decorator()"""
85 TestClass.backup_test_function_return_args = TestClass.test_function_return_args
86 TestClass.backup_test_function_return_arg_karg = (
87 TestClass.test_function_return_arg_karg
88 )
89 self.t = TestClass()
90
91 arg1 = "arg1"
92 arg2 = "arg2"
93 arg3 = {"arg3": arg2}
94 arg4 = 4
95 TestClass.decorate_method(
96 default_arguments_decorator, "test_function_return_args", arg1, arg2
97 )
98 self.assertEqual(
99 self.t.test_function_return_args(), (self.t.instance, (arg2,), {})
100 )
101 self.assertEqual(
102 self.t.test_function_return_args(arg3), (self.t.instance, (arg3,), {})
103 )
104 self.assertEqual(
105 self.t.test_function_return_args(arg1, arg3),
106 (self.t.instance, (arg1, arg3), {}),
107 )
108 self.assertEqual(
109 self.t.test_function_return_args(arg1, arg3, arg4=arg4),
110 (self.t.instance, (arg1, arg3), {"arg4": arg4}),
111 )
112
113 TestClass.test_function_return_args = TestClass.backup_test_function_return_args
114 TestClass.decorate_method(
115 default_arguments_decorator,
116 "test_function_return_args",
117 arg1,
118 arg2,
119 arg4=arg4,
120 )
121 self.assertEqual(
122 self.t.test_function_return_args(),
123 (self.t.instance, (arg2,), {"arg4": arg4}),
124 )
125 self.assertEqual(
126 self.t.test_function_return_args(arg1, arg3, arg4=arg2),
127 (self.t.instance, (arg1, arg3), {"arg4": arg2}),
128 )
129
130 with self.assertRaises(TypeError):
131
132 TestClass.decorate_method(
133 default_arguments_decorator,
134 "test_function_return_arg_karg",
135 None,
136 arg1,
137 a=arg2,
138 kargs_pos={"a": 1, "b": 2},
139 )
140 TestClass.decorate_method(
141 default_arguments_decorator,
142 "test_function_return_arg_karg",
143 None,
144 a=arg1,
145 kargs_pos={"a": 1, "b": 2},
146 )
147 self.assertEqual(
148 self.t.test_function_return_arg_karg(),
149 {"self": self.t.instance, "a": arg1, "b": b_default},
150 )
151
152 TestClass.test_function_return_arg_karg = (
153 TestClass.backup_test_function_return_arg_karg
154 )
155 TestClass.decorate_method(
156 default_arguments_decorator,
157 "test_function_return_arg_karg",
158 None,
159 arg1,
160 kargs_pos={"a": 1, "b": 2},
161 )
162 self.assertEqual(
163 self.t.test_function_return_arg_karg(),
164 {"self": self.t.instance, "a": arg1, "b": b_default},
165 )
166 self.assertEqual(
167 self.t.test_function_return_arg_karg(arg2),
168 {"self": self.t.instance, "a": arg2, "b": b_default},
169 )
170 self.assertEqual(
171 self.t.test_function_return_arg_karg(arg2, arg3),
172 {"self": self.t.instance, "a": arg2, "b": arg3},
173 )
174
175