PyORAm
[iotcloud.git] / PyORAM / src / pyoram / tests / test_misc.py
1 import os
2 import unittest2
3 import tempfile
4
5 import pyoram.util.misc
6
7 class Test(unittest2.TestCase):
8
9     def test_log2floor(self):
10         self.assertEqual(pyoram.util.misc.log2floor(1), 0)
11         self.assertEqual(pyoram.util.misc.log2floor(2), 1)
12         self.assertEqual(pyoram.util.misc.log2floor(3), 1)
13         self.assertEqual(pyoram.util.misc.log2floor(4), 2)
14         self.assertEqual(pyoram.util.misc.log2floor(5), 2)
15         self.assertEqual(pyoram.util.misc.log2floor(6), 2)
16         self.assertEqual(pyoram.util.misc.log2floor(7), 2)
17         self.assertEqual(pyoram.util.misc.log2floor(8), 3)
18         self.assertEqual(pyoram.util.misc.log2floor(9), 3)
19
20     def test_log2ceil(self):
21         self.assertEqual(pyoram.util.misc.log2ceil(1), 0)
22         self.assertEqual(pyoram.util.misc.log2ceil(2), 1)
23         self.assertEqual(pyoram.util.misc.log2ceil(3), 2)
24         self.assertEqual(pyoram.util.misc.log2ceil(4), 2)
25         self.assertEqual(pyoram.util.misc.log2ceil(5), 3)
26         self.assertEqual(pyoram.util.misc.log2ceil(6), 3)
27         self.assertEqual(pyoram.util.misc.log2ceil(7), 3)
28         self.assertEqual(pyoram.util.misc.log2ceil(8), 3)
29         self.assertEqual(pyoram.util.misc.log2ceil(9), 4)
30
31     def test_intdivceil(self):
32
33         with self.assertRaises(ZeroDivisionError):
34             pyoram.util.misc.intdivceil(0, 0)
35         with self.assertRaises(ZeroDivisionError):
36             pyoram.util.misc.intdivceil(1, 0)
37
38         self.assertEqual(pyoram.util.misc.intdivceil(1, 1), 1)
39         self.assertEqual(pyoram.util.misc.intdivceil(2, 3), 1)
40         self.assertEqual(2 // 3, 0)
41         self.assertEqual(pyoram.util.misc.intdivceil(
42             123123123123123123123123123123123123123123123123,
43             123123123123123123123123123123123123123123123123), 1)
44         self.assertEqual(pyoram.util.misc.intdivceil(
45             2 * 123123123123123123123123123123123123123123123123,
46             123123123123123123123123123123123123123123123123), 2)
47         self.assertEqual(pyoram.util.misc.intdivceil(
48             2 * 123123123123123123123123123123123123123123123123 + 1,
49             123123123123123123123123123123123123123123123123), 3)
50         self.assertEqual(pyoram.util.misc.intdivceil(
51             2 * 123123123123123123123123123123123123123123123123 - 1,
52             123123123123123123123123123123123123123123123123), 2)
53         self.assertEqual(
54             (2 * 123123123123123123123123123123123123123123123123 - 1) // \
55             123123123123123123123123123123123123123123123123,
56             1)
57
58     def test_MemorySize(self):
59         self.assertTrue("b" in str(pyoram.util.misc.MemorySize(0.1)))
60         self.assertTrue("B" in str(pyoram.util.misc.MemorySize(1)))
61         self.assertTrue("B" in str(pyoram.util.misc.MemorySize(999)))
62         self.assertTrue("KB" in str(pyoram.util.misc.MemorySize(1000)))
63         self.assertTrue("KB" in str(pyoram.util.misc.MemorySize(999999)))
64         self.assertTrue("MB" in str(pyoram.util.misc.MemorySize(1000000)))
65         self.assertTrue("MB" in str(pyoram.util.misc.MemorySize(999999999)))
66         self.assertTrue("GB" in str(pyoram.util.misc.MemorySize(1000000000)))
67         self.assertTrue("GB" in str(pyoram.util.misc.MemorySize(9999999999)))
68         self.assertTrue("TB" in str(pyoram.util.misc.MemorySize(1000000000000)))
69         self.assertTrue("b" in str(pyoram.util.misc.MemorySize(1, unit="b")))
70         self.assertTrue("b" in str(pyoram.util.misc.MemorySize(2, unit="b")))
71         self.assertTrue("b" in str(pyoram.util.misc.MemorySize(7.9, unit="b")))
72
73         self.assertTrue("B" in str(pyoram.util.misc.MemorySize(8, unit="b")))
74         self.assertTrue("B" in str(pyoram.util.misc.MemorySize(1, unit="B")))
75         self.assertTrue("B" in str(pyoram.util.misc.MemorySize(999, unit="B")))
76
77         self.assertTrue("KB" in str(pyoram.util.misc.MemorySize(1000, unit="B")))
78         self.assertTrue("KB" in str(pyoram.util.misc.MemorySize(1, unit="KB")))
79         self.assertTrue("KB" in str(pyoram.util.misc.MemorySize(999, unit="KB")))
80         self.assertTrue("MB" in str(pyoram.util.misc.MemorySize(1000, unit="KB")))
81         self.assertTrue("MB" in str(pyoram.util.misc.MemorySize(1, unit="MB")))
82         self.assertTrue("MB" in str(pyoram.util.misc.MemorySize(999, unit="MB")))
83         self.assertTrue("GB" in str(pyoram.util.misc.MemorySize(1000, unit="MB")))
84         self.assertTrue("GB" in str(pyoram.util.misc.MemorySize(1, unit="GB")))
85         self.assertTrue("GB" in str(pyoram.util.misc.MemorySize(999, unit="GB")))
86         self.assertTrue("TB" in str(pyoram.util.misc.MemorySize(1000, unit="GB")))
87         self.assertTrue("TB" in str(pyoram.util.misc.MemorySize(1, unit="TB")))
88
89         self.assertEqual(pyoram.util.misc.MemorySize(1024).KiB, 1)
90         self.assertEqual(pyoram.util.misc.MemorySize(1024**2).MiB, 1)
91         self.assertEqual(pyoram.util.misc.MemorySize(1024**3).GiB, 1)
92         self.assertEqual(pyoram.util.misc.MemorySize(1024**4).TiB, 1)
93
94     def test_saveload_private_key(self):
95         with tempfile.NamedTemporaryFile(delete=False) as f:
96             filename = f.name
97         try:
98             key = os.urandom(32)
99             pyoram.util.misc.save_private_key(filename, key)
100             loaded_key = pyoram.util.misc.load_private_key(filename)
101             self.assertEqual(key, loaded_key)
102         finally:
103             os.remove(filename)
104
105     def test_chunkiter(self):
106         self.assertEqual(list(pyoram.util.misc.chunkiter([1,2,3,4,5], 1)),
107                          [[1],[2],[3],[4],[5]])
108         self.assertEqual(list(pyoram.util.misc.chunkiter([1,2,3,4,5], 2)),
109                          [[1,2],[3,4],[5]])
110         self.assertEqual(list(pyoram.util.misc.chunkiter([1,2,3,4,5], 3)),
111                          [[1,2,3],[4,5]])
112         self.assertEqual(list(pyoram.util.misc.chunkiter([1,2,3,4,5], 4)),
113                          [[1,2,3,4],[5]])
114         self.assertEqual(list(pyoram.util.misc.chunkiter([1,2,3,4,5], 5)),
115                          [[1,2,3,4,5]])
116         self.assertEqual(list(pyoram.util.misc.chunkiter([1,2,3,4,5], 6)),
117                          [[1,2,3,4,5]])
118         self.assertEqual(list(pyoram.util.misc.chunkiter([], 1)),
119                          [])
120         self.assertEqual(list(pyoram.util.misc.chunkiter([], 2)),
121                          [])
122
123 if __name__ == "__main__":
124     unittest2.main()                                    # pragma: no cover