1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
use lib '.';
use t::Helper;
my $male = {type => 'object', properties => {chromosomes => {enum => [[qw(X Y)], [qw(Y X)]]}}};
my $female = {type => 'object', properties => {chromosomes => {enum => [[qw(X X)]]}}};
validate_ok {name => "Kate", chromosomes => [qw(X X)]}, $female;
validate_ok {name => "Dave", chromosomes => [qw(X Y)]}, $male;
validate_ok {name => "Arnie", chromosomes => [qw(Y X)]}, $male;
validate_ok {name => "Kate", chromosomes => [qw(X X)]}, $male,
E('/chromosomes', 'Not in enum list: ["X","Y"], ["Y","X"].');
validate_ok {name => "Eddie", chromosomes => [qw(X YY )]}, $male,
E('/chromosomes', 'Not in enum list: ["X","Y"], ["Y","X"].');
validate_ok {name => "Steve", chromosomes => 'XY'}, $male, E('/chromosomes', 'Not in enum list: ["X","Y"], ["Y","X"].');
# https://github.com/jhthorsen/json-validator/issues/69
validate_ok(
{some_prop => ['foo']},
{
type => 'object',
required => ['some_prop'],
properties =>
{some_prop => {type => 'array', minItems => 1, maxItems => 1, items => [{type => 'string', enum => [qw(x y)]}]},},
},
E('/some_prop/0', 'Not in enum list: x, y.')
);
for my $v (undef, false, true) {
validate_ok(
{name => $v},
{
type => 'object',
required => ['name'],
properties => {name => {type => [qw(boolean null)], enum => [undef, false, true]}},
},
);
}
validate_ok(
{name => undef},
{
type => 'object',
required => ['name'],
properties => {name => {type => ['string'], enum => [qw(n yes true false)]}},
},
E('/name', 'Expected string - got null.'),
);
validate_ok(
{name => undef},
{type => 'object', required => ['name'], properties => {name => {enum => [qw(n yes true false)]}}},
E('/name', 'Not in enum list: n, yes, true, false.'),
);
done_testing;
|