importrandomimportuuidclassRandomUuidGenerator:"""Generates a sequence of pseudo-random UUIDs. Given the same seed, it will generate the same sequence. """def__init__(self,seed):self.rng=random.Random(seed)defgen_uuid(self):returnuuid.UUID(bytes=bytes(self.rng.getrandbits(8)for_inrange(16)),version=4)
importrandomimportunittestimportgeneratorSEEDS=["peanutbutter","Elrond","Sonic Screwdriver",7,(192,168,0,11)]classTestRepeatedSequences(unittest.TestCase):SAMPLE_SIZE=200deftest_repeated_sequences(self):"Test that the same seed yields the same sequence."forseedinSEEDS:gen1=generator.RandomUuidGenerator(seed)sample1=[gen1.gen_uuid()for_inrange(self.SAMPLE_SIZE)]gen2=generator.RandomUuidGenerator(seed)sample2=[gen2.gen_uuid()for_inrange(self.SAMPLE_SIZE)]self.assertEqual(sample1,sample2,"Expected equal seeds to yield equal sequences",)classTestInterleavedSequences(unittest.TestCase):SAMPLE_SIZE=200deftest_interleaved_draws_are_independent(self):"Check that two generators can co-exist without interferce."forseedinSEEDS:generators={"left":generator.RandomUuidGenerator(seed),"right":generator.RandomUuidGenerator(seed),}results={"left":[],"right":[]}directions=["left"for_inrange(self.SAMPLE_SIZE)]directions.extend("right"for_inrange(self.SAMPLE_SIZE))random.shuffle(directions)fordindirections:gen=generators[d]drawn=gen.gen_uuid()results[d].append(drawn)self.assertEqual(results["left"],results["right"])
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.