55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
try:
|
|
import unittest2 as unittest
|
|
except ImportError:
|
|
import unittest
|
|
|
|
try:
|
|
import mock
|
|
from mock import call
|
|
except ImportError:
|
|
import unittest.mock as mock
|
|
from unittest.mock import call
|
|
|
|
from tlsfuzzer.fuzzers import structured_random_iter, StructuredRandom
|
|
|
|
|
|
class TestStructuredRandom(unittest.TestCase):
|
|
def test_data(self):
|
|
rand = StructuredRandom([(16, 0)])
|
|
|
|
self.assertEqual(rand.data, bytearray([0] * 16))
|
|
|
|
def test___repr__(self):
|
|
rand = StructuredRandom([(16, 0)])
|
|
|
|
self.assertEqual(str(rand), "StructuredRandom(vals=[(16, 0)])")
|
|
|
|
def test_data_with_random(self):
|
|
rand = StructuredRandom([(16, None)])
|
|
|
|
self.assertEqual(len(rand.data), 16)
|
|
self.assertGreater(len(set(rand.data)), 1)
|
|
|
|
def test_min_eq_max(self):
|
|
it = structured_random_iter(1, min_length=16, max_length=16, step=16)
|
|
|
|
ret = [i for i in it]
|
|
|
|
self.assertEqual(len(ret), 1)
|
|
self.assertIsInstance(ret[0], StructuredRandom)
|
|
self.assertEqual(len(ret[0].data), 16)
|
|
|
|
def test_min_and_max(self):
|
|
for _ in range(100):
|
|
it = structured_random_iter(1, min_length=16, max_length=256,
|
|
step=16)
|
|
|
|
ret = [i for i in it]
|
|
|
|
self.assertIn(len(ret), [1])
|
|
for r in ret:
|
|
self.assertIsInstance(r, StructuredRandom)
|
|
self.assertIn(len(r.data), range(16, 257, 16))
|
|
if r.vals[0][1] is not None:
|
|
self.assertEqual(r.data[0], r.vals[0][1])
|
|
|