import click


CONTEXT_SETTINGS = dict(token_normalize_func=lambda x: x.lower())


def test_option_normalization(runner):
    @click.command(context_settings=CONTEXT_SETTINGS)
    @click.option('--foo')
    @click.option('-x')
    def cli(foo, x):
        click.echo(foo)
        click.echo(x)

    result = runner.invoke(cli, ['--FOO', '42', '-X', 23])
    assert result.output == '42\n23\n'


def test_choice_normalization(runner):
    @click.command(context_settings=CONTEXT_SETTINGS)
    @click.option('--choice', type=click.Choice(['Foo', 'Bar']))
    def cli(choice):
        click.echo('Foo')

    result = runner.invoke(cli, ['--CHOICE', 'FOO'])
    assert result.output == 'Foo\n'


def test_command_normalization(runner):
    @click.group(context_settings=CONTEXT_SETTINGS)
    def cli():
        pass

    @cli.command()
    def foo():
        click.echo('here!')

    result = runner.invoke(cli, ['FOO'])
    assert result.output == 'here!\n'
