import pytest

from xonsh.completers.tools import RichCompletion
from xonsh.readline_shell import _render_completions


@pytest.mark.parametrize(
    'prefix, completion, prefix_len, readline_completion', [
        ('', 'a', 0, 'a'),
        ('a', 'b', 0, 'ab'),
        ('a', 'b', 1, 'b'),
        ('adc', 'bc', 2, 'abc'),
        ('', RichCompletion('x', 0), 0, 'x'),
        ('', RichCompletion('x', 0, 'aaa', 'aaa'), 0, 'x'),
        ('a', RichCompletion('b', 1), 0, 'b'),
        ('a', RichCompletion('b', 0), 1, 'ab'),
        ('a', RichCompletion('b'), 0, 'ab'),
        ('a', RichCompletion('b'), 1, 'b'),
    ])
def test_render_completions(prefix, completion, prefix_len,
                            readline_completion):
    assert _render_completions({completion}, prefix, prefix_len) == [
        readline_completion]
