mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-25 01:57:12 +00:00
79 lines
2.5 KiB
Python
Executable File
79 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
"""
|
|
test talos' filter module:
|
|
|
|
http://hg.mozilla.org/build/talos/file/tip/talos/filter.py
|
|
"""
|
|
|
|
import unittest
|
|
import talos.filter
|
|
|
|
|
|
class TestFilter(unittest.TestCase):
|
|
|
|
data = range(30) # test data
|
|
|
|
def test_ignore(self):
|
|
"""test the ignore filter"""
|
|
# a bit of a stub sanity test for a single filter
|
|
|
|
filtered = talos.filter.ignore_first(self.data)
|
|
self.assertEquals(filtered, self.data[1:])
|
|
|
|
filtered = talos.filter.ignore_first(self.data, 10)
|
|
self.assertEquals(filtered, self.data[10:])
|
|
|
|
# short series won't be filtered
|
|
filtered = talos.filter.ignore_first(self.data, 50)
|
|
self.assertEquals(filtered, self.data)
|
|
|
|
def test_getting_filters(self):
|
|
"""test getting a list of filters from a string"""
|
|
|
|
filter_names = ['ignore_max', 'ignore_max', 'max']
|
|
|
|
# get the filter functions
|
|
filters = talos.filter.filters(*filter_names)
|
|
self.assertEquals(len(filter_names), len(filters))
|
|
for filter in filters:
|
|
self.assertTrue(self, hasattr(filter, '__call__'))
|
|
|
|
# apply them on the data
|
|
filtered = talos.filter.apply(self.data, filters)
|
|
self.assertEquals(filtered, 27)
|
|
|
|
def test_parse(self):
|
|
"""test the filter name parse function"""
|
|
|
|
# an example with no arguments
|
|
parsed = talos.filter.parse('mean')
|
|
self.assertEquals(parsed, ['mean', []])
|
|
|
|
# an example with one integer argument
|
|
parsed = talos.filter.parse('ignore_first:10')
|
|
self.assertEquals(parsed, ['ignore_first', [10]])
|
|
self.assertEquals(type(parsed[1][0]), int)
|
|
self.assertNotEqual(type(parsed[1][0]), float)
|
|
|
|
# an example with several arguments
|
|
|
|
# temporarily add foo
|
|
# value is lambda function to mimic filter_dict key:value pair
|
|
talos.filter.scalar_filters['foo'] = lambda *args: args
|
|
parsed = talos.filter.parse('foo:10.1,2,5.0,6.')
|
|
self.assertEquals(parsed, ['foo', [10.1, 2, 5.0, 6.0]])
|
|
for index in (2,3):
|
|
self.assertEquals(type(parsed[1][index]), float)
|
|
self.assertNotEqual(type(parsed[1][index]), int)
|
|
|
|
# an example that should fail
|
|
self.assertRaises(ValueError, talos.filter.parse, 'foo:bar')
|
|
self.assertRaises(ValueError, talos.filter.parse, 'foo:1,')
|
|
|
|
# delete foo again
|
|
del talos.filter.scalar_filters['foo']
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|