forked from ReanGD/LearningEnglish
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
64 lines (52 loc) · 2.16 KB
/
Copy pathconfig.py
File metadata and controls
64 lines (52 loc) · 2.16 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- coding: utf-8 -*-
import re
import json
import os.path
import unittest
class Config:
def __init__(self, path):
self.path = path
self.cfg_dict = {}
def reload(self):
if os.path.exists(self.path):
txt = open(self.path).read()
txt = re.compile(r"/\*.*?\*/", re.DOTALL).sub("", txt) # remove comments
self.cfg_dict = json.loads(txt)
else:
self.cfg_dict = {}
self.cfg_dict["path_to_dict"] = self.cfg_dict.get("path_to_dict","dict.json")
self.cfg_dict["path_to_stat"] = self.cfg_dict.get("path_to_stat","statistic.json")
self.cfg_dict["words_per_lesson"] = int(self.cfg_dict.get("words_per_lesson",5))
self.cfg_dict["CntStudyWords"] = int(self.cfg_dict.get("CntStudyWords",50))
self.cfg_dict["MinPercent"] = float(self.cfg_dict.get("MinPercent",97.0))
self.cfg_dict["MinSuccessCnt"] = int(self.cfg_dict.get("MinSuccessCnt",10))
self.cfg_dict["retry_time"] = int(self.cfg_dict.get("retry_time",1800))
return self.cfg_dict
def get_dict(self):
return self.cfg_dict
class ConfigTestCase(unittest.TestCase):
def test_exists(self):
cfg = Config("config.json")
cfg_dict = cfg.reload()
self.assertEqual(cfg_dict["path_to_dict"],"dict.json")
self.assertEqual(cfg_dict["path_to_stat"],"statistic.json")
self.assertEqual(cfg_dict["words_per_lesson"], 5)
self.assertEqual(cfg_dict["CntStudyWords"], 50)
self.assertEqual(cfg_dict["MinPercent"], 97.0)
self.assertEqual(cfg_dict["MinSuccessCnt"], 10)
self.assertEqual(cfg_dict["retry_time"], 1800)
self.assertEqual(len(cfg_dict), 7)
def test_not_exists(self):
cfg = Config("fake_config.json")
cfg_dict = cfg.reload()
self.assertEqual(cfg_dict["path_to_dict"],"dict.json")
self.assertEqual(cfg_dict["path_to_stat"],"statistic.json")
self.assertEqual(cfg_dict["words_per_lesson"], 5)
self.assertEqual(cfg_dict["CntStudyWords"], 50)
self.assertEqual(cfg_dict["MinPercent"], 97.0)
self.assertEqual(cfg_dict["MinSuccessCnt"], 10)
self.assertEqual(cfg_dict["retry_time"], 1800)
self.assertEqual(len(cfg_dict), 7)
if __name__=="__main__":
suite = unittest.TestLoader().loadTestsFromTestCase(ConfigTestCase)
unittest.TextTestRunner(verbosity=2).run(suite)