forked from benevolentprof/inf1340_2015_asst2
/
test_exercise3.py
134 lines (100 loc) · 3.83 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
125
126
127
128
129
130
131
132
133
134
#!/usr/bin/env python
""" Assignment 2, Exercise 3, INF1340, Fall, 2015. DBMS
Test module for exercise3.py
"""
__author__ = 'Susan Sim'
__email__ = "ses@drsusansim.org"
__copyright__ = "2015 Susan Sim"
__license__ = "MIT License"
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]]
APPLICANT = [["Name", "Gender", "Age", "School"],
["Matt", "Male", 21, "McMaster University"],
["Katie", "Female", 22, "University od Waterloo"],
["Claire", "Female", 24, "University of Toronto"],
["Stephen", "Male", 23, "University of Ottawa"]]
CANDIDATE = [["Name", "Gender", "Age", "School"],
["Ryan", "Male", 19, "SFU"],
["Michael", "Male", 22, "Queens University"],
["Katie", "Female", 22, "University od Waterloo"],
["Stephen", "Male", 23, "University of Ottawa"]]
#####################
# HELPER FUNCTIONS ##
#####################
def is_equal(t1, t2):
return sorted(t1) == sorted(t2)
###################
# TEST FUNCTIONS ##
###################
def test_difference():
"""
Test difference operation.
"""
result = [["Number", "Surname", "Age"],
[7274, "Robinson", 37]]
result_2 = [["Name", "Gender", "Age", "School"],
["Matt", "Male", 21, "McMaster University"],
["Claire", "Female", 24, "University of Toronto"]]
assert is_equal(result, difference(GRADUATES, MANAGERS))
assert is_equal(result_2, difference(APPLICANT,CANDIDATE))
try:
assert difference(GRADUATES, APPLICANT)
except MismatchedAttributesException:
pass
def test_intersection():
"""
Test intersection operation.
"""
intersection_result = [["Number", "Surname", "Age"],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
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]]
result_2 = [["Name", "Gender", "Age", "School"],
["Katie", "Female", 22, "University od Waterloo"],
["Stephen", "Male", 23, "University of Ottawa"]]
assert is_equal(intersection_result, intersection(graduates, managers))
assert is_equal(result_2, intersection(APPLICANT, CANDIDATE))
try:
assert intersection(GRADUATES, APPLICANT)
except MismatchedAttributesException:
pass
def test_union():
"""
Test union operation.
"""
result = [["Number", "Surname", "Age"],
[7274, "Robinson", 37],
[9297, "O'Malley", 56],
[7432, "O'Malley", 39],
[9824, "Darkes", 38]]
result_2 =[["Name", "Gender", "Age", "School"],
["Matt", "Male", 21, "McMaster University"],
["Katie", "Female", 22, "University od Waterloo"],
["Claire", "Female", 24, "University of Toronto"],
["Stephen", "Male", 23, "University of Ottawa"],
["Ryan", "Male", 19, "SFU"],
["Michael", "Male", 22, "Queens University"]]
assert is_equal(result, union(GRADUATES, MANAGERS))
assert is_equal(result_2,union(APPLICANT,CANDIDATE))
# When schemas in lists do not match
try:
assert union(GRADUATES, APPLICANT)
except MismatchedAttributesException:
pass