File: jv-number.t

package info (click to toggle)
libjson-validator-perl 4.14%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 828 kB
  • sloc: perl: 2,816; makefile: 14
file content (34 lines) | stat: -rw-r--r-- 1,545 bytes parent folder | download | duplicates (3)
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
use lib '.';
use t::Helper;

my $schema = {type => 'object', properties => {mynumber => {type => 'number', minimum => -0.5, maximum => 2.7}}};

validate_ok {mynumber => 1}, $schema;
validate_ok {mynumber => '2'}, $schema, E('/mynumber', 'Expected number - got string.');

my $numeric_constant = {type => 'number', const => 2.1};
validate_ok 2.1, $numeric_constant;
validate_ok 1, $numeric_constant, E('/', q{Does not match const: 2.1.});

jv->coerce('numbers');
validate_ok {mynumber => '-0.5'},   $schema;
validate_ok {mynumber => -0.6},     $schema, E('/mynumber', '-0.6 < minimum(-0.5)');
validate_ok {mynumber => '2.7'},    $schema;
validate_ok {mynumber => '2.8'},    $schema, E('/mynumber', '2.8 > maximum(2.7)');
validate_ok {mynumber => '0.1e+1'}, $schema;
validate_ok {mynumber => '2xyz'},   $schema, E('/mynumber', 'Expected number - got string.');
validate_ok {mynumber => '.1'},     $schema, E('/mynumber', 'Expected number - got string.');
validate_ok {validNumber => 2.01},
  {type => 'object', properties => {validNumber => {type => 'number', multipleOf => 0.01}}};

validate_ok '2.1', $numeric_constant;
validate_ok '1', $numeric_constant, E('/', q{Does not match const: 2.1.});

for my $x ([-0.5, 2.7], [true, true]) {
  $schema->{properties}{mynumber}{exclusiveMaximum} = $x->[1];
  $schema->{properties}{mynumber}{exclusiveMinimum} = $x->[0];
  validate_ok {mynumber => 2.7},  $schema, E('/mynumber', '2.7 >= maximum(2.7)');
  validate_ok {mynumber => -0.5}, $schema, E('/mynumber', '-0.5 <= minimum(-0.5)');
}

done_testing;