from __future__ import annotations

import time

import pytest
from python_utils import converters

import progressbar


@pytest.mark.parametrize(
    'name,markers',
    [
        ('line arrows', '←↖↑↗→↘↓↙'),
        ('block arrows', '◢◣◤◥'),
        ('wheels', '◐◓◑◒'),
    ],
)
@pytest.mark.parametrize('as_unicode', [True, False])
def test_markers(name, markers: bytes | str, as_unicode) -> None:
    if as_unicode:
        markers = converters.to_unicode(markers)
    else:
        markers = converters.to_str(markers)

    widgets = [
        f'{name.capitalize()}: ',
        progressbar.AnimatedMarker(markers=markers),
    ]
    bar = progressbar.ProgressBar(widgets=widgets)
    bar._MINIMUM_UPDATE_INTERVAL = 1e-12
    for _i in bar(iter(range(24))):
        time.sleep(0.001)