-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_brobot.py
executable file
·92 lines (72 loc) · 2.72 KB
/
test_brobot.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
#!/usr/bin/env python
import os
requiredEnv = [
"BANGERS_FILE"
, "DARKSKYKEY"
, "FBCHAN"
, "IRCPASSWORD"
, "LOCIQ"
, "NICKNAME"
, "REALNAME"
, "USER"
]
def setDefaultEnv(k):
os.environ[k] = os.getenv(k, "Test")
def initEnv():
os.environ["BANGERS_FILE"] = "test_bangers.txt"
map(setDefaultEnv, requiredEnv)
initEnv()
import unittest
import bangers
import nerdreply
import re
import codecs
import sys
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
# Helper function to run all handlers in order against an input msg
# Behaves identically to how the telnet listener will behave.
def runHandlers(msg, hndlrs = nerdreply.handlers()):
msg += "\r\n"
for h in hndlrs:
if re.match(h.regex, msg):
return h.func(msg)
class TestNerdreply(unittest.TestCase):
def test_none(self):
self.assertEqual(None, runHandlers("This does not match anything."))
def test_nerd_case_insensitive(self):
self.assertEqual("nerd", runHandlers("I see a Nerd in here"))
self.assertEqual("nerd", runHandlers("I see a nerd in here"))
def test_inspiration(self):
self.assertEqual(nerdreply.INSPIRATION, runHandlers("factory?"))
self.assertEqual(nerdreply.INSPIRATION, runHandlers("factorio?"))
self.assertEqual(nerdreply.INSPIRATION, runHandlers("Stop horsing around man!"))
self.assertEqual(nerdreply.INSPIRATION, runHandlers("Stop horswing around man!"))
def test_d20(self):
x = runHandlers("Yo give me a d20")
self.assertTrue(isinstance(x, str))
i = int(x)
self.assertTrue(i >= 0 and i <= 20)
x = runHandlers("Yo nerdbot drop me a d20")
self.assertTrue(isinstance(x, str))
i = int(x)
self.assertTrue(i >= 0 and i <= 20)
class TestBangers(unittest.TestCase):
def test_default_bangers_file(self):
os.environ['BANGERS_FILE'] = ''
self.assertEqual('/home/brobot/brobot/bangers.txt', bangers.bangersFile())
os.environ['BANGERS_FILE'] = 'test_bangers.txt'
def test_override_bangers(self):
self.assertEqual('test_bangers.txt', bangers.bangersFile())
def test_count(self):
self.assertEqual("You have 2 bangers", bangers.count())
class TestWeather(unittest.TestCase):
def test_weather(self):
if os.environ["DARKSKYKEY"] == "Test" or os.environ["LOCIQ"] == "Test":
print "Export a valid DARKSKYKEY and LOCIQ in order to run the weather tests."
return
print runHandlers('!forecast "new york, ny"')
print runHandlers('!forecast "philadelphia, pa"')
print runHandlers('!forecast "boston"')
print runHandlers('!forecast "levittown, pa"')
if __name__ == "__main__":
unittest.main()