Add optional seed inputs to pop-random nodes.

This commit is contained in:
Comahar
2026-07-14 23:06:54 +03:00
parent fd37841b70
commit b1f9824fa2
8 changed files with 81 additions and 16 deletions
+7
View File
@@ -303,6 +303,13 @@ def test_pop_random():
# Empty list case
assert node.pop_random_element(list=[]) == ([], None)
# Same seed should produce the same popped item
original_list = [1, 2, 3, 4]
result1, item1 = node.pop_random_element(list=original_list, seed=[42])
result2, item2 = node.pop_random_element(list=original_list, seed=[42])
assert item1 == item2
assert result1 == result2
def test_first():
node = DataListFirst()
+5
View File
@@ -151,6 +151,11 @@ def test_dict_pop_random(dict_type):
assert empty_value is None
assert empty_success is False
# Same seed should produce the same popped key/value
result1 = node.pop_random(my_dict, seed=42)
result2 = node.pop_random(my_dict, seed=42)
assert result1 == result2
@pytest.mark.parametrize("dict_type", _tested_dict_types)
def test_dict_keys(dict_type):
+7
View File
@@ -87,6 +87,13 @@ def test_list_pop_random():
# Test with empty list
assert node.pop_random_element([]) == ([], None)
# Same seed should produce the same popped item
result1, item1 = node.pop_random_element(original_list, seed=42)
result2, item2 = node.pop_random_element(original_list, seed=42)
assert item1 == item2
assert result1 == result2
assert original_list == [1, 2, 3, 4] # Input not mutated
def test_list_first():
node = ListFirst()
+7
View File
@@ -132,6 +132,13 @@ def test_set_pop_random():
empty_set = set()
assert node.pop_random_element(empty_set) == (set(), None)
# Same seed should produce the same popped item for the same set contents
seeded_set = {1, 2, 3, 4}
result1, item1 = node.pop_random_element(seeded_set, seed=42)
result2, item2 = node.pop_random_element(seeded_set, seed=42)
assert item1 == item2
assert result1 == result2
def test_set_union():
node = SetUnion()