-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathtest_text.py
114 lines (90 loc) · 4.06 KB
/
test_text.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
import unittest
from cartman import text, exceptions
class TextUnitTest(unittest.TestCase):
def test_extract_statuses_nothing(self):
raw_html = ""
self.assertEquals(text.extract_statuses(raw_html), [])
def test_extract_statuses_one(self):
raw_html = """dewqwdqw eldqkwkwjd
delwqdew q
<input type="radio" stuff name="action" value="my_action" />
dewklqjd lewkdjqwe dlkjhew
"""
self.assertEquals(text.extract_statuses(raw_html), ["my_action"])
def test_extract_statuses_multiple(self):
raw_html = """dewqwdqw eldqkwkwjd
delwqdew q
<input type="radio" stuff name="action" value="my_action" />
<input type="radio" stuff name="action" value="something" />
<input type="radio" stuff name="action" value="else" />
dewklqjd lewkdjqwe dlkjhew
"""
self.assertEquals(text.extract_statuses(raw_html), [
"my_action",
"something",
"else",
])
def test_extract_timestamps_v0_none(self):
raw_html = """dewqwlkjhew"""
self.assertRaises(exceptions.FatalError, text.extract_timestamps_v0,
raw_html)
def test_extract_timestamps_v1_none(self):
raw_html = """dewqwlkjhew"""
self.assertRaises(exceptions.FatalError, text.extract_timestamps_v1,
raw_html)
def test_extract_timestamps_v0_one(self):
raw_html = """dewqwlkjhew
<input name="ts" value="123123" /> stuff"""
timestamps = text.extract_timestamps_v0(raw_html)
self.assertEquals(timestamps["ts"], "123123")
def test_extract_timestamps_multiple(self):
raw_html = """dewqwlkjhew
<input name="ts" value="654321" /> stuff
<input name="ts" value="123123" /> stuff"""
timestamps = text.extract_timestamps_v0(raw_html)
self.assertEquals(timestamps["ts"], "654321")
def test_validate_id_None(self):
self.assertRaises(exceptions.InvalidParameter, text.validate_id, None)
def test_validate_id_str_bad_chr(self):
self.assertRaises(exceptions.InvalidParameter, text.validate_id, "qwe")
def test_validate_id_str_bad_flt(self):
self.assertRaises(exceptions.InvalidParameter, text.validate_id, "1.2")
def test_validate_id_str_good(self):
self.assertEquals(text.validate_id("12"), 12)
def test_fuzzy_find_no_options(self):
self.assertEquals(text.fuzzy_find("meh", []), None)
def test_fuzzy_find_bad_option(self):
self.assertEquals(text.fuzzy_find("meh", ["bad"]), None)
def test_fuzzy_find_same_option(self):
self.assertEquals(text.fuzzy_find("meh", ["meh"]), "meh")
def test_fuzzy_find_one_letter_diff(self):
self.assertEquals(text.fuzzy_find("meh", ["meg"]), "meg")
def test_fuzzy_find_two_one_match(self):
self.assertEquals(text.fuzzy_find("meh", ["meg", "meh"]), "meh")
def test_fuzzy_find_two_one_match(self):
self.assertEquals(text.fuzzy_find("meh", ["megl", "mehl"]), "mehl")
def test_fuzzy_find_two_one_match_re(self):
self.assertEquals(text.fuzzy_find("meh", ["meh stuff", "mih stuff"]),
"meh stuff")
def test_extract_properties_none(self):
raw_html = """hemene, hemene"""
self.assertEquals(text.extract_properties(raw_html), {})
def test_extract_properties_found(self):
raw_html = """hemene, hemene
var properties={ "another": "one", "bites": ["the", "dust"] };
var modes={};
"""
self.assertEquals(text.extract_properties(raw_html), {
"another": "one",
"bites": [ "the", "dust" ]
})
def test_extract_properties_found_with_semicolon(self):
raw_html = """hemene, hemene
var properties={ "another": "one", "bites": ["the", "d;ust"] };
var modes={};
</script>Other; semi-colons; to make sure; we don't break.
"""
self.assertEquals(text.extract_properties(raw_html), {
"another": "one",
"bites": [ "the", "d;ust" ]
})