Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: third_party/google-endpoints/Crypto/SelfTest/Util/test_Counter.py

Issue 2666783008: Add google-endpoints to third_party/. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # -*- coding: utf-8 -*-
2 #
3 # SelfTest/Util/test_Counter: Self-test for the Crypto.Util.Counter module
4 #
5 # Written in 2009 by Dwayne C. Litzenberger <dlitz@dlitz.net>
6 #
7 # ===================================================================
8 # The contents of this file are dedicated to the public domain. To
9 # the extent that dedication to the public domain is not available,
10 # everyone is granted a worldwide, perpetual, royalty-free,
11 # non-exclusive license to exercise all rights associated with the
12 # contents of this file for any purpose whatsoever.
13 # No rights are reserved.
14 #
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 # SOFTWARE.
23 # ===================================================================
24
25 """Self-tests for Crypto.Util.Counter"""
26
27 __revision__ = "$Id$"
28
29 import sys
30 if sys.version_info[0] == 2 and sys.version_info[1] == 1:
31 from Crypto.Util.py21compat import *
32 from Crypto.Util.py3compat import *
33
34 import unittest
35
36 class CounterTests(unittest.TestCase):
37 def setUp(self):
38 global Counter
39 from Crypto.Util import Counter
40
41 def test_BE_shortcut(self):
42 """Big endian, shortcut enabled"""
43 c = Counter.new(128)
44 self.assertEqual(c.__PCT_CTR_SHORTCUT__,True) # assert_
45 c = Counter.new(128, little_endian=False)
46 self.assertEqual(c.__PCT_CTR_SHORTCUT__,True) # assert_
47 c = Counter.new(128, disable_shortcut=False)
48 self.assertEqual(c.__PCT_CTR_SHORTCUT__,True) # assert_
49 c = Counter.new(128, little_endian=False, disable_shortcut=False)
50 self.assertEqual(c.__PCT_CTR_SHORTCUT__,True) # assert_
51
52 def test_LE_shortcut(self):
53 """Little endian, shortcut enabled"""
54 c = Counter.new(128, little_endian=True)
55 self.assertEqual(c.__PCT_CTR_SHORTCUT__,True) # assert_
56 c = Counter.new(128, little_endian=True, disable_shortcut=False)
57 self.assertEqual(c.__PCT_CTR_SHORTCUT__,True) # assert_
58
59 def test_BE_no_shortcut(self):
60 """Big endian, shortcut disabled"""
61 c = Counter.new(128, disable_shortcut=True)
62 self.assertRaises(AttributeError, getattr, c, '__PCT_CTR_SHORTCUT__')
63 c = Counter.new(128, little_endian=False, disable_shortcut=True)
64 self.assertRaises(AttributeError, getattr, c, '__PCT_CTR_SHORTCUT__')
65
66 def test_LE_no_shortcut(self):
67 """Little endian, shortcut disabled"""
68 c = Counter.new(128, little_endian=True, disable_shortcut=True)
69 self.assertRaises(AttributeError, getattr, c, '__PCT_CTR_SHORTCUT__')
70
71 def test_BE_defaults(self):
72 """128-bit, Big endian, defaults"""
73 c = Counter.new(128)
74 self.assertEqual(1, c.next_value())
75 self.assertEqual(b("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x01"), c())
76 self.assertEqual(2, c.next_value())
77 self.assertEqual(b("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x02"), c())
78 for i in xrange(3, 256):
79 self.assertEqual(i, c.next_value())
80 self.assertEqual(b("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00")+bchr(i), c())
81 self.assertEqual(256, c.next_value())
82 self.assertEqual(b("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x01\x00"), c())
83
84 def test_LE_defaults(self):
85 """128-bit, Little endian, defaults"""
86 c = Counter.new(128, little_endian=True)
87 self.assertEqual(1, c.next_value())
88 self.assertEqual(b("\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00"), c())
89 self.assertEqual(2, c.next_value())
90 self.assertEqual(b("\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00"), c())
91 for i in xrange(3, 256):
92 self.assertEqual(i, c.next_value())
93 self.assertEqual(bchr(i)+b("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00"), c())
94 self.assertEqual(256, c.next_value())
95 self.assertEqual(b("\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00"), c())
96
97 def test_BE8_wraparound(self):
98 """8-bit, Big endian, wraparound"""
99 c = Counter.new(8)
100 for i in xrange(1, 256):
101 self.assertEqual(i, c.next_value())
102 self.assertEqual(bchr(i), c())
103 self.assertRaises(OverflowError, c.next_value)
104 self.assertRaises(OverflowError, c)
105 self.assertRaises(OverflowError, c.next_value)
106 self.assertRaises(OverflowError, c)
107
108 def test_LE8_wraparound(self):
109 """8-bit, Little endian, wraparound"""
110 c = Counter.new(8, little_endian=True)
111 for i in xrange(1, 256):
112 self.assertEqual(i, c.next_value())
113 self.assertEqual(bchr(i), c())
114 self.assertRaises(OverflowError, c.next_value)
115 self.assertRaises(OverflowError, c)
116 self.assertRaises(OverflowError, c.next_value)
117 self.assertRaises(OverflowError, c)
118
119 def test_BE8_wraparound_allowed(self):
120 """8-bit, Big endian, wraparound with allow_wraparound=True"""
121 c = Counter.new(8, allow_wraparound=True)
122 for i in xrange(1, 256):
123 self.assertEqual(i, c.next_value())
124 self.assertEqual(bchr(i), c())
125 self.assertEqual(0, c.next_value())
126 self.assertEqual(b("\x00"), c())
127 self.assertEqual(1, c.next_value())
128
129 def test_LE8_wraparound_allowed(self):
130 """8-bit, Little endian, wraparound with allow_wraparound=True"""
131 c = Counter.new(8, little_endian=True, allow_wraparound=True)
132 for i in xrange(1, 256):
133 self.assertEqual(i, c.next_value())
134 self.assertEqual(bchr(i), c())
135 self.assertEqual(0, c.next_value())
136 self.assertEqual(b("\x00"), c())
137 self.assertEqual(1, c.next_value())
138
139 def test_BE8_carry(self):
140 """8-bit, Big endian, carry attribute"""
141 c = Counter.new(8)
142 for i in xrange(1, 256):
143 self.assertEqual(0, c.carry)
144 self.assertEqual(i, c.next_value())
145 self.assertEqual(bchr(i), c())
146 self.assertEqual(1, c.carry)
147
148 def test_LE8_carry(self):
149 """8-bit, Little endian, carry attribute"""
150 c = Counter.new(8, little_endian=True)
151 for i in xrange(1, 256):
152 self.assertEqual(0, c.carry)
153 self.assertEqual(i, c.next_value())
154 self.assertEqual(bchr(i), c())
155 self.assertEqual(1, c.carry)
156
157 def get_tests(config={}):
158 from Crypto.SelfTest.st_common import list_test_cases
159 return list_test_cases(CounterTests)
160
161 if __name__ == '__main__':
162 suite = lambda: unittest.TestSuite(get_tests())
163 unittest.main(defaultTest='suite')
164
165 # vim:set ts=4 sw=4 sts=4 expandtab:
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698