Directory restructuring. No tests yet done.
[jben2_gui.git] / jben / parsers / tests / edict.py
blobb8ec8314426a4bfb0ab906af2c4e452b62c9f1d0
1 # -*- coding: utf-8 -*-
3 import unittest, time
4 from parsers import edict
6 SRC_NAME = "edict"
7 SRC_DIR = "../dicts"
9 SRC_NAME = "/".join((SRC_DIR, SRC_NAME))
11 class EdictTest(unittest.TestCase):
13 def setUp(self):
14 self.parser = edict.EdictParser(SRC_NAME)
16 def test_japanese_search(self):
17 """EDICT: Search for Japanese word/phrase"""
18 query = u"日本"
19 l = [entry for entry in self.parser.search(query)]
20 self.assertTrue(len(l) > 0)
22 def test_native_search(self):
23 """EDICT: Search for non-Japanese word/phrase"""
24 query = u"Japan"
25 l = [entry for entry in self.parser.search(query)]
26 self.assertTrue(len(l) > 0)
28 def test_unparsed(self):
29 """EDICT: Check for unhandled EDICT fields"""
30 l = [k for k in self.parser.search(u"")]
31 unparsed = set()
32 for key, entry in self.parser.cache.iteritems():
33 for item in entry.unparsed: unparsed.add(item)
34 if unparsed:
35 #self.fail(u"Unhandled fields found: %s" % u", ".join(unparsed))
36 print u"\n\tWARNING: Unhandled fields found: %s" \
37 % u", ".join(unparsed)
39 def test_caching(self):
40 """EDICT: Check that caching is working"""
41 self.assertFalse(self.parser.cache)
42 t = time.time()
43 self.test_japanese_search()
44 first_t = time.time() - t
46 self.assertTrue(self.parser.cache)
47 t = time.time()
48 self.test_japanese_search()
49 second_t = time.time() - t
51 print "\n\tFirst query time: %f" % first_t
52 print "\tSecond query time: %f" % second_t
53 self.assertTrue(second_t <= first_t)
55 def test_no_cache(self):
56 """EDICT: Check that parser works without caching."""
57 self.parser = edict.EdictParser(SRC_NAME, use_cache=False)
59 self.assertFalse(self.parser.cache)
60 t = time.time()
61 self.test_japanese_search()
62 first_t = time.time() - t
64 self.assertFalse(self.parser.cache)
65 t = time.time()
66 self.test_japanese_search()
67 second_t = time.time() - t
69 print "\n\tFirst query time: %f" % first_t
70 print "\tSecond query time: %f" % second_t
72 def tearDown(self):
73 self.parser = None
75 if __name__ == "__main__":
76 unittest.main()