Core Module Tests

TestRandomGenParamNumbers

Description: Test the numbers parameter.

test_none

  • Description: Test the numbers parameter with None.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers(None)
    randomgen.validate()

test_empty

  • Description: Test the numbers parameter with an empty list.
  • Code Snippet:
with pytest.raises(RandomGenEmptyError):
    randomgen.set_numbers([])
    randomgen.validate_numbers()

test_int

  • Description: Test the numbers parameter with an integer.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers(123)
    randomgen.validate_numbers()

test_int_list

  • Description: Test the numbers parameter with an integer list.
  • Code Snippet:
randomgen.set_numbers([-1, 0, 1, 2, 3])
randomgen.validate_numbers()
assert randomgen._numbers == [-1, 0, 1, 2, 3]

test_int_tuple

  • Description: Test the numbers parameter with an integer tuple.
  • Code Snippet:
randomgen.set_numbers((-1, 0, 1, 2, 3))
randomgen.validate_numbers()
assert randomgen._numbers == (-1, 0, 1, 2, 3)

test_int_set

  • Description: Test the numbers parameter with an integer set.
  • Code Snippet:
randomgen.set_numbers({-1, 0, 1, 2, 3})
randomgen.validate_numbers()
assert randomgen._numbers == {-1, 0, 1, 2, 3}

test_float

  • Description: Test the numbers parameter with a float.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers(123.45)
    randomgen.validate_numbers()

test_float_list

  • Description: Test the numbers parameter with a float list.
  • Code Snippet:
randomgen.set_numbers([-1.0, 0.0, 1.0, 2.0, 3.0])
randomgen.validate_numbers()
assert randomgen._numbers == [-1.0, 0.0, 1.0, 2.0, 3.0]

test_float_tuple

  • Description: Test the numbers parameter with a float tuple.
  • Code Snippet:
randomgen.set_numbers((-1.0, 0.0, 1.0, 2.0, 3.0))
randomgen.validate_numbers()
assert randomgen._numbers == (-1.0, 0.0, 1.0, 2.0, 3.0)

test_float_set

  • Description: Test the numbers parameter with a float set.
  • Code Snippet:
randomgen.set_numbers({-1.0, 0.0, 1.0, 2.0, 3.0})
randomgen.validate_numbers()
assert randomgen._numbers == {-1.0, 0.0, 1.0, 2.0, 3.0}

test_string

  • Description: Test the numbers parameter with a string.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers("123")
    randomgen.validate_numbers()

test_string_list

  • Description: Test the numbers parameter with a string list.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers(["-1", "0", "1", "2", "3"])
    randomgen.validate_numbers()

test_dict

  • Description: Test the numbers parameter with a dictionary.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers({-1: 1, 0: 1, 1: 1, 2: 1, 3: 1})
    randomgen.validate_numbers()

test_mixed_types

  • Description: Test the numbers parameter with mixed types.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_numbers([-1, 0.0, "1", 2.0, 3])
    randomgen.validate_numbers()

test_mixed_numbers`

  • Description: Test the numbers parameter with mixed numbers.
  • Code Snippet:
randomgen.set_numbers([-1, 0, 1, 2.0, 3])
randomgen.validate_numbers()
assert randomgen._numbers == [-1, 0, 1, 2.0, 3]

TestRandomGenParamProbabilities

Description: Test the probabilities parameter.

test_none

  • Description: Test the probabilities parameter with None.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities(None)
    randomgen.validate()

test_empty

  • Description: Test the probabilities parameter with an empty list.
  • Code Snippet:
with pytest.raises(RandomGenEmptyError):
    randomgen.set_probabilities([])
    randomgen.validate_numbers()

test_int

  • Description: Test the probabilities parameter with an integer.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities(123)
    randomgen.validate_numbers()

test_int_list

  • Description: Test the probabilities parameter with an integer list.
  • Code Snippet:
randomgen.set_probabilities([-1, 0, 1, 2, 3])
randomgen.validate_numbers()
assert randomgen._numbers == [-1, 0, 1, 2, 3]

test_int_tuple

  • Description: Test the probabilities parameter with an integer tuple.
  • Code Snippet:
randomgen.set_probabilities((-1, 0, 1, 2, 3))
randomgen.validate_numbers()
assert randomgen._numbers == (-1, 0, 1, 2, 3)

test_int_set

  • Description: Test the probabilities parameter with an integer set.
  • Code Snippet:
randomgen.set_probabilities({-1, 0, 1, 2, 3})
randomgen.validate_numbers()
assert randomgen._numbers == {-1, 0, 1, 2, 3}

test_float

  • Description: Test the probabilities parameter with a float.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities(123.45)
    randomgen.validate_numbers()

test_float_list

  • Description: Test the probabilities parameter with a float list.
  • Code Snippet:
randomgen.set_probabilities([-1.0, 0.0, 1.0, 2.0, 3.0])
randomgen.validate_numbers()
assert randomgen._numbers == [-1.0, 0.0, 1.0, 2.0, 3.0]

test_float_tuple

  • Description: Test the probabilities parameter with a float tuple.
  • Code Snippet:
randomgen.set_probabilities((-1.0, 0.0, 1.0, 2.0, 3.0))
randomgen.validate_numbers()
assert randomgen._numbers == (-1.0, 0.0, 1.0, 2.0, 3.0)

test_float_set

  • Description: Test the probabilities parameter with a float set.
  • Code Snippet:
randomgen.set_probabilities({-1.0, 0.0, 1.0, 2.0, 3.0})
randomgen.validate_numbers()
assert randomgen._numbers == {-1.0, 0.0, 1.0, 2.0, 3.0}

test_string

  • Description: Test the probabilities parameter with a string.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities("123")
    randomgen.validate_numbers()

test_string_list

  • Description: Test the probabilities parameter with a string list.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities(["-1", "0", "1", "2", "3"])
    randomgen.validate_numbers()

test_dict

  • Description: Test the probabilities parameter with a dictionary.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities({-1: 1, 0: 1, 1: 1, 2: 1, 3: 1})
    randomgen.validate_numbers()

test_mixed_types

  • Description: Test the probabilities parameter with mixed types.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities([-1, 0.0, "1", 2.0, 3])
    randomgen.validate_numbers()

test_mixed_numbers

  • Description: Test the probabilities parameter with mixed numbers.
  • Code Snippet:
randomgen.set_probabilities([-1, 0, 1, 2.0, 3])
randomgen.validate_numbers()
assert randomgen._numbers == [-1, 0, 1, 2.0, 3]

test_is_negative

  • Description: Test the probabilities parameter with negative numbers.
  • Code Snippet:
with pytest.raises(RandomGenTypeError):
    randomgen.set_probabilities([0.2, 0.2, 0.2, -0.2, 0.2])
    randomgen.validate_probabilities()

test_size_mismatch

  • Description: Test the probabilities parameter with a size mismatch.
  • Code Snippet:
with pytest.raises(RandomGenMismatchError):
    randomgen.set_numbers([1, 2, 3, 4, 5])
    randomgen.set_probabilities([0.1, 0.2, 0.3, 0.4])
    randomgen.validate()

test_sum_is_one

  • Description: Test the probabilities parameter with a sum of one.
  • Code Snippet:
randomgen.set_probabilities([0.2, 0.2, 0.2, 0.2, 0.2])
randomgen.validate_probabilities()
assert sum(randomgen._probabilities) == 1

test_sum_is_zero

  • Description: Test the probabilities parameter with a sum of zero.
  • Code Snippet:
with pytest.raises(RandomGenProbabilitySumError):
    randomgen.set_probabilities([0.0, 0.0, 0.0, 0.0, 0.0])
    randomgen.validate_probabilities()

sum_is_greater_than_one

  • Description: Test the probabilities parameter with a sum of zero.
  • Code Snippet:
with pytest.raises(RandomGenProbabilitySumError):
    randomgen.set_probabilities([0.2, 0.2, 0.2, 0.2, 0.3])
    randomgen.validate()

test_sum_is_less_than_one

  • Description: Test the probabilities parameter with a sum of zero.
  • Code Snippet:
with pytest.raises(RandomGenProbabilitySumError):
    randomgen.set_probabilities([0.2, 0.2, 0.2, 0.2, 0.1])
    randomgen.validate()

TestRandomGenDistribution

Description: Test the distribution quality of random numbers.

test_fit_pass

  • Description: Test that the distribution fits on big sample size.
  • Code Snippet:
custom_probabilities = [0.5, 0.5]

# Prepare the random generator
randomgen.set_numbers([1, 2])
randomgen.set_probabilities(custom_probabilities)
randomgen.validate()

# Generate the maximum number of random numbers
random_numbers = [1] * 200 + [2] * 200

# Perform the Chi-Square test
hypothesis = (
    ChiSquareTest()
    .set_observed_numbers(random_numbers)
    .set_expected_probabilities(custom_probabilities)
    .calc()
)

# Test if the hypothesis is valid
assert hypothesis.is_null() is True

test_fit_pass

  • Description: Test that the distribution fails on small sample size.
  • Code Snippet:
custom_probabilities = [0.5, 0.5]

# Prepare the random generator
randomgen.set_numbers([1, 2])
randomgen.set_probabilities(custom_probabilities)
randomgen.validate()

# Generate the maximum number of random numbers
random_numbers = [1] * 10 + [2] * 100

# Perform the Chi-Square test
hypothesis = (
    ChiSquareTest()
    .set_observed_numbers(random_numbers)
    .set_expected_probabilities(custom_probabilities)
    .calc()
)

# Test if the hypothesis is valid
assert hypothesis.is_null() is False

TestRandomGenPerformance

Description: Test the performance of the random generator.

test_time

  • Description: Test that the time execution is below 50ms
  • Code Snippet:
# Prepare the random generator
randomgen.set_numbers([1, 2, 3, 4, 5])
randomgen.set_probabilities([0.2, 0.2, 0.2, 0.2, 0.2])
randomgen.validate()

# Start measuring the time
timestamp_1 = time.time_ns()

# Generate the maximum number of random numbers
randomgen.generate(amount=1000)

# Stop measuring the time
timestamp_2 = time.time_ns()

# Test if the time is less than 25 msec
delta = timestamp_2 - timestamp_1
assert delta < 50e7