forked from benevolentprof/inf1340_2015_asst2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_exercise3.py
124 lines (91 loc) · 3.19 KB
/
test_exercise3.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/env python
""" Assignment 2, Exercise 3, INF1340, Fall, 2015. DBMS
Test module for exercise3.py
"""
__author__ = 'Eden Rusnell & Ming Fu'
from exercise3 import union, intersection, difference, MismatchedAttributesException
###########
# TABLES ##
###########
GRADUATES = [["Number", "Surname", "Age"],
[7274, "Robinson", 37],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
MANAGERS = [["Number", "Surname", "Age"],
[9297, "O'Malley", 56],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
MISMATCHED = [["Name", "Age", "Title", "Sign"],
["Tom", 23, "Dr.", "Libra"],
["Jenny", 47, "Captain", "Gemini"]]
NOCOMMON = [["Number", "Name", "Age"]]
#####################
# HELPER FUNCTIONS ##
#####################
def is_equal(t1, t2):
return sorted(t1) == sorted(t2)
###################
# TEST FUNCTIONS ##
###################
def test_union():
"""
Test union operation.
"""
result = [["Number", "Surname", "Age"],
[7274, "Robinson", 37],
[9297, "O'Malley", 56],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
assert is_equal(result, union(GRADUATES, MANAGERS))
def test_intersection():
"""
Test intersection operation.
"""
result = [["Number", "Surname", "Age"],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
assert is_equal(result, intersection(GRADUATES, MANAGERS))
def test_difference():
"""
Test difference operation.
"""
result = [["Number", "Surname", "Age"],
[7274, "Robinson", 37]]
assert is_equal(result, difference(GRADUATES, MANAGERS))
# test cases added by module authors
def test_intersection_works():
result = [["Number", "Surname", "Age"],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
assert is_equal(result, intersection(MANAGERS, GRADUATES))
def test_intersection_errors():
assert intersection(GRADUATES, MISMATCHED) is None
assert intersection(MANAGERS, MISMATCHED) is None
def test_difference_works():
result = [["Number", "Surname", "Age"],
[9297, "O'Malley", 56]]
assert is_equal(result, difference(MANAGERS, GRADUATES))
result2 = [["Number", "Surname", "Age"],
[7274, "Robinson", 37]]
assert is_equal(result2, difference(GRADUATES, MANAGERS))
def test_difference_errors():
assert difference(GRADUATES, MISMATCHED) is None
assert difference(MANAGERS, MISMATCHED) is None
def test_union_works():
result = [["Number", "Surname", "Age"],
[7274, "Robinson", 37],
[9297, "O'Malley", 56],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
assert is_equal(result, union(MANAGERS, GRADUATES))
def test_union_errors():
assert union(GRADUATES, MISMATCHED) is None
assert union(MANAGERS, MISMATCHED) is None
def test_error_raised():
try:
union(MANAGERS, MISMATCHED)
except MismatchedAttributesError:
assert MismatchedAttributesException
def test_nothing_in_common():
assert difference(NOCOMMON, MANAGERS) is None
assert intersection(GRADUATES, NOCOMMON) is None