#!perl

=pod

=for license Artistic License 2.0 | Copyright (C) 2009,2010 by Sanko Robinson

=for author Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/

=for abstract Tests for functions found in xs/ask.xsi

=for TODO Somehow test selecting different buttons (with defaults and C<ESC>)

=for git $Id: 20010_ask.t 6858aff 2011-01-29 05:17:25Z sanko@cpan.org $

=cut
use strict;
use warnings;
use Test::More 0.82;
use Module::Build qw[];
use Time::HiRes qw[];
use Test::NeedsDisplay ':skip_all';
plan tests => 30;
my $test_builder = Test::More->builder;
BEGIN { chdir '../..' if not -d '_build'; }
use lib 'inc', 'blib/lib', 'blib/arch', 'lib';
my $build           = Module::Build->current;
my $release_testing = $build->notes('release_testing');
my $verbose         = $build->notes('verbose');
my $interactive     = $build->notes('interactive');

#
use FLTK qw[:vars :dialog];

#
is($ok, '&OK', 'Default English value for $ok');
ok($ok = 'Alright!', 'Change value of $ok to \'Alright!\'');
is($FLTK::ok, 'Alright!', 'Verify new value for $ok');

#
is($yes, '&Yes', 'Default English value for $yes');
ok($yes = 'Yeah!', 'Change value of yes to \'Yeah!\'');
is($FLTK::yes, 'Yeah!', 'Verify new value of $yes');

#
is($no, '&No', 'Default English value for $no');
ok($no = 'Nope!', 'Change value of $no to \'Nope!\'');
is($FLTK::no, 'Nope!', 'Verify new value of $no');

#
is($cancel, '&Cancel', 'Default English value of $cancel');
ok($cancel = 'Forget it!', 'Change value of cancel to \'Forget it!\'');
is($FLTK::cancel, 'Forget it!', 'Verify new value of $cancel');

#
ok(!$message_window_timeout, 'Default value for $message_window_timeout');
ok($message_window_timeout = 0.25,
    'Change value of $message_window_timeout to 0.25');
is($FLTK::message_window_timeout, 0.25,
    'Verify new value of $message_window_timeout');

#
ok(!$message_window_scrollable,
    'Default value for $message_window_scrollable');
ok($message_window_scrollable = 1,
    'Change value of $message_window_scrollable to 1');
is($FLTK::message_window_scrollable,
    1, 'Verify new value of $message_window_scrollable');

#
ok(!$message_window_label, 'Default value of $message_window_scrollable');
ok($message_window_label = 'This is my title!',
    'Change value of $message_window_label to \'This is my title!\'');
is($FLTK::message_window_label,
    'This is my title!',
    'Verify new value of $message_window_label');

#
my $message_style = message_style();
my $icon_style    = icon_style();
isa_ok(message_style(), 'FLTK::NamedStyle', 'message_style()');
isa_ok(icon_style(),    'FLTK::NamedStyle', 'icon_style()');

#
note
    'These pop up and go away quick because the message_window_timeout is now 0.25s';
ok(!message("This is a test."),
    'message("This is a test.") always returns void');
ok(!alert("This is a test."), 'alert("This is a test.") always returns void');
is(ask("This is a test."), -1,
    'ask("This is a test.") returns -1 on timeout');
is(input("This is a test.", "default"),
    undef, 'input("This is a test.", "default") returns undef on timeout');
is(password("This is a test.", "default"),
    undef, 'password("This is a test.", "default") returns undef on timeout');
is( choice("This is a test.", 'One', 'Two', 'Three'),
    -1,
    'choice("This is a test.", "One", "Two", "Three") returns -1 on timeout'
);
is( choice_alert("This is a test.", 'One', 'Two', 'Three'),
    -1,
    'choice_alert("This is a test.", "One", "Two", "Three") returns -1 on timeout'
);