37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import math
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from py.nodes.bv_seed import BVSeed, SEED_MAX
|
|
|
|
|
|
class SeedTests(unittest.TestCase):
|
|
def setUp(self):
|
|
BVSeed._last_seeds.clear()
|
|
|
|
def result(self, seed, unique_id="node"):
|
|
return BVSeed().resolve(seed, unique_id)["result"][0]
|
|
|
|
def test_fixed_seed_is_passed_through(self):
|
|
self.assertEqual(self.result(123), 123)
|
|
|
|
@patch("py.nodes.bv_seed.secrets.randbelow", return_value=456)
|
|
def test_random_mode_generates_each_queue(self, random):
|
|
self.assertEqual(self.result(-1), 456)
|
|
random.assert_called_once_with(SEED_MAX + 1)
|
|
|
|
def test_random_sentinel_disables_cache(self):
|
|
self.assertEqual(BVSeed.IS_CHANGED(4), 4)
|
|
self.assertTrue(math.isnan(BVSeed.IS_CHANGED(-1)))
|
|
|
|
@patch("py.nodes.bv_seed.secrets.randbelow", return_value=789)
|
|
def test_resolved_seed_is_reported_without_overwriting_seed_input(self, _random):
|
|
response = BVSeed().resolve(-1, "node")
|
|
self.assertNotIn("seed", response["ui"])
|
|
self.assertEqual(response["ui"]["last_seed"], [789])
|
|
self.assertEqual(response["result"], (789,))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|