# Path: ulid/providers/base.py
# class Provider(metaclass=abc.ABCMeta):
#     def new(self) -> TimestampRandomnessBytes:
#     def timestamp(self) -> hints.Bytes:
#     def randomness(self, timestamp: hints.Bytes) -> hints.Bytes:
# 
# Path: ulid/providers/default.py
# class Provider(base.Provider):
#     def timestamp(self) -> hints.Bytes:
#     def randomness(self, timestamp: hints.Bytes) -> hints.Bytes:
# 
# Path: ulid/providers/monotonic.py
# class Provider(base.Provider):
#     def __init__(self, default: base.Provider):
#     def timestamp(self) -> hints.Bytes:
#     def randomness(self, timestamp: hints.Bytes) -> hints.Bytes:


import time
import pytest
from ulid.providers import base, default, monotonic
"""
    test_providers_monotonic
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Tests for the :mod:`~ulid.providers.monotonic` module.
"""



RANDOMNESS_OVERFLOW_REGEX = r'^Monotonic randomness value too large and will overflow'


@pytest.fixture(scope='function')
def provider():
    """
    Fixture that yields a monotonic provider instance.
    """

# Path: ulid/providers/base.py
# class Provider(metaclass=abc.ABCMeta):
#     def new(self) -> TimestampRandomnessBytes:
#     def timestamp(self) -> hints.Bytes:
#     def randomness(self, timestamp: hints.Bytes) -> hints.Bytes:
# 
# Path: ulid/providers/default.py
# class Provider(base.Provider):
#     def timestamp(self) -> hints.Bytes:
#     def randomness(self, timestamp: hints.Bytes) -> hints.Bytes:
# 
# Path: ulid/providers/monotonic.py
# class Provider(base.Provider):
#     def __init__(self, default: base.Provider):
#     def timestamp(self) -> hints.Bytes:
#     def randomness(self, timestamp: hints.Bytes) -> hints.Bytes:


# Path: tests/test_providers_monotonic.py
import time
import pytest
from ulid.providers import base, default, monotonic

"""
    test_providers_monotonic
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Tests for the :mod:`~ulid.providers.monotonic` module.
"""



RANDOMNESS_OVERFLOW_REGEX = r'^Monotonic randomness value too large and will overflow'


@pytest.fixture(scope='function')
def provider():
    """
    Fixture that yields a monotonic provider instance.
    """

    return monotonic.Provider(default.Provider())