Index: third_party/google-endpoints/Crypto/SelfTest/Random/test_random.py |
diff --git a/third_party/google-endpoints/Crypto/SelfTest/Random/test_random.py b/third_party/google-endpoints/Crypto/SelfTest/Random/test_random.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f9ffc663a78997b170e1af0a3ea842acfc9d9a34 |
--- /dev/null |
+++ b/third_party/google-endpoints/Crypto/SelfTest/Random/test_random.py |
@@ -0,0 +1,171 @@ |
+# -*- coding: utf-8 -*- |
+# |
+# SelfTest/Util/test_generic.py: Self-test for the Crypto.Random.new() function |
+# |
+# Written in 2008 by Dwayne C. Litzenberger <dlitz@dlitz.net> |
+# |
+# =================================================================== |
+# The contents of this file are dedicated to the public domain. To |
+# the extent that dedication to the public domain is not available, |
+# everyone is granted a worldwide, perpetual, royalty-free, |
+# non-exclusive license to exercise all rights associated with the |
+# contents of this file for any purpose whatsoever. |
+# No rights are reserved. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
+# SOFTWARE. |
+# =================================================================== |
+ |
+"""Self-test suite for Crypto.Random.new()""" |
+ |
+__revision__ = "$Id$" |
+ |
+import unittest |
+import sys |
+if sys.version_info[0] == 2 and sys.version_info[1] == 1: |
+ from Crypto.Util.py21compat import * |
+from Crypto.Util.py3compat import * |
+ |
+class SimpleTest(unittest.TestCase): |
+ def runTest(self): |
+ """Crypto.Random.new()""" |
+ # Import the Random module and try to use it |
+ from Crypto import Random |
+ randobj = Random.new() |
+ x = randobj.read(16) |
+ y = randobj.read(16) |
+ self.assertNotEqual(x, y) |
+ z = Random.get_random_bytes(16) |
+ self.assertNotEqual(x, z) |
+ self.assertNotEqual(y, z) |
+ # Test the Random.random module, which |
+ # implements a subset of Python's random API |
+ # Not implemented: |
+ # seed(), getstate(), setstate(), jumpahead() |
+ # random(), uniform(), triangular(), betavariate() |
+ # expovariate(), gammavariate(), gauss(), |
+ # longnormvariate(), normalvariate(), |
+ # vonmisesvariate(), paretovariate() |
+ # weibullvariate() |
+ # WichmannHill(), whseed(), SystemRandom() |
+ from Crypto.Random import random |
+ x = random.getrandbits(16*8) |
+ y = random.getrandbits(16*8) |
+ self.assertNotEqual(x, y) |
+ # Test randrange |
+ if x>y: |
+ start = y |
+ stop = x |
+ else: |
+ start = x |
+ stop = y |
+ for step in range(1,10): |
+ x = random.randrange(start,stop,step) |
+ y = random.randrange(start,stop,step) |
+ self.assertNotEqual(x, y) |
+ self.assertEqual(start <= x < stop, True) |
+ self.assertEqual(start <= y < stop, True) |
+ self.assertEqual((x - start) % step, 0) |
+ self.assertEqual((y - start) % step, 0) |
+ for i in range(10): |
+ self.assertEqual(random.randrange(1,2), 1) |
+ self.assertRaises(ValueError, random.randrange, start, start) |
+ self.assertRaises(ValueError, random.randrange, stop, start, step) |
+ self.assertRaises(TypeError, random.randrange, start, stop, step, step) |
+ self.assertRaises(TypeError, random.randrange, start, stop, "1") |
+ self.assertRaises(TypeError, random.randrange, "1", stop, step) |
+ self.assertRaises(TypeError, random.randrange, 1, "2", step) |
+ self.assertRaises(ValueError, random.randrange, start, stop, 0) |
+ # Test randint |
+ x = random.randint(start,stop) |
+ y = random.randint(start,stop) |
+ self.assertNotEqual(x, y) |
+ self.assertEqual(start <= x <= stop, True) |
+ self.assertEqual(start <= y <= stop, True) |
+ for i in range(10): |
+ self.assertEqual(random.randint(1,1), 1) |
+ self.assertRaises(ValueError, random.randint, stop, start) |
+ self.assertRaises(TypeError, random.randint, start, stop, step) |
+ self.assertRaises(TypeError, random.randint, "1", stop) |
+ self.assertRaises(TypeError, random.randint, 1, "2") |
+ # Test choice |
+ seq = range(10000) |
+ x = random.choice(seq) |
+ y = random.choice(seq) |
+ self.assertNotEqual(x, y) |
+ self.assertEqual(x in seq, True) |
+ self.assertEqual(y in seq, True) |
+ for i in range(10): |
+ self.assertEqual(random.choice((1,2,3)) in (1,2,3), True) |
+ self.assertEqual(random.choice([1,2,3]) in [1,2,3], True) |
+ if sys.version_info[0] is 3: |
+ self.assertEqual(random.choice(bytearray(b('123'))) in bytearray(b('123')), True) |
+ self.assertEqual(1, random.choice([1])) |
+ self.assertRaises(IndexError, random.choice, []) |
+ self.assertRaises(TypeError, random.choice, 1) |
+ # Test shuffle. Lacks random parameter to specify function. |
+ # Make copies of seq |
+ seq = range(500) |
+ x = list(seq) |
+ y = list(seq) |
+ random.shuffle(x) |
+ random.shuffle(y) |
+ self.assertNotEqual(x, y) |
+ self.assertEqual(len(seq), len(x)) |
+ self.assertEqual(len(seq), len(y)) |
+ for i in range(len(seq)): |
+ self.assertEqual(x[i] in seq, True) |
+ self.assertEqual(y[i] in seq, True) |
+ self.assertEqual(seq[i] in x, True) |
+ self.assertEqual(seq[i] in y, True) |
+ z = [1] |
+ random.shuffle(z) |
+ self.assertEqual(z, [1]) |
+ if sys.version_info[0] == 3: |
+ z = bytearray(b('12')) |
+ random.shuffle(z) |
+ self.assertEqual(b('1') in z, True) |
+ self.assertRaises(TypeError, random.shuffle, b('12')) |
+ self.assertRaises(TypeError, random.shuffle, 1) |
+ self.assertRaises(TypeError, random.shuffle, "1") |
+ self.assertRaises(TypeError, random.shuffle, (1,2)) |
+ # 2to3 wraps a list() around it, alas - but I want to shoot |
+ # myself in the foot here! :D |
+ # if sys.version_info[0] == 3: |
+ # self.assertRaises(TypeError, random.shuffle, range(3)) |
+ # Test sample |
+ x = random.sample(seq, 20) |
+ y = random.sample(seq, 20) |
+ self.assertNotEqual(x, y) |
+ for i in range(20): |
+ self.assertEqual(x[i] in seq, True) |
+ self.assertEqual(y[i] in seq, True) |
+ z = random.sample([1], 1) |
+ self.assertEqual(z, [1]) |
+ z = random.sample((1,2,3), 1) |
+ self.assertEqual(z[0] in (1,2,3), True) |
+ z = random.sample("123", 1) |
+ self.assertEqual(z[0] in "123", True) |
+ z = random.sample(range(3), 1) |
+ self.assertEqual(z[0] in range(3), True) |
+ if sys.version_info[0] == 3: |
+ z = random.sample(b("123"), 1) |
+ self.assertEqual(z[0] in b("123"), True) |
+ z = random.sample(bytearray(b("123")), 1) |
+ self.assertEqual(z[0] in bytearray(b("123")), True) |
+ self.assertRaises(TypeError, random.sample, 1) |
+ |
+def get_tests(config={}): |
+ return [SimpleTest()] |
+ |
+if __name__ == '__main__': |
+ suite = lambda: unittest.TestSuite(get_tests()) |
+ unittest.main(defaultTest='suite') |
+ |
+# vim:set ts=4 sw=4 sts=4 expandtab: |