-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget_user_test.py
154 lines (131 loc) · 4.72 KB
/
get_user_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
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
##AST validity tests
#test FriendOf
try:
fr=FriendOf()
except Exception as e:
assert str(e)=="at least 1 screen name must be specified to FriendOf","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
try:
fr=FriendOf(fr=FriendOf(1,2))
except Exception as e:
assert str(e)=="arguments to FriendOf must be strings","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
#test FollowerOf
try:
fo=FriendOf()
except Exception as e:
assert str(e)=="at least 1 screen name must be specified to FriendOf","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
try:
fo=FriendOf(fr=FriendOf(1,2))
except Exception as e:
assert str(e)=="arguments to FriendOf must be strings","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
#test Not
try:
Not(1)
except Exception as e:
assert str(e)=="Not can only contain FriendOf, FollowerOf, or Or clauses","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
#test And
try:
And()
except Exception as e:
assert str(e)=="must supply at least 2 clauses to And","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
try:
And(1,"a")
except Exception as e:
assert str(e)=="And clauses can only contain _QueryNodes","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
try:
And(And(FriendOf("a"),FriendOf("a")),FriendOf("a"))
except Exception as e:
assert str(e)=="And clauses can not contain And clauses","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
#test Or
try:
Or()
except Exception as e:
assert str(e)=="must supply at least 2 clauses to Or","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
try:
Or(And(FriendOf("a"),FriendOf("a")),FriendOf("a"))
except Exception as e:
assert str(e)=="Or clauses can only contain FriendOf or FollowerOf clauses","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
try:
Or(FriendOf("a"),FollowerOf("a"))
except Exception as e:
assert str(e)=="Or must contain clauses of the SAME type: either FriendOf or FollowerOf","wrong error: "+str(e)
else:
assert False, "didn't receive expected exception"
##test _getFriendingUsers _getFollowedUsers _getNotFriendingUsers _getNotFollowedUsers
def sortedgroups(groups):
return sorted([sorted(group) for group in groups])
#FriendFollower
fr=FriendOf("a","b")
assert sortedgroups(fr._getFriendingUsers())==[["a","b"]]
assert fr._getFollowedUsers()==[]
assert fr._getNotFriendingUsers()==[]
assert fr._getNotFollowedUsers()==[]
fo=FollowerOf("a","b")
assert sortedgroups(fo._getFollowedUsers())==[["a","b"]]
assert fo._getFriendingUsers()==[]
assert fo._getNotFriendingUsers()==[]
assert fo._getNotFollowedUsers()==[]
#Not
#TODO - uncomment this after suppor https://github.com/JnBrymn/minglbot/issues/26 works
# n = Not(FriendOf("a","b"))
# assert n._getFriendingUsers()==[]
# assert n._getFollowedUsers()==[]
# assert sortedgroups(n._getNotFriendingUsers())==[["a","b"]]
# assert n._getNotFollowedUsers()==[]
# n = Not(FollowerOf("a","b"))
# assert n._getFriendingUsers()==[]
# assert n._getFollowedUsers()==[]
# assert n._getNotFriendingUsers()==[]
# assert sortedgroups(n._getNotFollowedUsers())==[["a","b"]]
#Or
o=Or(FriendOf("a","b"),FriendOf("b","c"))
assert sortedgroups(o._getFriendingUsers())==[["a","b","c"]]
assert o._getFollowedUsers()==[]
assert o._getNotFriendingUsers()==[]
assert o._getNotFollowedUsers()==[]
o=Or(FollowerOf("a","b"),FollowerOf("b","c"))
assert sortedgroups(o._getFollowedUsers())==[["a","b","c"]]
assert o._getFriendingUsers()==[]
assert o._getNotFriendingUsers()==[]
assert o._getNotFollowedUsers()==[]
# #And
a=And(FriendOf("a","b"),FollowerOf("b","c"))
assert sortedgroups(a._getFriendingUsers())==[['a', 'b']]
assert sortedgroups(a._getFollowedUsers())==[['b','c']]
assert a._getNotFriendingUsers()==[]
assert a._getNotFollowedUsers()==[]
a=And(FriendOf("a","b"),Not(FollowerOf("b","c")),Not(FriendOf("c","d","e")))
assert sortedgroups(a._getFriendingUsers())==[['a', 'b']]
assert a._getFollowedUsers()==[]
assert sortedgroups(a._getNotFriendingUsers())==[['c','d','e']]
assert sortedgroups(a._getNotFollowedUsers())==[['b','c']]
#Complex
c=And(
FriendOf("a","b"),
Or(FollowerOf("c","e","d"),FollowerOf("f","e","g")),
Not(Or(FriendOf("h","i"),FriendOf("j","i"))),
Not(FriendOf("k","l"))
)
assert sortedgroups(c._getFriendingUsers())==[['a', 'b']]
assert sortedgroups(c._getFollowedUsers())==[["c","d","e","f","g"]]
assert sortedgroups(c._getNotFriendingUsers())==[['h','i','j'],['k','l']]
assert sortedgroups(c._getNotFollowedUsers())==[]