Browse Source

Randomize list over iterator without consuming

main
Valentin BOUVAREL 3 years ago
parent
commit
3d88960876
  1. 7
      gestform.py
  2. 13
      tests/tests_gestform.py

7
gestform.py

@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
from typing import List
from random import shuffle
MIN = -1000
@ -10,3 +11,9 @@ MAX = 1000
def generate_numbers_list(mini: int, maxi: int) -> List[int]:
return list(range(mini, maxi+1))
def randomise_with_iterator(list_from: List[int]) -> int:
randomized = list_from.copy()
shuffle(randomized)
while randomized:
yield randomized.pop()

13
tests/tests_gestform.py

@ -1,6 +1,9 @@
from unittest import TestCase
from gestform import generate_numbers_list, MIN, MAX
from gestform import (
generate_numbers_list, MIN, MAX,
randomise_with_iterator,
)
class RandomListNumber(TestCase):
@ -15,3 +18,11 @@ class RandomListNumber(TestCase):
self.assertNotIn(MIN-1, self.generated)
self.assertNotIn(MAX+1, self.generated)
def test_randomised_iterator_over_list(self):
count: int = 0
for n in randomise_with_iterator(self.generated):
with self.subTest(n):
self.assertGreaterEqual(n , MIN)
self.assertLessEqual(n, MAX)
count += 1
self.assertEqual(len(self.generated), count)

Loading…
Cancel
Save