OTWO-1213 Works around lost encoding in Ruby/C binding layer
[ohcount] / test / unit / python / python_test.py
1 import unittest
2 import ohcount
3
4 class TestSourceFileList(unittest.TestCase):
5
6     def setUp(self):
7         # must not raise
8         self.sf_list = ohcount.SourceFileList(paths=['../../gestalt_files'])
9
10     def assertStrOp(self, obj, not_equals):
11         s = str(obj)
12         if not_equals:
13             for v in not_equals:
14                 self.assertTrue(s is not v)
15
16     def assertHasAttr(self, obj, name, not_equals=None):
17         self.assertTrue(hasattr(obj, name))
18         if not_equals:
19             val = getattr(obj, name)
20             for v in not_equals:
21                 self.assertTrue(val is not v)
22
23     def assertHasItem(self, obj, name, not_equals=None):
24         self.assertTrue(name in obj)
25         if not_equals:
26             val = obj[name]
27             for v in not_equals:
28                 self.assertTrue(val is not v)
29
30     def assertHasItemAttr(self, obj, name, not_equals=None):
31         self.assertHasAttr(obj, name, not_equals)
32         self.assertHasItem(obj, name, not_equals)
33
34     def assertHasKeys(self, obj, keylist):
35         for k in keylist:
36             self.assertTrue(k in obj)
37
38     def assertListIsInstance(self, list, type):
39         for o in list:
40             self.assertTrue(isinstance(o, type))
41
42     def assertHasItemAttrs(self, obj, list, not_equals=None):
43         for name in list:
44             self.assertHasItemAttr(obj, name, not_equals)
45
46     def testList(self):
47         self.assertTrue(len(self.sf_list) > 0)
48         self.assertListIsInstance(self.sf_list, ohcount.SourceFile)
49
50     def testStr(self):
51         self.assertStrOp(self.sf_list, [None, ""])
52
53     def testAnalyzeLanguages(self):
54         locs = self.sf_list.analyze_languages()
55         self.assertTrue(isinstance(locs, ohcount.LocList))
56         names = ['code','comments','blanks','filecount','total']
57         self.assertHasKeys(locs, names)
58         self.assertHasItemAttrs(locs, names, [None, 0])
59         self.assertListIsInstance(locs, ohcount.Loc)
60
61     def testAddDirectory(self):
62         self.sf_list.add_directory('../../detect_files') # must not raise
63
64     def testAddFile(self):
65         self.sf_list.add_file('../../src_licenses/academic_t1.c') # must not raise
66
67 if __name__ == '__main__':
68     unittest.main()