File: jv-array.t

package info (click to toggle)
libjson-validator-perl 0.92%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 408 kB
  • ctags: 89
  • sloc: perl: 1,009; makefile: 6
file content (52 lines) | stat: -rw-r--r-- 1,978 bytes parent folder | download
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
use Mojo::Base -strict;
use Test::More;
use JSON::Validator;
use Mojo::JSON;

my $validator = JSON::Validator->new;
my @errors;

my $simple = {type => "array", items => {type => "number"}};
my $length = {type => "array", minItems => 2, maxItems => 2};
my $unique = {type => 'array', uniqueItems => 1, items => {type => 'integer'}};
my $tuple = {
  type  => "array",
  items => [
    {type => "number"},
    {type => "string"},
    {type => "string", enum => ["Street", "Avenue", "Boulevard"]},
    {type => "string", enum => ["NW", "NE", "SW", "SE"]}
  ]
};

@errors = $validator->validate([1], $simple);
is "@errors", "", "simple: success";
@errors = $validator->validate([1, "foo"], $simple);
is "@errors", "/1: Expected number - got string.", "simple: got string";

@errors = $validator->validate([1], $length);
is "@errors", "/: Not enough items: 1/2.", "length: not enough";
@errors = $validator->validate([1, 2], $length);
is "@errors", "", "length: success";
@errors = $validator->validate([1, 2, 3], $length);
is "@errors", "/: Too many items: 3/2.", "length: too many";

@errors = $validator->validate([123, 124], $unique);
is "@errors", "", "unique: success";
@errors = $validator->validate([1, 2, 1], $unique);
is "@errors", "/: Unique items required.", "unique: fail";

@errors = $validator->validate([1600, "Pennsylvania", "Avenue", "NW"], $tuple);
is "@errors", "", "tuple: success";
@errors = $validator->validate([24, "Sussex", "Drive"], $tuple);
is "@errors", "", "tuple: invalid";
@errors = $validator->validate([10, "Downing", "Street"], $tuple);
is "@errors", "", "tuple: not complete length";
@errors = $validator->validate([1600, "Pennsylvania", "Avenue", "NW", "Washington"], $tuple);
is "@errors", "", "tuple: too many";

$tuple->{additionalItems} = Mojo::JSON->false;
@errors = $validator->validate([1600, "Pennsylvania", "Avenue", "NW", "Washington"], $tuple);
is "@errors", "/: Invalid number of items: 5/4.", "tuple: additionalItems";

done_testing;