Source code for tests.parse
"""Tests for the data_helper.parse module"""
import sys, unittest
from re import IGNORECASE
from BaseTest import BaseTestWrapper
[docs]class StrSplitSizeTestCase(BaseTestWrapper.BaseTest):
"""parse.str_split_size() test cases"""
[docs] def test_concat_string(self):
"""Test if a string concatenated N times is split N times"""
string = 'abcdabcdabcd'
n = 5
i = 0
concat_str = ''
while i < n:
concat_str += string
i += 1
result = self._bt['func'](concat_str, len(string))
self.assertEqual(n, len(result))
self.assertEqual(''.join(result), concat_str)
[docs] def test_even_length_string(self):
"""Test the value and number of elements returned from a string whose length is an even number"""
string = 'abcdabcdabcd'
length = len(string)
result = self._bt['func'](string, 2)
self.assertEqual(length / 2, len(result))
self.assertEqual(''.join(result), string)
[docs] def test_odd_length_string(self):
"""Test the value and number of elements returned from a string whose length is an odd number"""
string = 'abcabcabc'
length = len(string)
result = self._bt['func'](string, 2)
self.assertEqual((length / 2) + 1, len(result))
self.assertEqual(''.join(result), string)
[docs] def test_integer(self):
"""Test the value and number of elements returned from an integer"""
integer = 1010101010
length = len(str(integer))
result = self._bt['func'](integer, 2)
self.assertEqual(length / 2, len(result))
self.assertEqual(''.join(result), str(integer))
[docs]class StrSplitCapsTestCase(BaseTestWrapper.BaseTest):
"""parse.str_split_caps() test cases"""
[docs] def test_trim(self):
"""Test if whitespace is trimmed"""
string = 'Foo Bar'
result = self._bt['func'](string, False)
self.assertListEqual(result, ['Foo ', 'Bar'])
result = self._bt['func'](string, True)
self.assertListEqual(result, ['Foo', 'Bar'])
[docs]class ListFilterTestCase(BaseTestWrapper.BaseTest):
"""parse.list_filter() test cases"""
@classmethod
[docs] def setUpClass(self):
cls = self.__mro__[0]
super(cls, self).setUpClass()
self._bt['sample_list'] = [
'abcdefghijklm',
'NOPQRSTUVWXYZ',
'example.txt',
'./readme.md',
'1234567890',
'hello world',
'123 Fake St.'
]
[docs] def test_wildcard(self):
"""Test if a pattern matching any characters returns all"""
p = '.*'
l = self._bt['sample_list']
result = self._bt['func'](p, l)
self.assertListEqual(result, l)
[docs] def test_file_ext(self):
"""Test a pattern for matching a file extension '.md'"""
p = '^.*\.md$'
l = self._bt['sample_list']
result = self._bt['func'](p, l)
self.assertListEqual(result, ['./readme.md'])
[docs] def test_case_i(self):
"""Test a case insensitive pattern"""
p = '^[a-z]+$'
l = self._bt['sample_list']
result = self._bt['func'](p, l, IGNORECASE)
self.assertListEqual(result, ['abcdefghijklm', 'NOPQRSTUVWXYZ'])
[docs] def test_caps_only(self):
"""Test a pattern for only capital letters"""
p = '^[A-Z]+$'
l = self._bt['sample_list']
result = self._bt['func'](p, l)
self.assertListEqual(result, ['NOPQRSTUVWXYZ'])
[docs] def test_has_numbers(self):
"""Test a pattern for numbers included"""
p = '^.*[0-9]+.*$'
l = self._bt['sample_list']
result = self._bt['func'](p, l)
self.assertListEqual(result, ['1234567890', '123 Fake St.'])
loader = unittest.TestLoader()
suite = loader.loadTestsFromModule(sys.modules[__name__])
if __name__ == '__main__':
result = unittest.result.TestResult()
suite.run(result)
print result
for f in result.failures:
for t in f:
print t
print ''
for e in result.errors:
for t in e:
print t
print ''