-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_upcoming.py
More file actions
49 lines (38 loc) · 1.88 KB
/
Copy pathtest_upcoming.py
File metadata and controls
49 lines (38 loc) · 1.88 KB
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
import unittest
from mathfunctionize import mathfunctionize, upcoming
class TestUpcomingRoadmapCode(unittest.TestCase):
def test_professional_catalog_counts_are_in_code(self):
catalog_entries = [
entry
for entry in upcoming.UPCOMING_FUNCTION_ENTRIES
if entry.source == "professional_function_catalog.md"
]
catalog_topics = {}
for entry in catalog_entries:
catalog_topics.setdefault(entry.topic, set()).add(entry.name)
self.assertEqual(len(catalog_topics), 86)
self.assertEqual(len(catalog_entries), 8600)
self.assertTrue(all(len(names) == 100 for names in catalog_topics.values()))
def test_upcoming_md_function_mentions_are_in_code(self):
self.assertTrue(upcoming.is_upcoming_function("sinh"))
self.assertTrue(hasattr(mathfunctionize, "sinh"))
with self.assertRaises(upcoming.UpcomingFunctionNotImplemented):
mathfunctionize.sinh(1)
def test_implemented_upcoming_function_runs_real_code(self):
self.assertTrue(upcoming.is_upcoming_function("gcd"))
self.assertEqual(mathfunctionize.gcd(12, 8), 4)
def test_professional_catalog_function_is_callable_placeholder(self):
name = "measureTheoryValidateSigmaAlgebra"
self.assertTrue(upcoming.is_upcoming_function(name))
self.assertIn(name, upcoming.list_upcoming_functions("Measure Theory"))
self.assertTrue(hasattr(mathfunctionize, name))
with self.assertRaises(upcoming.UpcomingFunctionNotImplemented):
getattr(mathfunctionize, name)([])
def test_existing_functions_are_not_overwritten(self):
self.assertEqual(mathfunctionize.addition([1, 2, 3]), 6)
self.assertNotIsInstance(
mathfunctionize.addition,
upcoming.UpcomingFunctionNotImplemented,
)
if __name__ == "__main__":
unittest.main()