The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use 5.010;
use warnings;
use Test::More 'no_plan';

use IO::Prompter;

# -yesno

local *ARGV;
open *ARGV, '<', \<<END_INPUT or die $!;
y
y
n
a
yes
y
END_INPUT

ok  prompt("Enter line 1", -yesno) => "-yesno 1";
ok  prompt("Enter line 1", -yn)    => "-yn    2";
ok !prompt("Enter line 1", -yesno) => "-yesno 3";
ok  prompt("Enter line 1", -yesno) => "-yesno 4";
ok  prompt("Enter line 1", -yesno) => "-yesno 4";
ok eof(*ARGV)                      => "-yesno complete";


# -YesNo

local *ARGV;
open *ARGV, '<', \<<END_INPUT or die $!;
Y
y
Y
n
N
a
Yes
Y
END_INPUT

ok  prompt("Enter line 1", -YesNo) => "-YesNo 1";
ok  prompt("Enter line 1", -YN)    => "-YN    2";
ok !prompt("Enter line 1", -YesNo) => "-YesNo 3";
ok  prompt("Enter line 1", -YesNo) => "-YesNo 4";
ok  prompt("Enter line 1", -YesNo) => "-YesNo 4";
ok eof(*ARGV)                      => "-YesNo complete";


# -yes

local *ARGV;
open *ARGV, '<', \<<END_INPUT or die $!;
y
y
n
a
yes
y
END_INPUT

ok  prompt("Enter line 1", -yes) => "-yes 1";
ok  prompt("Enter line 1", -y_)  => "-y   2";
ok !prompt("Enter line 1", -yes) => "-yes 3";
ok !prompt("Enter line 1", -yes) => "-yes 4";
ok  prompt("Enter line 1", -yes) => "-yes 5";
ok  prompt("Enter line 1", -yes) => "-yes 6";
ok eof(*ARGV)                    => "-yes complete";


# -Yes

local *ARGV;
open *ARGV, '<', \<<END_INPUT or die $!;
Y
y
Y
n
N
a
Yes
Y
Y
END_INPUT

ok  prompt("Enter line 1", -Yes) => "-Yes 1";
ok  prompt("Enter line 1", -Y)   => "-Y   2";
ok !prompt("Enter line 1", -Yes) => "-Yes 3";
ok !prompt("Enter line 1", -Yes) => "-Yes 4";
ok !prompt("Enter line 1", -Yes) => "-Yes 5";
ok  prompt("Enter line 1", -Yes) => "-Yes 6";
ok  prompt("Enter line 1", -Yes) => "-Yes 6";
ok  prompt("Enter line 1", -Yes) => "-Yes 7";
ok eof(*ARGV)                    => "-Yes complete";