mirror of
https://gitea.osmocom.org/sim-card/pysim.git
synced 2026-03-26 15:28:35 +03:00
param_source: allow plugging a random implementation (for testing)
Change-Id: Idce2b18af70c17844d6f09f7704efc869456ac39
This commit is contained in:
@@ -123,15 +123,18 @@ class DecimalRangeSource(InputExpandingParamSource):
|
|||||||
def val_to_digit(self, val:int):
|
def val_to_digit(self, val:int):
|
||||||
return "%0*d" % (self.num_digits, val) # pylint: disable=consider-using-f-string
|
return "%0*d" % (self.num_digits, val) # pylint: disable=consider-using-f-string
|
||||||
|
|
||||||
class RandomDigitSource(DecimalRangeSource):
|
class RandomSourceMixin:
|
||||||
|
random_impl = random # TODO secure random source?
|
||||||
|
|
||||||
|
class RandomDigitSource(DecimalRangeSource, RandomSourceMixin):
|
||||||
"""return a different sequence of random decimal digits each"""
|
"""return a different sequence of random decimal digits each"""
|
||||||
name = "random decimal digits"
|
name = "random decimal digits"
|
||||||
|
|
||||||
def get_next(self, csv_row:dict=None):
|
def get_next(self, csv_row:dict=None):
|
||||||
val = random.randint(*self.val_first_last) # TODO secure random source?
|
val = self.random_impl.randint(*self.val_first_last)
|
||||||
return self.val_to_digit(val)
|
return self.val_to_digit(val)
|
||||||
|
|
||||||
class RandomHexDigitSource(InputExpandingParamSource):
|
class RandomHexDigitSource(InputExpandingParamSource, RandomSourceMixin):
|
||||||
"""return a different sequence of random hexadecimal digits each"""
|
"""return a different sequence of random hexadecimal digits each"""
|
||||||
name = "random hexadecimal digits"
|
name = "random hexadecimal digits"
|
||||||
numeric_base = 16
|
numeric_base = 16
|
||||||
@@ -149,7 +152,7 @@ class RandomHexDigitSource(InputExpandingParamSource):
|
|||||||
self.num_digits = num_digits
|
self.num_digits = num_digits
|
||||||
|
|
||||||
def get_next(self, csv_row:dict=None):
|
def get_next(self, csv_row:dict=None):
|
||||||
val = random.randbytes(self.num_digits // 2) # TODO secure random source?
|
val = self.random_impl.randbytes(self.num_digits // 2)
|
||||||
return b2h(val)
|
return b2h(val)
|
||||||
|
|
||||||
class IncDigitSource(DecimalRangeSource):
|
class IncDigitSource(DecimalRangeSource):
|
||||||
|
|||||||
Reference in New Issue
Block a user