113
114
def _register_map(self, pref, stk1, stk2):
114
115
def stk_lookup(key):
115
116
return {'v1': stk1, 'v2': stk2}.get(key)
116
filters.filter_stacks_registry.register(pref, stk_lookup)
117
register_filter_stack_map(pref, stk_lookup)
118
119
def test_filter_stack_maps(self):
119
120
# Save the current registry
120
121
original_registry = filters._reset_registry()
121
self.addCleanup(filters._reset_registry, original_registry)
123
a_stack = [ContentFilter('b', 'c')]
124
z_stack = [ContentFilter('y', 'x'), ContentFilter('w', 'v')]
125
self._register_map('foo', a_stack, z_stack)
126
self.assertEqual(['foo'], _get_registered_names())
127
self._register_map('bar', z_stack, a_stack)
128
self.assertEqual(['bar', 'foo'], _get_registered_names())
129
# Test re-registration raises an error
130
self.assertRaises(KeyError, self._register_map,
124
a_stack = [ContentFilter('b', 'c')]
125
z_stack = [ContentFilter('y', 'x'), ContentFilter('w', 'v')]
126
self._register_map('foo', a_stack, z_stack)
127
self.assertEqual(['foo'], _get_registered_names())
128
self._register_map('bar', z_stack, a_stack)
129
self.assertEqual(['bar', 'foo'], _get_registered_names())
130
# Test re-registration raises an error
131
self.assertRaises(errors.BzrError, self._register_map,
134
# Restore the real registry
135
filters._reset_registry(original_registry)
133
137
def test_get_filter_stack_for(self):
134
138
# Save the current registry
135
139
original_registry = filters._reset_registry()
136
self.addCleanup(filters._reset_registry, original_registry)
137
# Test filter stack lookup
138
a_stack = [ContentFilter('b', 'c')]
139
d_stack = [ContentFilter('d', 'D')]
140
z_stack = [ContentFilter('y', 'x'), ContentFilter('w', 'v')]
141
self._register_map('foo', a_stack, z_stack)
142
self._register_map('bar', d_stack, z_stack)
143
prefs = (('foo','v1'),)
144
self.assertEqual(a_stack, _get_filter_stack_for(prefs))
145
prefs = (('foo','v2'),)
146
self.assertEqual(z_stack, _get_filter_stack_for(prefs))
147
prefs = (('foo','v1'), ('bar','v1'))
148
self.assertEqual(a_stack + d_stack, _get_filter_stack_for(prefs))
149
# Test an unknown preference
150
prefs = (('baz','v1'),)
151
self.assertEqual([], _get_filter_stack_for(prefs))
152
# Test an unknown value
153
prefs = (('foo','v3'),)
154
self.assertEqual([], _get_filter_stack_for(prefs))
155
# Test a value of None is skipped
156
prefs = (('foo',None), ('bar', 'v1'))
157
self.assertEqual(d_stack, _get_filter_stack_for(prefs))
141
# Test filter stack lookup
142
a_stack = [ContentFilter('b', 'c')]
143
d_stack = [ContentFilter('d', 'D')]
144
z_stack = [ContentFilter('y', 'x'), ContentFilter('w', 'v')]
145
self._register_map('foo', a_stack, z_stack)
146
self._register_map('bar', d_stack, z_stack)
147
prefs = (('foo','v1'),)
148
self.assertEqual(a_stack, _get_filter_stack_for(prefs))
149
prefs = (('foo','v2'),)
150
self.assertEqual(z_stack, _get_filter_stack_for(prefs))
151
prefs = (('foo','v1'), ('bar','v1'))
152
self.assertEqual(a_stack + d_stack, _get_filter_stack_for(prefs))
153
# Test an unknown preference
154
prefs = (('baz','v1'),)
155
self.assertEqual([], _get_filter_stack_for(prefs))
156
# Test an unknown value
157
prefs = (('foo','v3'),)
158
self.assertEqual([], _get_filter_stack_for(prefs))
159
# Test a value of None is skipped
160
prefs = (('foo',None), ('bar', 'v1'))
161
self.assertEqual(d_stack, _get_filter_stack_for(prefs))
163
# Restore the real registry
164
filters._reset_registry(original_registry)