-
Notifications
You must be signed in to change notification settings - Fork 0
/
mimeparse_test.py
68 lines (57 loc) · 2.3 KB
/
mimeparse_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""
Python tests for Mime-Type Parser.
This module loads a json file and converts the tests specified therein to a set
of PyUnitTestCases. Then it uses PyUnit to run them and report their status.
"""
__version__ = "0.1"
__author__ = 'Ade Oshineye'
__email__ = "[email protected]"
__credits__ = ""
import mimeparse
import unittest
from functools import partial
# Conditional import to support Python 2.5
try:
import json
except ImportError:
import simplejson as json
def test_parse_media_range(args, expected):
expected = tuple(expected)
result = mimeparse.parse_media_range(args)
message = "Expected: '%s' but got %s" % (expected, result)
assert expected == result, message
def test_quality(args, expected):
result = mimeparse.quality(args[0], args[1])
message = "Expected: '%s' but got %s" % (expected, result)
assert expected == result, message
def test_best_match(args, expected):
result = mimeparse.best_match(args[0], args[1])
message = "Expected: '%s' but got %s" % (expected, result)
assert expected == result, message
def test_parse_mime_type(args, expected):
expected = tuple(expected)
result = mimeparse.parse_mime_type(args)
message = "Expected: '%s' but got %s" % (expected, result)
assert expected == result, message
def add_tests(suite, json_object, func_name, test_func):
test_data = json_object[func_name]
for test_datum in test_data:
args, expected = test_datum[0], test_datum[1]
desc = "%s(%s) with expected result: %s" % (func_name, str(args), str(expected))
if len(test_datum) == 3:
desc = test_datum[2] + " : " + desc
func = partial(test_func, *(args, expected))
func.__name__ = test_func.__name__
testcase = unittest.FunctionTestCase(func, description=desc)
suite.addTest(testcase)
def run_tests():
json_object = json.load(open("testdata.json"))
suite = unittest.TestSuite()
add_tests(suite, json_object, "parse_media_range", test_parse_media_range)
add_tests(suite, json_object, "quality", test_quality)
add_tests(suite, json_object, "best_match", test_best_match)
add_tests(suite, json_object, "parse_mime_type", test_parse_mime_type)
test_runner = unittest.TextTestRunner(verbosity=1)
test_runner.run(suite)
if __name__ == "__main__":
run_tests()