PATH=C:\PlatSDK\Bin\Win64\x86\AMD64;C:\PlatSDK\Bin;C:\PlatSDK\Bin\WinNT;C:\cygwin\bin;C:\cpanfly-5.14\var\megalib\bin;C:\Perl64-5.14\site\bin;C:\Perl64-5.14\bin;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\PROGRA~2\Perforce;C:\instantclient_11_2;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\PROGRA~2\Perforce;C:\mysql\bin Start 2014-07-18T02:15:06 ActivePerl-1400 CPAN-2.00 LIB=C:\PlatSDK\Lib\AMD64;C:\PlatSDK\Lib\AMD64\atlmfc INCLUDE=C:\PlatSDK\Include;C:\PlatSDK\Include\crt;C:\PlatSDK\Include\crt\sys;C:\PlatSDK\Include\mfc;C:\PlatSDK\Include\atl PATH=C:/CPANFL~1.14/var/libs/bin;C:\PlatSDK\Bin\Win64\x86\AMD64;C:\PlatSDK\Bin;C:\PlatSDK\Bin\WinNT;C:\cygwin\bin;C:\CPANFL~1.14\var\megalib\bin;C:\Perl64-5.14\site\bin;C:\Perl64-5.14\bin;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WINDOW~1\v1.0;C:\PROGRA~2\Perforce;C:\INSTAN~1;C:\cygwin\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WINDOW~1\v1.0;C:\PROGRA~2\Perforce;C:\mysql\bin Reading 'C:\cpanfly-5.14\var\cpan\Metadata' Database was generated on Fri, 18 Jul 2014 07:53:02 GMT Running make for S/SH/SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\S\SH\SHARYANTO\Perinci-Sub-Complete-0.54.tar.gz ok Perinci-Sub-Complete-0.54/ Perinci-Sub-Complete-0.54/README Perinci-Sub-Complete-0.54/lib/ Perinci-Sub-Complete-0.54/lib/Perinci/ Perinci-Sub-Complete-0.54/lib/Perinci/Sub/ Perinci-Sub-Complete-0.54/lib/Perinci/Sub/Complete.pm Perinci-Sub-Complete-0.54/Makefile.PL Perinci-Sub-Complete-0.54/Changes Perinci-Sub-Complete-0.54/dist.ini Perinci-Sub-Complete-0.54/LICENSE Perinci-Sub-Complete-0.54/t/ Perinci-Sub-Complete-0.54/t/00-compile.t Perinci-Sub-Complete-0.54/t/complete_from_schema.t Perinci-Sub-Complete-0.54/t/complete_cli_arg.t Perinci-Sub-Complete-0.54/t/complete_arg_val.t Perinci-Sub-Complete-0.54/t/release-pod-coverage.t Perinci-Sub-Complete-0.54/t/release-pod-syntax.t Perinci-Sub-Complete-0.54/t/release-rinci.t Perinci-Sub-Complete-0.54/t/complete_arg_elem.t Perinci-Sub-Complete-0.54/weaver.ini Perinci-Sub-Complete-0.54/MANIFEST Perinci-Sub-Complete-0.54/META.json Perinci-Sub-Complete-0.54/META.yml CPAN.pm: Building S/SH/SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz >>> C:\Perl64-5.14\bin\perl.exe Makefile.PL Warning: prerequisite Complete::Util 0.12 not found. Warning: prerequisite Data::Sah 0.18 not found. Warning: prerequisite Perinci::Sub::Util 0.38 not found. We have 0.37. Checking if your kit is complete... Looks good Generating a nmake-style Makefile Writing Makefile for Perinci::Sub::Complete Writing MYMETA.yml and MYMETA.json ---- Unsatisfied dependencies detected during ---- ---- SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz ---- Complete::Util [requires] Perinci::Sub::Util [requires] Data::Sah [requires] Running make test Delayed until after prerequisites Running test for module 'Complete::Util' Running make for S/SH/SHARYANTO/Complete-Util-0.13.tar.gz Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\S\SH\SHARYANTO\Complete-Util-0.13.tar.gz ok Complete-Util-0.13/ Complete-Util-0.13/META.json Complete-Util-0.13/LICENSE Complete-Util-0.13/Changes Complete-Util-0.13/META.yml Complete-Util-0.13/Makefile.PL Complete-Util-0.13/t/ Complete-Util-0.13/t/complete_hash_key.t Complete-Util-0.13/t/release-pod-syntax.t Complete-Util-0.13/t/complete_array_elem.t Complete-Util-0.13/t/complete_env.t Complete-Util-0.13/t/complete_file.t Complete-Util-0.13/t/complete_program.t Complete-Util-0.13/t/release-pod-coverage.t Complete-Util-0.13/t/release-rinci.t Complete-Util-0.13/t/00-compile.t Complete-Util-0.13/README Complete-Util-0.13/dist.ini Complete-Util-0.13/lib/ Complete-Util-0.13/lib/Complete/ Complete-Util-0.13/lib/Complete/Util.pm Complete-Util-0.13/MANIFEST Complete-Util-0.13/weaver.ini CPAN.pm: Building S/SH/SHARYANTO/Complete-Util-0.13.tar.gz >>> C:\Perl64-5.14\bin\perl.exe Makefile.PL Checking if your kit is complete... Looks good Generating a nmake-style Makefile Writing Makefile for Complete::Util Writing MYMETA.yml and MYMETA.json >>> nmake Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. cp lib/Complete/Util.pm blib\lib\Complete\Util.pm SHARYANTO/Complete-Util-0.13.tar.gz nmake -- OK Running make test >>> nmake test TEST_VERBOSE=1 Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. C:\Perl64-5.14\bin\perl.exe "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib\lib', 'blib\arch')" t/*.t t/00-compile.t ............ 1..1 ok 1 - Complete/Util.pm loaded ok ok t/complete_array_elem.t ... ok 1 - a (result) ok 2 - an (result) ok 3 - any (result) ok 4 - ci (result) ok 5 - ci (result_ci) 1..5 ok t/complete_env.t .......... ok 1 - A (result) ok 2 - A (result_ci) # Subtest: ci 1..0 # SKIP Windows converts all env names to uppercase ok 3 # skip Windows converts all env names to uppercase 1..3 ok t/complete_file.t ......... ok 1 - (result) ok 2 - a (result) ok 3 - d (result) ok 4 - d (result) ok 5 - d (result) ok 6 - (result) ok 7 - foo/ (result) ok 8 - foo/f (result) 1..8 ok t/complete_hash_key.t ..... ok 1 - a (result) ok 2 - a (result_ci) ok 3 - c (result) ok 4 - c (result_ci) 1..4 ok # Failed test at t/complete_program.t line 27. # Structures begin differing at: # $got->[0] = Does not exist # $expected->[0] = 'prog1' # Failed test at t/complete_program.t line 28. # Structures begin differing at: # $got->[0] = Does not exist # $expected->[0] = 'prog3' # Failed test at t/complete_program.t line 35. # Structures begin differing at: # $got->[0] = Does not exist # $expected->[0] = 'prog1' # Failed test at t/complete_program.t line 36. # Structures begin differing at: # $got->[0] = Does not exist # $expected->[0] = 'prog3' # Looks like you failed 2 tests of 3. # Failed test 'win support' # at t/complete_program.t line 38. # Looks like you failed 3 tests of 5. t/complete_program.t ...... not ok 1 not ok 2 ok 3 # Subtest: win support not ok 1 not ok 2 ok 3 1..3 not ok 4 - win support # Subtest: ci 1..0 # SKIP Filesystem is not case-sensitive ok 5 # skip Filesystem is not case-sensitive 1..5 Dubious, test returned 3 (wstat 768, 0x300) Failed 3/5 subtests (less 1 skipped subtest: 1 okay) t/release-pod-coverage.t .. skipped: these tests are for release candidate testing t/release-pod-syntax.t .... skipped: these tests are for release candidate testing t/release-rinci.t ......... skipped: these tests are for release candidate testing Test Summary Report ------------------- t/complete_program.t (Wstat: 768 Tests: 5 Failed: 3) Failed tests: 1-2, 4 Non-zero exit status: 3 Files=9, Tests=26, 2 wallclock secs ( 0.03 usr + 0.01 sys = 0.05 CPU) Result: FAIL Failed 1/9 test programs. 3/26 subtests failed. NMAKE : fatal error U1077: 'C:\Perl64-5.14\bin\perl.exe' : return code '0xff' Stop. SHARYANTO/Complete-Util-0.13.tar.gz nmake test TEST_VERBOSE=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports SHARYANTO/Complete-Util-0.13.tar.gz Running test for module 'Perinci::Sub::Util' Running make for S/SH/SHARYANTO/Perinci-Sub-Util-0.38.tar.gz Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\S\SH\SHARYANTO\Perinci-Sub-Util-0.38.tar.gz ok Perinci-Sub-Util-0.38/ Perinci-Sub-Util-0.38/README Perinci-Sub-Util-0.38/lib/ Perinci-Sub-Util-0.38/lib/Perinci/ Perinci-Sub-Util-0.38/lib/Perinci/Sub/ Perinci-Sub-Util-0.38/lib/Perinci/Sub/Util.pm Perinci-Sub-Util-0.38/Makefile.PL Perinci-Sub-Util-0.38/Changes Perinci-Sub-Util-0.38/dist.ini Perinci-Sub-Util-0.38/LICENSE Perinci-Sub-Util-0.38/t/ Perinci-Sub-Util-0.38/t/00-compile.t Perinci-Sub-Util-0.38/t/release-pod-coverage.t Perinci-Sub-Util-0.38/t/caller.t Perinci-Sub-Util-0.38/t/release-pod-syntax.t Perinci-Sub-Util-0.38/t/err.t Perinci-Sub-Util-0.38/t/release-rinci.t Perinci-Sub-Util-0.38/t/gen_modified_sub.t Perinci-Sub-Util-0.38/weaver.ini Perinci-Sub-Util-0.38/MANIFEST Perinci-Sub-Util-0.38/META.json Perinci-Sub-Util-0.38/META.yml CPAN.pm: Building S/SH/SHARYANTO/Perinci-Sub-Util-0.38.tar.gz >>> C:\Perl64-5.14\bin\perl.exe Makefile.PL Checking if your kit is complete... Looks good Generating a nmake-style Makefile Writing Makefile for Perinci::Sub::Util Writing MYMETA.yml and MYMETA.json >>> nmake Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. cp lib/Perinci/Sub/Util.pm blib\lib\Perinci\Sub\Util.pm SHARYANTO/Perinci-Sub-Util-0.38.tar.gz nmake -- OK Running make test >>> nmake test TEST_VERBOSE=1 Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. C:\Perl64-5.14\bin\perl.exe "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib\lib', 'blib\arch')" t/*.t t/00-compile.t ............ 1..1 ok 1 - Perinci/Sub/Util.pm loaded ok ok t/caller.t ................ skipped: Perinci::Sub::Wrapper needed for this test t/err.t ................... # Subtest: defaults ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 500 ok 5 - message ok 6 - result ok 7 - result metadata is hash 1..7 ok 1 - defaults # Subtest: set status ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 400 1..4 ok 2 - set status # Subtest: set message ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 500 ok 5 - message 1..5 ok 3 - set message # Subtest: set prev ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 400 ok 5 - message ok 6 - prev 1..6 ok 4 - set prev # Subtest: caller ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 500 ok 5 - message ok 6 - log[0] type ok 7 - log[0] time ok 8 - log[0] package ok 9 - log[0] func ok 10 - log[0] line 1..10 ok 5 - caller # Subtest: stack_trace ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 500 ok 5 - stack_trace 1..5 ok 6 - stack_trace # Subtest: stack_trace only produced once ok 1 - func doesn't die ok 2 - result is defined ok 3 - result is an array ok 4 - status is 501 ok 5 - stack_trace 1..5 ok 7 - stack_trace only produced once 1..7 ok t/gen_modified_sub.t ...... ok 1 ok 2 1..2 ok t/release-pod-coverage.t .. skipped: these tests are for release candidate testing t/release-pod-syntax.t .... skipped: these tests are for release candidate testing t/release-rinci.t ......... skipped: these tests are for release candidate testing All tests successful. Files=7, Tests=10, 1 wallclock secs ( 0.05 usr + 0.02 sys = 0.06 CPU) Result: PASS SHARYANTO/Perinci-Sub-Util-0.38.tar.gz nmake test TEST_VERBOSE=1 -- OK PPD for Perinci-Sub-Util-0.38 already made Running test for module 'Data::Sah' Running make for S/SH/SHARYANTO/Data-Sah-0.29.tar.gz Prepending C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'get' Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\S\SH\SHARYANTO\Data-Sah-0.29.tar.gz ok Data-Sah-0.29/ Data-Sah-0.29/devscripts/ Data-Sah-0.29/devscripts/list-missing-translations Data-Sah-0.29/Changes Data-Sah-0.29/LICENSE Data-Sah-0.29/MANIFEST Data-Sah-0.29/lib/ Data-Sah-0.29/lib/Data/ Data-Sah-0.29/lib/Data/Sah.pm Data-Sah-0.29/lib/Data/Sah/ Data-Sah-0.29/lib/Data/Sah/Util/ Data-Sah-0.29/lib/Data/Sah/Util/Func.pm Data-Sah-0.29/lib/Data/Sah/Util/TypeX.pm Data-Sah-0.29/lib/Data/Sah/Util/Type.pm Data-Sah-0.29/lib/Data/Sah/Util/Role.pm Data-Sah-0.29/lib/Data/Sah/JS.pm Data-Sah-0.29/lib/Data/Sah/Lang/ Data-Sah-0.29/lib/Data/Sah/Lang/fr_FR.pm Data-Sah-0.29/lib/Data/Sah/Lang/zh_CN.pm Data-Sah-0.29/lib/Data/Sah/Lang/id_ID.pm Data-Sah-0.29/lib/Data/Sah/Compiler/ Data-Sah-0.29/lib/Data/Sah/Compiler/Prog/ Data-Sah-0.29/lib/Data/Sah/Compiler/Prog/TH/ Data-Sah-0.29/lib/Data/Sah/Compiler/Prog/TH/all.pm Data-Sah-0.29/lib/Data/Sah/Compiler/Prog/TH/any.pm Data-Sah-0.29/lib/Data/Sah/Compiler/Prog/TH.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl.pm Data-Sah-0.29/lib/Data/Sah/Compiler/TextResultRole.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/ Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/ Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/undef.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/hash.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/num.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/bool.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/array.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/code.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/all.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/str.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/obj.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/date.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/cistr.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/float.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/int.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/re.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/any.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH/buf.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js/TH.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/ Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/ Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/undef.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/hash.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/num.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/bool.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/array.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/code.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/all.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/str.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/obj.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/date.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/cistr.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/float.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/Sortable.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/Comparable.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/int.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/HasElems.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/re.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/any.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH/buf.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human/TH.pm Data-Sah-0.29/lib/Data/Sah/Compiler/Prog.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/ Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/ Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/undef.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/hash.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/num.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/bool.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/array.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/code.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/all.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/str.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/obj.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/date.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/cistr.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/float.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/int.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/re.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/any.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH/buf.pm Data-Sah-0.29/lib/Data/Sah/Compiler/perl/TH.pm Data-Sah-0.29/lib/Data/Sah/Compiler/js.pm Data-Sah-0.29/lib/Data/Sah/Compiler/TH.pm Data-Sah-0.29/lib/Data/Sah/Compiler/human.pm Data-Sah-0.29/lib/Data/Sah/Manual/ Data-Sah-0.29/lib/Data/Sah/Manual/Contributing.pod Data-Sah-0.29/lib/Data/Sah/Manual/Extending.pod Data-Sah-0.29/lib/Data/Sah/Lang.pm Data-Sah-0.29/lib/Data/Sah/Compiler.pm Data-Sah-0.29/lib/Data/Sah/Human.pm Data-Sah-0.29/lib/Data/Sah/Type/ Data-Sah-0.29/lib/Data/Sah/Type/undef.pm Data-Sah-0.29/lib/Data/Sah/Type/hash.pm Data-Sah-0.29/lib/Data/Sah/Type/num.pm Data-Sah-0.29/lib/Data/Sah/Type/bool.pm Data-Sah-0.29/lib/Data/Sah/Type/array.pm Data-Sah-0.29/lib/Data/Sah/Type/code.pm Data-Sah-0.29/lib/Data/Sah/Type/all.pm Data-Sah-0.29/lib/Data/Sah/Type/str.pm Data-Sah-0.29/lib/Data/Sah/Type/obj.pm Data-Sah-0.29/lib/Data/Sah/Type/date.pm Data-Sah-0.29/lib/Data/Sah/Type/cistr.pm Data-Sah-0.29/lib/Data/Sah/Type/BaseType.pm Data-Sah-0.29/lib/Data/Sah/Type/float.pm Data-Sah-0.29/lib/Data/Sah/Type/Sortable.pm Data-Sah-0.29/lib/Data/Sah/Type/Comparable.pm Data-Sah-0.29/lib/Data/Sah/Type/int.pm Data-Sah-0.29/lib/Data/Sah/Type/HasElems.pm Data-Sah-0.29/lib/Data/Sah/Type/re.pm Data-Sah-0.29/lib/Data/Sah/Type/any.pm Data-Sah-0.29/lib/Data/Sah/Type/buf.pm Data-Sah-0.29/README Data-Sah-0.29/META.json Data-Sah-0.29/Makefile.PL Data-Sah-0.29/dist.ini Data-Sah-0.29/t/ Data-Sah-0.29/t/release-rinci.t Data-Sah-0.29/t/01-basics.t Data-Sah-0.29/t/release-pod-coverage.t Data-Sah-0.29/t/perl-type-obj.t Data-Sah-0.29/t/perl-type-bool.t Data-Sah-0.29/t/spectest-js.t Data-Sah-0.29/t/spectest-human.t- Data-Sah-0.29/t/perl-type-re.t Data-Sah-0.29/t/perl-type-code.t Data-Sah-0.29/t/00-compile.t Data-Sah-0.29/t/human-id_ID.t Data-Sah-0.29/t/util-type.t Data-Sah-0.29/t/spectest-perl.t Data-Sah-0.29/t/perl-type-float.t Data-Sah-0.29/t/99-various.t Data-Sah-0.29/t/human-en_US.t Data-Sah-0.29/t/testlib.pl Data-Sah-0.29/t/perl-type-str.t Data-Sah-0.29/t/perl-type-date.t Data-Sah-0.29/t/release-pod-syntax.t Data-Sah-0.29/t/js-type-date.t Data-Sah-0.29/weaver.ini Data-Sah-0.29/META.yml Prepending C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'make' CPAN.pm: Building S/SH/SHARYANTO/Data-Sah-0.29.tar.gz >>> C:\Perl64-5.14\bin\perl.exe Makefile.PL Checking if your kit is complete... Looks good Generating a nmake-style Makefile Writing Makefile for Data::Sah Writing MYMETA.yml and MYMETA.json ---- Unsatisfied dependencies detected during ---- ---- SHARYANTO/Data-Sah-0.29.tar.gz ---- File::ShareDir::Tarball [build_requires] Prepending C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'test' Running make test Delayed until after prerequisites Running test for module 'File::ShareDir::Tarball' Running make for Y/YA/YANICK/File-ShareDir-Tarball-0.2.2.tar.gz Prepending C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'get' Checksum for C:\cpanfly-5.14\var\cpan\sources\authors\id\Y\YA\YANICK\File-ShareDir-Tarball-0.2.2.tar.gz ok File-ShareDir-Tarball-0.2.2/ File-ShareDir-Tarball-0.2.2/xt/ File-ShareDir-Tarball-0.2.2/xt/release/ File-ShareDir-Tarball-0.2.2/xt/release/unused-vars.t File-ShareDir-Tarball-0.2.2/AUTHOR_PLEDGE File-ShareDir-Tarball-0.2.2/lib/ File-ShareDir-Tarball-0.2.2/lib/File/ File-ShareDir-Tarball-0.2.2/lib/File/ShareDir/ File-ShareDir-Tarball-0.2.2/lib/File/ShareDir/Tarball.pm File-ShareDir-Tarball-0.2.2/MANIFEST File-ShareDir-Tarball-0.2.2/Changes File-ShareDir-Tarball-0.2.2/LICENSE File-ShareDir-Tarball-0.2.2/README.mkdn File-ShareDir-Tarball-0.2.2/Build.PL File-ShareDir-Tarball-0.2.2/SIGNATURE File-ShareDir-Tarball-0.2.2/INSTALL File-ShareDir-Tarball-0.2.2/META.json File-ShareDir-Tarball-0.2.2/META.yml File-ShareDir-Tarball-0.2.2/t/ File-ShareDir-Tarball-0.2.2/t/share_non_bundle/ File-ShareDir-Tarball-0.2.2/t/share_non_bundle/foo File-ShareDir-Tarball-0.2.2/t/share/ File-ShareDir-Tarball-0.2.2/t/share/shared-files.tar.gz File-ShareDir-Tarball-0.2.2/t/000-report-versions-tiny.t File-ShareDir-Tarball-0.2.2/t/basic.t File-ShareDir-Tarball-0.2.2/t/00-compile.t File-ShareDir-Tarball-0.2.2/README Prepending C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'make' CPAN.pm: Building Y/YA/YANICK/File-ShareDir-Tarball-0.2.2.tar.gz >>> C:\Perl64-5.14\bin\perl.exe Build.PL Created MYMETA.yml and MYMETA.json Creating new 'Build' script for 'File-ShareDir-Tarball' version '0.2.2' >>> C:\Perl64-5.14\bin\perl.exe ./Build Building File-ShareDir-Tarball YANICK/File-ShareDir-Tarball-0.2.2.tar.gz C:\Perl64-5.14\bin\perl.exe ./Build -- OK Prepending C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'test' Running Build test >>> C:\Perl64-5.14\bin\perl.exe ./Build test verbose=1 t/00-compile.t ................ 1..1 ok 1 - File::ShareDir::Tarball loaded ok ok # # # Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.08 # perl: 5.014000 (wanted any version) on MSWin32 from C:\Perl64-5.14\bin\perl.exe # # Archive::Tar => 2.00 (want any version) # Carp => 1.3301 (want any version) # Exporter => 5.70 (want any version) # File::Find => 1.19 (want any version) # File::ShareDir => 1.102 (want any version) # File::Temp => 0.2304 (want any version) # File::chdir => 0.1006 (want any version) # Module::Build => 0.4206 (want 0.3601) # Test::File::ShareDir => 1.000001 (want v0.3.0) # Test::More => 1.001003 (want 0.88) # parent => 0.228 (want any version) # strict => 1.04 (want any version) # version => 0.9904 (want 0.9901) # warnings => 1.12 (want any version) # # Thanks for using my code. I hope it works for you. # If not, please try and include this output in the bug report. # That will help me reproduce the issue and solve your problem. # t/000-report-versions-tiny.t .. ok 1 - we really didn't test anything, just reporting data 1..1 ok t/basic.t ..................... 1..4 ok 1 - foo ok 2 - bar ok 3 - reuse same directory ok 4 - no bundle? no problem ok All tests successful. Files=3, Tests=6, 1 wallclock secs ( 0.05 usr + 0.03 sys = 0.08 CPU) Result: PASS YANICK/File-ShareDir-Tarball-0.2.2.tar.gz C:\Perl64-5.14\bin\perl.exe ./Build test verbose=1 -- OK PPD for File-ShareDir-Tarball-0.2.2 already made Running make for S/SH/SHARYANTO/Data-Sah-0.29.tar.gz Prepending C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'get' Has already been unwrapped into directory C:\cpanfly-5.14\var\cpan\build\Data-Sah-0.29-mduMT4 Prepending C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'make' CPAN.pm: Building S/SH/SHARYANTO/Data-Sah-0.29.tar.gz >>> nmake Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. cp lib/Data/Sah/Compiler.pm blib\lib\Data\Sah\Compiler.pm cp lib/Data/Sah/Compiler/Prog.pm blib\lib\Data\Sah\Compiler\Prog.pm cp lib/Data/Sah/Compiler/human/TH/array.pm blib\lib\Data\Sah\Compiler\human\TH\array.pm cp lib/Data/Sah/Compiler/human/TH/any.pm blib\lib\Data\Sah\Compiler\human\TH\any.pm cp lib/Data/Sah/Compiler/human/TH/Sortable.pm blib\lib\Data\Sah\Compiler\human\TH\Sortable.pm cp lib/Data/Sah/Compiler/TextResultRole.pm blib\lib\Data\Sah\Compiler\TextResultRole.pm cp lib/Data/Sah/Compiler/human/TH/all.pm blib\lib\Data\Sah\Compiler\human\TH\all.pm cp lib/Data/Sah/Compiler/Prog/TH.pm blib\lib\Data\Sah\Compiler\Prog\TH.pm cp lib/Data/Sah/Compiler/human.pm blib\lib\Data\Sah\Compiler\human.pm cp lib/Data/Sah/Compiler/human/TH/HasElems.pm blib\lib\Data\Sah\Compiler\human\TH\HasElems.pm cp lib/Data/Sah.pm blib\lib\Data\Sah.pm cp lib/Data/Sah/Compiler/TH.pm blib\lib\Data\Sah\Compiler\TH.pm cp lib/Data/Sah/Compiler/human/TH/Comparable.pm blib\lib\Data\Sah\Compiler\human\TH\Comparable.pm cp lib/Data/Sah/Compiler/human/TH.pm blib\lib\Data\Sah\Compiler\human\TH.pm cp lib/Data/Sah/Compiler/Prog/TH/all.pm blib\lib\Data\Sah\Compiler\Prog\TH\all.pm cp lib/Data/Sah/Compiler/Prog/TH/any.pm blib\lib\Data\Sah\Compiler\Prog\TH\any.pm cp lib/Data/Sah/Compiler/human/TH/num.pm blib\lib\Data\Sah\Compiler\human\TH\num.pm cp lib/Data/Sah/Compiler/human/TH/date.pm blib\lib\Data\Sah\Compiler\human\TH\date.pm cp lib/Data/Sah/Compiler/human/TH/undef.pm blib\lib\Data\Sah\Compiler\human\TH\undef.pm cp lib/Data/Sah/Compiler/human/TH/cistr.pm blib\lib\Data\Sah\Compiler\human\TH\cistr.pm cp lib/Data/Sah/Compiler/js/TH.pm blib\lib\Data\Sah\Compiler\js\TH.pm cp lib/Data/Sah/Compiler/human/TH/re.pm blib\lib\Data\Sah\Compiler\human\TH\re.pm cp lib/Data/Sah/Compiler/human/TH/hash.pm blib\lib\Data\Sah\Compiler\human\TH\hash.pm cp lib/Data/Sah/Compiler/human/TH/int.pm blib\lib\Data\Sah\Compiler\human\TH\int.pm cp lib/Data/Sah/Compiler/human/TH/bool.pm blib\lib\Data\Sah\Compiler\human\TH\bool.pm cp lib/Data/Sah/Compiler/human/TH/obj.pm blib\lib\Data\Sah\Compiler\human\TH\obj.pm cp lib/Data/Sah/Compiler/human/TH/buf.pm blib\lib\Data\Sah\Compiler\human\TH\buf.pm cp lib/Data/Sah/Compiler/human/TH/float.pm blib\lib\Data\Sah\Compiler\human\TH\float.pm cp lib/Data/Sah/Compiler/human/TH/str.pm blib\lib\Data\Sah\Compiler\human\TH\str.pm cp lib/Data/Sah/Compiler/human/TH/code.pm blib\lib\Data\Sah\Compiler\human\TH\code.pm cp lib/Data/Sah/Compiler/js.pm blib\lib\Data\Sah\Compiler\js.pm cp lib/Data/Sah/Compiler/js/TH/undef.pm blib\lib\Data\Sah\Compiler\js\TH\undef.pm cp lib/Data/Sah/Compiler/js/TH/float.pm blib\lib\Data\Sah\Compiler\js\TH\float.pm cp lib/Data/Sah/Compiler/js/TH/str.pm blib\lib\Data\Sah\Compiler\js\TH\str.pm cp lib/Data/Sah/Compiler/js/TH/bool.pm blib\lib\Data\Sah\Compiler\js\TH\bool.pm cp lib/Data/Sah/Compiler/js/TH/re.pm blib\lib\Data\Sah\Compiler\js\TH\re.pm cp lib/Data/Sah/Compiler/js/TH/date.pm blib\lib\Data\Sah\Compiler\js\TH\date.pm cp lib/Data/Sah/Compiler/js/TH/array.pm blib\lib\Data\Sah\Compiler\js\TH\array.pm cp lib/Data/Sah/Compiler/js/TH/num.pm blib\lib\Data\Sah\Compiler\js\TH\num.pm cp lib/Data/Sah/Compiler/js/TH/any.pm blib\lib\Data\Sah\Compiler\js\TH\any.pm cp lib/Data/Sah/Compiler/js/TH/all.pm blib\lib\Data\Sah\Compiler\js\TH\all.pm cp lib/Data/Sah/Compiler/js/TH/code.pm blib\lib\Data\Sah\Compiler\js\TH\code.pm cp lib/Data/Sah/Compiler/js/TH/obj.pm blib\lib\Data\Sah\Compiler\js\TH\obj.pm cp lib/Data/Sah/Compiler/js/TH/cistr.pm blib\lib\Data\Sah\Compiler\js\TH\cistr.pm cp lib/Data/Sah/Compiler/js/TH/hash.pm blib\lib\Data\Sah\Compiler\js\TH\hash.pm cp lib/Data/Sah/Compiler/js/TH/int.pm blib\lib\Data\Sah\Compiler\js\TH\int.pm cp lib/Data/Sah/Compiler/js/TH/buf.pm blib\lib\Data\Sah\Compiler\js\TH\buf.pm cp lib/Data/Sah/Compiler/perl/TH/num.pm blib\lib\Data\Sah\Compiler\perl\TH\num.pm cp lib/Data/Sah/Compiler/perl/TH/bool.pm blib\lib\Data\Sah\Compiler\perl\TH\bool.pm cp lib/Data/Sah/Compiler/perl/TH/all.pm blib\lib\Data\Sah\Compiler\perl\TH\all.pm cp lib/Data/Sah/Compiler/perl/TH/array.pm blib\lib\Data\Sah\Compiler\perl\TH\array.pm cp lib/Data/Sah/Compiler/perl/TH/obj.pm blib\lib\Data\Sah\Compiler\perl\TH\obj.pm cp lib/Data/Sah/Compiler/perl/TH/code.pm blib\lib\Data\Sah\Compiler\perl\TH\code.pm cp lib/Data/Sah/Compiler/perl/TH/float.pm blib\lib\Data\Sah\Compiler\perl\TH\float.pm cp lib/Data/Sah/Compiler/perl.pm blib\lib\Data\Sah\Compiler\perl.pm cp lib/Data/Sah/Compiler/perl/TH/int.pm blib\lib\Data\Sah\Compiler\perl\TH\int.pm cp lib/Data/Sah/Compiler/perl/TH.pm blib\lib\Data\Sah\Compiler\perl\TH.pm cp lib/Data/Sah/Compiler/perl/TH/any.pm blib\lib\Data\Sah\Compiler\perl\TH\any.pm cp lib/Data/Sah/Compiler/perl/TH/buf.pm blib\lib\Data\Sah\Compiler\perl\TH\buf.pm cp lib/Data/Sah/Compiler/perl/TH/cistr.pm blib\lib\Data\Sah\Compiler\perl\TH\cistr.pm cp lib/Data/Sah/Compiler/perl/TH/hash.pm blib\lib\Data\Sah\Compiler\perl\TH\hash.pm cp lib/Data/Sah/Compiler/perl/TH/date.pm blib\lib\Data\Sah\Compiler\perl\TH\date.pm cp lib/Data/Sah/Type/bool.pm blib\lib\Data\Sah\Type\bool.pm cp lib/Data/Sah/Type/array.pm blib\lib\Data\Sah\Type\array.pm cp lib/Data/Sah/Manual/Extending.pod blib\lib\Data\Sah\Manual\Extending.pod cp lib/Data/Sah/Manual/Contributing.pod blib\lib\Data\Sah\Manual\Contributing.pod cp lib/Data/Sah/Type/Sortable.pm blib\lib\Data\Sah\Type\Sortable.pm cp lib/Data/Sah/Lang/id_ID.pm blib\lib\Data\Sah\Lang\id_ID.pm cp lib/Data/Sah/Lang/zh_CN.pm blib\lib\Data\Sah\Lang\zh_CN.pm cp lib/Data/Sah/Type/any.pm blib\lib\Data\Sah\Type\any.pm cp lib/Data/Sah/Compiler/perl/TH/str.pm blib\lib\Data\Sah\Compiler\perl\TH\str.pm cp lib/Data/Sah/Compiler/perl/TH/re.pm blib\lib\Data\Sah\Compiler\perl\TH\re.pm cp lib/Data/Sah/JS.pm blib\lib\Data\Sah\JS.pm cp lib/Data/Sah/Type/all.pm blib\lib\Data\Sah\Type\all.pm cp lib/Data/Sah/Type/BaseType.pm blib\lib\Data\Sah\Type\BaseType.pm cp lib/Data/Sah/Human.pm blib\lib\Data\Sah\Human.pm cp lib/Data/Sah/Compiler/perl/TH/undef.pm blib\lib\Data\Sah\Compiler\perl\TH\undef.pm cp lib/Data/Sah/Lang/fr_FR.pm blib\lib\Data\Sah\Lang\fr_FR.pm cp lib/Data/Sah/Lang.pm blib\lib\Data\Sah\Lang.pm cp lib/Data/Sah/Type/Comparable.pm blib\lib\Data\Sah\Type\Comparable.pm cp lib/Data/Sah/Type/HasElems.pm blib\lib\Data\Sah\Type\HasElems.pm cp lib/Data/Sah/Type/hash.pm blib\lib\Data\Sah\Type\hash.pm cp lib/Data/Sah/Type/re.pm blib\lib\Data\Sah\Type\re.pm cp lib/Data/Sah/Type/str.pm blib\lib\Data\Sah\Type\str.pm cp lib/Data/Sah/Type/float.pm blib\lib\Data\Sah\Type\float.pm cp lib/Data/Sah/Util/Type.pm blib\lib\Data\Sah\Util\Type.pm cp lib/Data/Sah/Type/cistr.pm blib\lib\Data\Sah\Type\cistr.pm cp lib/Data/Sah/Util/Role.pm blib\lib\Data\Sah\Util\Role.pm cp lib/Data/Sah/Type/buf.pm blib\lib\Data\Sah\Type\buf.pm cp lib/Data/Sah/Type/undef.pm blib\lib\Data\Sah\Type\undef.pm cp lib/Data/Sah/Util/Func.pm blib\lib\Data\Sah\Util\Func.pm cp lib/Data/Sah/Type/int.pm blib\lib\Data\Sah\Type\int.pm cp lib/Data/Sah/Type/obj.pm blib\lib\Data\Sah\Type\obj.pm cp lib/Data/Sah/Type/code.pm blib\lib\Data\Sah\Type\code.pm cp lib/Data/Sah/Type/date.pm blib\lib\Data\Sah\Type\date.pm cp lib/Data/Sah/Type/num.pm blib\lib\Data\Sah\Type\num.pm cp lib/Data/Sah/Util/TypeX.pm blib\lib\Data\Sah\Util\TypeX.pm SHARYANTO/Data-Sah-0.29.tar.gz nmake -- OK Prepending C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'test' Running make test >>> nmake test TEST_VERBOSE=1 Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. C:\Perl64-5.14\bin\perl.exe "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib\lib', 'blib\arch')" t/*.t t/00-compile.t ............ 1..95 ok 1 - Data/Sah.pm loaded ok ok 2 - Data/Sah/Compiler.pm loaded ok ok 3 - Data/Sah/Compiler/Prog.pm loaded ok ok 4 - Data/Sah/Compiler/Prog/TH.pm loaded ok ok 5 - Data/Sah/Compiler/Prog/TH/all.pm loaded ok ok 6 - Data/Sah/Compiler/Prog/TH/any.pm loaded ok ok 7 - Data/Sah/Compiler/TH.pm loaded ok ok 8 - Data/Sah/Compiler/TextResultRole.pm loaded ok ok 9 - Data/Sah/Compiler/human.pm loaded ok ok 10 - Data/Sah/Compiler/human/TH.pm loaded ok ok 11 - Data/Sah/Compiler/human/TH/Comparable.pm loaded ok ok 12 - Data/Sah/Compiler/human/TH/HasElems.pm loaded ok ok 13 - Data/Sah/Compiler/human/TH/Sortable.pm loaded ok ok 14 - Data/Sah/Compiler/human/TH/all.pm loaded ok ok 15 - Data/Sah/Compiler/human/TH/any.pm loaded ok ok 16 - Data/Sah/Compiler/human/TH/array.pm loaded ok ok 17 - Data/Sah/Compiler/human/TH/bool.pm loaded ok ok 18 - Data/Sah/Compiler/human/TH/buf.pm loaded ok ok 19 - Data/Sah/Compiler/human/TH/cistr.pm loaded ok ok 20 - Data/Sah/Compiler/human/TH/code.pm loaded ok ok 21 - Data/Sah/Compiler/human/TH/date.pm loaded ok ok 22 - Data/Sah/Compiler/human/TH/float.pm loaded ok ok 23 - Data/Sah/Compiler/human/TH/hash.pm loaded ok ok 24 - Data/Sah/Compiler/human/TH/int.pm loaded ok ok 25 - Data/Sah/Compiler/human/TH/num.pm loaded ok ok 26 - Data/Sah/Compiler/human/TH/obj.pm loaded ok ok 27 - Data/Sah/Compiler/human/TH/re.pm loaded ok ok 28 - Data/Sah/Compiler/human/TH/str.pm loaded ok ok 29 - Data/Sah/Compiler/human/TH/undef.pm loaded ok ok 30 - Data/Sah/Compiler/js.pm loaded ok ok 31 - Data/Sah/Compiler/js/TH.pm loaded ok ok 32 - Data/Sah/Compiler/js/TH/all.pm loaded ok ok 33 - Data/Sah/Compiler/js/TH/any.pm loaded ok ok 34 - Data/Sah/Compiler/js/TH/array.pm loaded ok ok 35 - Data/Sah/Compiler/js/TH/bool.pm loaded ok ok 36 - Data/Sah/Compiler/js/TH/buf.pm loaded ok ok 37 - Data/Sah/Compiler/js/TH/cistr.pm loaded ok ok 38 - Data/Sah/Compiler/js/TH/code.pm loaded ok ok 39 - Data/Sah/Compiler/js/TH/date.pm loaded ok ok 40 - Data/Sah/Compiler/js/TH/float.pm loaded ok ok 41 - Data/Sah/Compiler/js/TH/hash.pm loaded ok ok 42 - Data/Sah/Compiler/js/TH/int.pm loaded ok ok 43 - Data/Sah/Compiler/js/TH/num.pm loaded ok ok 44 - Data/Sah/Compiler/js/TH/obj.pm loaded ok ok 45 - Data/Sah/Compiler/js/TH/re.pm loaded ok ok 46 - Data/Sah/Compiler/js/TH/str.pm loaded ok ok 47 - Data/Sah/Compiler/js/TH/undef.pm loaded ok ok 48 - Data/Sah/Compiler/perl.pm loaded ok ok 49 - Data/Sah/Compiler/perl/TH.pm loaded ok ok 50 - Data/Sah/Compiler/perl/TH/all.pm loaded ok ok 51 - Data/Sah/Compiler/perl/TH/any.pm loaded ok ok 52 - Data/Sah/Compiler/perl/TH/array.pm loaded ok ok 53 - Data/Sah/Compiler/perl/TH/bool.pm loaded ok ok 54 - Data/Sah/Compiler/perl/TH/buf.pm loaded ok ok 55 - Data/Sah/Compiler/perl/TH/cistr.pm loaded ok ok 56 - Data/Sah/Compiler/perl/TH/code.pm loaded ok ok 57 - Data/Sah/Compiler/perl/TH/date.pm loaded ok ok 58 - Data/Sah/Compiler/perl/TH/float.pm loaded ok ok 59 - Data/Sah/Compiler/perl/TH/hash.pm loaded ok ok 60 - Data/Sah/Compiler/perl/TH/int.pm loaded ok ok 61 - Data/Sah/Compiler/perl/TH/num.pm loaded ok ok 62 - Data/Sah/Compiler/perl/TH/obj.pm loaded ok ok 63 - Data/Sah/Compiler/perl/TH/re.pm loaded ok ok 64 - Data/Sah/Compiler/perl/TH/str.pm loaded ok ok 65 - Data/Sah/Compiler/perl/TH/undef.pm loaded ok ok 66 - Data/Sah/Human.pm loaded ok ok 67 - Data/Sah/JS.pm loaded ok ok 68 - Data/Sah/Lang.pm loaded ok ok 69 - Data/Sah/Lang/fr_FR.pm loaded ok ok 70 - Data/Sah/Lang/id_ID.pm loaded ok ok 71 - Data/Sah/Lang/zh_CN.pm loaded ok ok 72 - Data/Sah/Type/BaseType.pm loaded ok ok 73 - Data/Sah/Type/Comparable.pm loaded ok ok 74 - Data/Sah/Type/HasElems.pm loaded ok ok 75 - Data/Sah/Type/Sortable.pm loaded ok ok 76 - Data/Sah/Type/all.pm loaded ok ok 77 - Data/Sah/Type/any.pm loaded ok ok 78 - Data/Sah/Type/array.pm loaded ok ok 79 - Data/Sah/Type/bool.pm loaded ok ok 80 - Data/Sah/Type/buf.pm loaded ok ok 81 - Data/Sah/Type/cistr.pm loaded ok ok 82 - Data/Sah/Type/code.pm loaded ok ok 83 - Data/Sah/Type/date.pm loaded ok ok 84 - Data/Sah/Type/float.pm loaded ok ok 85 - Data/Sah/Type/hash.pm loaded ok ok 86 - Data/Sah/Type/int.pm loaded ok ok 87 - Data/Sah/Type/num.pm loaded ok ok 88 - Data/Sah/Type/obj.pm loaded ok ok 89 - Data/Sah/Type/re.pm loaded ok ok 90 - Data/Sah/Type/str.pm loaded ok ok 91 - Data/Sah/Type/undef.pm loaded ok ok 92 - Data/Sah/Util/Func.pm loaded ok ok 93 - Data/Sah/Util/Role.pm loaded ok ok 94 - Data/Sah/Util/Type.pm loaded ok ok 95 - Data/Sah/Util/TypeX.pm loaded ok ok t/01-basics.t ............. # Subtest: compile() # Subtest: on_unhandled_clause option ok 1 - die (default) ok 2 - warn ok 3 - ignore 1..3 ok 1 - on_unhandled_clause option # Subtest: on_unhandled_attr option ok 1 - die (default) ok 2 - warn ok 3 - ignore 1..3 ok 2 - on_unhandled_attr option # Subtest: skip_clause option ok 1 ok 2 - skip_clause in gen_validator() 1 ok 3 - skip_clause in gen_validator() 2 ok 4 - skip_clause in gen_validator() 3 1..4 ok 3 - skip_clause option 1..3 ok 1 - compile() 1..1 ok # node.js not available, skipping JS test t/99-various.t ............ # Subtest: [2014-01-03 ] req_keys clash between $_ and $dt # Subtest: perl ok 1 - [] validates ok 2 - ['a'] doesn't validate ok 3 - [{}] doesn't validate ok 4 - [{b=>1}] doesn't validate ok 5 - [{a=>1}] validates 1..5 ok 1 - perl 1..1 ok 1 - [2014-01-03 ] req_keys clash between $_ and $dt 1..1 ok t/human-en_US.t ........... # Subtest: integer ok 1 - result 1..1 ok 1 - integer # Subtest: integer ok 1 - result 1..1 ok 2 - integer # Subtest: integer, must be at least 1 ok 1 - result 1..1 ok 3 - integer, must be at least 1 # Subtest: integer, must be at least 1, must be at most 10 ok 1 - result 1..1 ok 4 - integer, must be at least 1, must be at most 10 # Subtest: integer, must be divisible by 2 and 5 ok 1 - result 1..1 ok 5 - integer, must be divisible by 2 and 5 # Subtest: integer, must be divisible by all of [2,3,5] ok 1 - result 1..1 ok 6 - integer, must be divisible by all of [2,3,5] # Subtest: integer, must be divisible by 2 or 5 ok 1 - result 1..1 ok 7 - integer, must be divisible by 2 or 5 # Subtest: integer, must be divisible by one of [2,3,5] ok 1 - result 1..1 ok 8 - integer, must be divisible by one of [2,3,5] # Subtest: integer, must not be divisible by 5 ok 1 - result 1..1 ok 9 - integer, must not be divisible by 5 # Subtest: array of integers ok 1 - result 1..1 ok 10 - array of integers # Subtest: (?^x:array .+ each\sarray\selement\smust\sbe: .+ # integer .+ at\sleast\s1) ok 1 - result 1..1 ok 11 - (?^x:array .+ each\sarray\selement\smust\sbe: .+ # integer .+ at\sleast\s1) # Subtest: array, 1st element must be: integer ok 1 - result 1..1 ok 12 - array, 1st element must be: integer # Subtest: (?^x:must\sbe\sall\sof\sthe\sfollowing: .+ # integer.+even .+ # integer.+divisible\sby\s5 .+ # ) ok 1 - result 1..1 ok 13 - (?^x:must\sbe\sall\sof\sthe\sfollowing: .+ # integer.+even .+ # integer.+divisible\sby\s5 .+ # ) # Subtest: hash, field f must be: decimal number, field i must be: (integer, must be at least 0) ok 1 - result 1..1 ok 14 - hash, field f must be: decimal number, field i must be: (integer, must be at least 0) 1..14 ok t/human-id_ID.t ........... # Subtest: bilangan bulat ok 1 - result 1..1 ok 1 - bilangan bulat # Subtest: larik, elemen ke-1 harus: bilangan bulat ok 1 - result 1..1 ok 2 - larik, elemen ke-1 harus: bilangan bulat 1..2 ok t/js-type-date.t .......... skipped: node.js is not available t/perl-type-bool.t ........ ok 1 ok 2 ok 3 1..3 ok t/perl-type-code.t ........ ok 1 ok 2 1..2 ok t/perl-type-date.t ........ ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 1..15 ok # Failed test 'NaN vs ["float", "is_inf", 1]' # at t/perl-type-float.t line 38. # Failed test 'NaN vs ["float", "is_pos_inf", 1]' # at t/perl-type-float.t line 38. # Failed test '-Inf vs ["float", "is_pos_inf", 1]' # at t/perl-type-float.t line 38. # Failed test 'NaN vs ["float", "is_neg_inf", 1]' # at t/perl-type-float.t line 38. # Failed test 'Inf vs ["float", "is_neg_inf", 1]' # at t/perl-type-float.t line 38. # Looks like you failed 5 tests of 15. t/perl-type-float.t ....... ok 1 - 1 vs ["float", "is_nan", 1] ok 2 - Inf vs ["float", "is_nan", 1] ok 3 - NaN vs ["float", "is_nan", 1] ok 4 - 1 vs ["float", "is_inf", 1] not ok 5 - NaN vs ["float", "is_inf", 1] ok 6 - -Inf vs ["float", "is_inf", 1] ok 7 - Inf vs ["float", "is_inf", 1] ok 8 - 1 vs ["float", "is_pos_inf", 1] not ok 9 - NaN vs ["float", "is_pos_inf", 1] not ok 10 - -Inf vs ["float", "is_pos_inf", 1] ok 11 - Inf vs ["float", "is_pos_inf", 1] ok 12 - 1 vs ["float", "is_neg_inf", 1] not ok 13 - NaN vs ["float", "is_neg_inf", 1] ok 14 - -Inf vs ["float", "is_neg_inf", 1] not ok 15 - Inf vs ["float", "is_neg_inf", 1] 1..15 Dubious, test returned 5 (wstat 1280, 0x500) Failed 5/15 subtests t/perl-type-obj.t ......... ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 1..11 ok t/perl-type-re.t .......... ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 1..6 ok t/perl-type-str.t ......... ok 1 ok 2 1..2 ok t/release-pod-coverage.t .. skipped: these tests are for release candidate testing t/release-pod-syntax.t .... skipped: these tests are for release candidate testing t/release-rinci.t ......... skipped: these tests are for release candidate testing t/spectest-js.t ........... skipped: node.js is not available # Loading 10-type-all.json ... # Loading 10-type-any.json ... # Loading 10-type-array.json ... # Skipping test (tags=clause:check_each_index, type, type:array) check_each_index: clause check_each_index not yet implemented # Skipping test (tags=clause:check_each_elem, type, type:array) check_each_elem: clause check_each_elem not yet implemented # Skipping test (tags=clause:uniq, type, type:array) uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:uniq, type, type:array) uniq=0: clause uniq not yet implemented # Skipping test (tags=clause:uniq, op, op:not, opshortcut, type, type:array) !uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:exists, type, type:array) exists: clause exists not yet implemented # Skipping test (tags=prop:len, type, type:array) prop:len: properties are not yet implemented # Skipping test (tags=prop:indices, type, type:array) prop:indices: properties are not yet implemented # Skipping test (tags=prop:elems, type, type:array) prop:elems: properties are not yet implemented # Loading 10-type-bool.json ... # Skipping test (tags=clause:between, op, op:not, opshortcut, type, type:bool) !between (nok): currently failing # Skipping test (tags=clause:between, op, op:not, opshortcut, type, type:bool) !between (ok): currently failing # Skipping test (tags=clause:between, op, op:not, type, type:bool) between.op=not (nok): currently failing # Skipping test (tags=clause:between, op, op:not, type, type:bool) between.op=not (ok): currently failing # Skipping test (tags=clause:between, op, op:and, opshortcut, type, type:bool) between& (no items): currently failing # Skipping test (tags=clause:between, op, op:and, opshortcut, type, type:bool) between& (ok): currently failing # Skipping test (tags=clause:between, op, op:and, opshortcut, type, type:bool) between& (nok + ok): currently failing # Skipping test (tags=clause:between, op, op:and, opshortcut, type, type:bool) between& (ok + nok): currently failing # Skipping test (tags=clause:between, op, op:and, opshortcut, type, type:bool) between& (nok + nok): currently failing # Skipping test (tags=clause:between, op, op:and, type, type:bool) between.op=and (ok): currently failing # Skipping test (tags=clause:between, op, op:and, type, type:bool) between.op=and (nok + ok): currently failing # Skipping test (tags=clause:between, op, op:and, type, type:bool) between.op=and (ok + nok): currently failing # Skipping test (tags=clause:between, op, op:and, type, type:bool) between.op=and (nok + nok): currently failing # Skipping test (tags=clause:between, op, op:or, opshortcut, type, type:bool) between| (no items): currently failing # Skipping test (tags=clause:between, op, op:or, opshortcut, type, type:bool) between| (ok): currently failing # Skipping test (tags=clause:between, op, op:or, opshortcut, type, type:bool) between| (nok + ok): currently failing # Skipping test (tags=clause:between, op, op:or, opshortcut, type, type:bool) between| (ok + nok): currently failing # Skipping test (tags=clause:between, op, op:or, opshortcut, type, type:bool) between| (nok + nok): currently failing # Skipping test (tags=clause:between, op, op:or, type, type:bool) between.op=or (no items): currently failing # Skipping test (tags=clause:between, op, op:or, type, type:bool) between.op=or (ok): currently failing # Skipping test (tags=clause:between, op, op:or, type, type:bool) between.op=or (nok + ok): currently failing # Skipping test (tags=clause:between, op, op:or, type, type:bool) between.op=or (ok + nok): currently failing # Skipping test (tags=clause:between, op, op:or, type, type:bool) between.op=or (nok + nok): currently failing # Skipping test (tags=clause:between, op, op:none, type, type:bool) between.op=none (empty items): currently failing # Skipping test (tags=clause:between, op, op:none, type, type:bool) between.op=none (nok + nok): currently failing # Skipping test (tags=clause:between, op, op:none, type, type:bool) between.op=none (nok + ok): currently failing # Skipping test (tags=clause:between, op, op:none, type, type:bool) between.op=none (ok + nok): currently failing # Skipping test (tags=clause:between, op, op:none, type, type:bool) between.op=none (ok + ok): currently failing # Loading 10-type-buf.json ... # Skipping test (tags=clause:check_each_index, type, type:buf) check_each_index: clause check_each_index not yet implemented # Skipping test (tags=clause:check_each_elem, type, type:buf) check_each_elem: clause check_each_elem not yet implemented # Skipping test (tags=clause:uniq, type, type:buf) uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:uniq, type, type:buf) uniq=0: clause uniq not yet implemented # Skipping test (tags=clause:uniq, op, op:not, opshortcut, type, type:buf) !uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:exists, type, type:buf) exists: clause exists not yet implemented # Skipping test (tags=prop:len, type, type:buf) prop:len: properties are not yet implemented # Skipping test (tags=prop:indices, type, type:buf) prop:indices: properties are not yet implemented # Skipping test (tags=prop:elems, type, type:buf) prop:elems: properties are not yet implemented # Loading 10-type-cistr.json ... # Skipping test (tags=clause:check_each_index, type, type:cistr) check_each_index: clause check_each_index not yet implemented # Skipping test (tags=clause:check_each_elem, type, type:cistr) check_each_elem: clause check_each_elem not yet implemented # Skipping test (tags=clause:uniq, type, type:cistr) uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:uniq, type, type:cistr) uniq=0: clause uniq not yet implemented # Skipping test (tags=clause:uniq, op, op:not, opshortcut, type, type:cistr) !uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:exists, type, type:cistr) exists: clause exists not yet implemented # Skipping test (tags=prop:len, type, type:cistr) prop:len: properties are not yet implemented # Skipping test (tags=prop:indices, type, type:cistr) prop:indices: properties are not yet implemented # Skipping test (tags=prop:elems, type, type:cistr) prop:elems: properties are not yet implemented # Loading 10-type-float.json ... # Loading 10-type-hash.json ... # Skipping test (tags=clause:check_each_index, type, type:hash) check_each_index: clause check_each_index not yet implemented # Skipping test (tags=clause:check_each_key, type, type:hash) check_each_key: clause check_each_key not yet implemented # Skipping test (tags=clause:check_each_elem, type, type:hash) check_each_elem: clause check_each_elem not yet implemented # Skipping test (tags=clause:check_each_value, type, type:hash) check_each_value: clause check_each_value not yet implemented # Skipping test (tags=clause:uniq, type, type:hash) uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:uniq, type, type:hash) uniq=0: clause uniq not yet implemented # Skipping test (tags=clause:uniq, op, op:not, opshortcut, type, type:hash) !uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:exists, type, type:hash) exists: clause exists not yet implemented # Skipping test (tags=prop:len, type, type:hash) prop:len: properties are not yet implemented # Skipping test (tags=prop:indices, type, type:hash) prop:indices: properties are not yet implemented # Skipping test (tags=prop:keys, type, type:hash) prop:keys: properties are not yet implemented # Skipping test (tags=prop:elems, type, type:hash) prop:elems: properties are not yet implemented # Skipping test (tags=prop:values, type, type:hash) prop:values: properties are not yet implemented # Skipping test (tags=prop:keys, type, type:hash) prop:keys: properties are not yet implemented # Skipping test (tags=prop:values, type, type:hash) prop:values: properties are not yet implemented # Loading 10-type-int.json ... # Loading 10-type-num.json ... # Loading 10-type-obj.json ... # Skipping test (tags=prop:meths, type, type:obj) prop:meths (nok): properties are not yet implemented # Skipping test (tags=prop:attrs, type, type:obj) prop:attrs (nok): properties are not yet implemented # Loading 10-type-str.json ... # Skipping test (tags=clause:check_each_index, type, type:str) check_each_index: clause check_each_index not yet implemented # Skipping test (tags=clause:check_each_elem, type, type:str) check_each_elem: clause check_each_elem not yet implemented # Skipping test (tags=clause:uniq, type, type:str) uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:uniq, type, type:str) uniq=0: clause uniq not yet implemented # Skipping test (tags=clause:uniq, op, op:not, opshortcut, type, type:str) !uniq=1: clause uniq not yet implemented # Skipping test (tags=clause:exists, type, type:str) exists: clause exists not yet implemented # Skipping test (tags=prop:len, type, type:str) prop:len: properties are not yet implemented # Skipping test (tags=prop:indices, type, type:str) prop:indices: properties are not yet implemented # Skipping test (tags=prop:elems, type, type:str) prop:elems: properties are not yet implemented # Loading 10-type-undef.json ... t/spectest-perl.t ......... # Subtest: 00-normalize_schema.json # Subtest: schema must be defined ok 1 - dies 1..1 ok 1 - schema must be defined # Subtest: string: type name must not be blank ok 1 - dies 1..1 ok 2 - string: type name must not be blank # Subtest: string: type name must be valid (ok) ok 1 - result ok 2 - doesn't die 1..2 ok 3 - string: type name must be valid (ok) # Subtest: string: type name must be valid (ok, has namespace) ok 1 - result ok 2 - doesn't die 1..2 ok 4 - string: type name must be valid (ok, has namespace) # Subtest: string: type name must be valid (fail, has whitespace) ok 1 - dies 1..1 ok 5 - string: type name must be valid (fail, has whitespace) # Subtest: string: type name must be valid (fail, starts with number) ok 1 - dies 1..1 ok 6 - string: type name must be valid (fail, starts with number) # Subtest: string: * suffix is allowed and normalized to req clause ok 1 - result ok 2 - doesn't die 1..2 ok 7 - string: * suffix is allowed and normalized to req clause # Subtest: string: multiple * suffix is not allowed ok 1 - dies 1..1 ok 8 - string: multiple * suffix is not allowed # Subtest: array: must not be empty ok 1 - dies 1..1 ok 9 - array: must not be empty # Subtest: array: type name must be valid (ok) ok 1 - result ok 2 - doesn't die 1..2 ok 10 - array: type name must be valid (ok) # Subtest: array: type name must be valid (fail, has whitespace) ok 1 - dies 1..1 ok 11 - array: type name must be valid (fail, has whitespace) # Subtest: array: * suffix is allowed and normalized to req clause ok 1 - result ok 2 - doesn't die 1..2 ok 12 - array: * suffix is allowed and normalized to req clause # Subtest: array: clause set must be hash (ok, empty) ok 1 - result ok 2 - doesn't die 1..2 ok 13 - array: clause set must be hash (ok, empty) # Subtest: array: clause set must be hash (ok, has some clauses) ok 1 - result ok 2 - doesn't die 1..2 ok 14 - array: clause set must be hash (ok, has some clauses) # Subtest: array: clause set must be hash (fail, string) ok 1 - dies 1..1 ok 15 - array: clause set must be hash (fail, string) # Subtest: array: clause set must be hash (fail, array) ok 1 - dies 1..1 ok 16 - array: clause set must be hash (fail, array) # Subtest: array: clause name must be valid (fail, has whitespace) ok 1 - dies 1..1 ok 17 - array: clause name must be valid (fail, has whitespace) # Subtest: array: clause name must be valid (fail, starts with number) ok 1 - dies 1..1 ok 18 - array: clause name must be valid (fail, starts with number) # Subtest: array: * suffix is allowed and normalized to req clause (2-element-array schema) ok 1 - result ok 2 - doesn't die 1..2 ok 19 - array: * suffix is allowed and normalized to req clause (2-element-array schema) # Subtest: array: * suffix is allowed and normalized to req clause (overrides existing req clause) ok 1 - result ok 2 - doesn't die 1..2 ok 20 - array: * suffix is allowed and normalized to req clause (overrides existing req clause) # Subtest: array: clause attribute name must be valid (ok) ok 1 - result ok 2 - doesn't die 1..2 ok 21 - array: clause attribute name must be valid (ok) # Subtest: array: clause attribute name must be valid (fail, has whitespace) ok 1 - dies 1..1 ok 22 - array: clause attribute name must be valid (fail, has whitespace) # Subtest: array: setting attribute on clause "" is permitted ok 1 - result ok 2 - doesn't die 1..2 ok 23 - array: setting attribute on clause "" is permitted # Subtest: array: setting value attribute on clause "" using syntax "" is not permitted ok 1 - dies 1..1 ok 24 - array: setting value attribute on clause "" using syntax "" is not permitted # Subtest: array: flattened clause set is permitted ok 1 - result ok 2 - doesn't die 1..2 ok 25 - array: flattened clause set is permitted # Subtest: array: flattened clause set is permitted (with * suffix) ok 1 - result ok 2 - doesn't die 1..2 ok 26 - array: flattened clause set is permitted (with * suffix) # Subtest: array: flattened clause set is permitted (fail, odd number of elements) ok 1 - dies 1..1 ok 27 - array: flattened clause set is permitted (fail, odd number of elements) # Subtest: array: expression (clause=) is allowed on clause and normalized ok 1 - result ok 2 - doesn't die 1..2 ok 28 - array: expression (clause=) is allowed on clause and normalized # Subtest: array: expression (clause=) is allowed on clause.attr and normalized ok 1 - result ok 2 - doesn't die 1..2 ok 29 - array: expression (clause=) is allowed on clause.attr and normalized # Subtest: array: expression (clause=) must not conflict with literal value (fail) ok 1 - dies 1..1 ok 30 - array: expression (clause=) must not conflict with literal value (fail) # Subtest: array: expression (clause.attr=) must not conflict with literal value (fail) ok 1 - dies 1..1 ok 31 - array: expression (clause.attr=) must not conflict with literal value (fail) # Subtest: array: !clause is normalized ok 1 - result ok 2 - doesn't die 1..2 ok 32 - array: !clause is normalized # Subtest: array: !clause.attr is not allowed ok 1 - dies 1..1 ok 33 - array: !clause.attr is not allowed # Subtest: array: clause| is normalized ok 1 - result ok 2 - doesn't die 1..2 ok 34 - array: clause| is normalized # Subtest: array: clause.attr| is not allowed ok 1 - dies 1..1 ok 35 - array: clause.attr| is not allowed # Subtest: array: clause| value must be array (fail, not array) ok 1 - dies 1..1 ok 36 - array: clause| value must be array (fail, not array) # Subtest: array: clause& is normalized ok 1 - result ok 2 - doesn't die 1..2 ok 37 - array: clause& is normalized # Subtest: array: clause.attr& is not allowed ok 1 - dies 1..1 ok 38 - array: clause.attr& is not allowed # Subtest: array: clause& value must be array (fail, not array) ok 1 - dies 1..1 ok 39 - array: clause& value must be array (fail, not array) # Subtest: array: !clause cannot be mixed with merge prefix ok 1 - dies 1..1 ok 40 - array: !clause cannot be mixed with merge prefix # Subtest: array: !clause cannot be mixed with expression ok 1 - dies 1..1 ok 41 - array: !clause cannot be mixed with expression # Subtest: array: clause| cannot be mixed with merge prefix ok 1 - dies 1..1 ok 42 - array: clause| cannot be mixed with merge prefix # Subtest: array: clause| cannot be mixed with expression ok 1 - dies 1..1 ok 43 - array: clause| cannot be mixed with expression # Subtest: array: clause& cannot be mixed with merge prefix ok 1 - dies 1..1 ok 44 - array: clause& cannot be mixed with merge prefix # Subtest: array: clause& cannot be mixed with expression ok 1 - dies 1..1 ok 45 - array: clause& cannot be mixed with expression # Subtest: array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c & !c) ok 1 - dies 1..1 ok 46 - array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c & !c) # Subtest: array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c & c|) ok 1 - dies 1..1 ok 47 - array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c & c|) # Subtest: array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c & c&) ok 1 - dies 1..1 ok 48 - array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c & c&) # Subtest: array: clause, !clause, clause&, and clause| must not conflict with one another (fail, !c & c|) ok 1 - dies 1..1 ok 49 - array: clause, !clause, clause&, and clause| must not conflict with one another (fail, !c & c|) # Subtest: array: clause, !clause, clause&, and clause| must not conflict with one another (fail, !c & c&) ok 1 - dies 1..1 ok 50 - array: clause, !clause, clause&, and clause| must not conflict with one another (fail, !c & c&) # Subtest: array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c| & c&) ok 1 - dies 1..1 ok 51 - array: clause, !clause, clause&, and clause| must not conflict with one another (fail, c| & c&) # Subtest: array: merge prefix in clause is allowed ok 1 - result ok 2 - doesn't die 1..2 ok 52 - array: merge prefix in clause is allowed # Subtest: array: clause(LANG) shortcut is allowed and normalized ok 1 - result ok 2 - doesn't die 1..2 ok 53 - array: clause(LANG) shortcut is allowed and normalized # Subtest: array: clause.attr(LANG) shortcut is allowed and normalized ok 1 - result ok 2 - doesn't die 1..2 ok 54 - array: clause.attr(LANG) shortcut is allowed and normalized # Subtest: array: clause(LANG) shortcut must not conflict with existing attribute ok 1 - dies 1..1 ok 55 - array: clause(LANG) shortcut must not conflict with existing attribute # Subtest: array: invalid clause(LANG) shortcut is not allowed (1) ok 1 - dies 1..1 ok 56 - array: invalid clause(LANG) shortcut is not allowed (1) # Subtest: array: invalid clause(LANG) shortcut is not allowed (2) ok 1 - dies 1..1 ok 57 - array: invalid clause(LANG) shortcut is not allowed (2) # Subtest: array: extras must be hash (ok) ok 1 - result ok 2 - doesn't die 1..2 ok 58 - array: extras must be hash (ok) # Subtest: array: extras must be hash (fail, not hash) ok 1 - dies 1..1 ok 59 - array: extras must be hash (fail, not hash) # Subtest: array: def in extras must be hash (ok) ok 1 - result ok 2 - doesn't die 1..2 ok 60 - array: def in extras must be hash (ok) # Subtest: array: def in extras must be hash (fail) ok 1 - dies 1..1 ok 61 - array: def in extras must be hash (fail) # Subtest: array: extra elements are not permitted ok 1 - dies 1..1 ok 62 - array: extra elements are not permitted # Subtest: hash form (old DS syntax) is no longer recognized ok 1 - dies 1..1 ok 63 - hash form (old DS syntax) is no longer recognized ok 64 1..64 ok 1 - 00-normalize_schema.json # Subtest: 01-merge_clause_sets.json # Subtest: no clause sets results in nothing done ok 1 - result ok 2 - doesn't die 1..2 ok 1 - no clause sets results in nothing done # Subtest: a single clause set results in nothing done ok 1 - result ok 2 - doesn't die 1..2 ok 2 - a single clause set results in nothing done # Subtest: no merge prefixes results in appending clause sets ok 1 - result ok 2 - doesn't die 1..2 ok 3 - no merge prefixes results in appending clause sets # Subtest: normal mode merging replaces clauses on the left ok 1 - result ok 2 - doesn't die 1..2 ok 4 - normal mode merging replaces clauses on the left # Subtest: additive mode merging adds values (array) ok 1 - result ok 2 - doesn't die 1..2 ok 5 - additive mode merging adds values (array) # Subtest: concative mode merging concatenates values (string) ok 1 - result ok 2 - doesn't die 1..2 ok 6 - concative mode merging concatenates values (string) # Subtest: subtractive mode merging concatenates values (int) ok 1 - result ok 2 - doesn't die 1..2 ok 7 - subtractive mode merging concatenates values (int) # Subtest: delete mode merging deletes values ok 1 - result ok 2 - doesn't die 1..2 ok 8 - delete mode merging deletes values # Subtest: keep mode prevents overriding of values ok 1 - result ok 2 - doesn't die 1..2 ok 9 - keep mode prevents overriding of values ok 10 1..10 ok 2 - 01-merge_clause_sets.json # Subtest: 10-type-all.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 3, # 'name' => 'of (nok + nok)', # 'schema' => [ # 'all', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:all' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:all) of (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:all) of (nok + nok) # { # 'input' => 2, # 'name' => 'of (ok + nok)', # 'schema' => [ # 'all', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:all' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:all) of (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:all) of (ok + nok) # { # 'input' => 5, # 'name' => 'of (nok + ok)', # 'schema' => [ # 'all', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:all' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:all) of (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:all) of (nok + ok) # { # 'input' => 10, # 'name' => 'of (ok + ok)', # 'schema' => [ # 'all', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:all' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:all) of (ok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:all) of (ok + ok) ok 5 1..5 ok 3 - 10-type-all.json # Subtest: 10-type-any.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 3, # 'name' => 'of (nok + nok)', # 'schema' => [ # 'any', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:any' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:any) of (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:any) of (nok + nok) # { # 'input' => 2, # 'name' => 'of (ok + nok)', # 'schema' => [ # 'any', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:any' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:any) of (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:any) of (ok + nok) # { # 'input' => 5, # 'name' => 'of (nok + ok)', # 'schema' => [ # 'any', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:any' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:any) of (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:any) of (nok + ok) # { # 'input' => 10, # 'name' => 'of (ok + ok)', # 'schema' => [ # 'any', # 'of', # [ # [ # 'int', # 'div_by', # 2 # ], # [ # 'int', # 'div_by', # 5 # ] # ] # ], # 'tags' => [ # 'type', # 'type:any' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:any) of (ok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:any) of (ok + ok) ok 5 1..5 ok 4 - 10-type-any.json # Subtest: 10-type-array.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => [], # 'name' => 'type check: must accept []', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) type check: must accept [] ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:array) type check: must accept [] # { # 'input' => [ # '1', # 'a' # ], # 'name' => 'type check: must accept [1, "a"]', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) type check: must accept [1, "a"] ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:array) type check: must accept [1, "a"] # { # 'input' => [ # [] # ], # 'name' => 'type check: must accept [[]]', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) type check: must accept [[]] ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:array) type check: must accept [[]] # { # 'input' => 1, # 'name' => 'type check: must reject 1', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:array) type check: must reject 1 ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:array) type check: must reject 1 # { # 'input' => 'a', # 'name' => 'type check: must reject a', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:array) type check: must reject a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:array) type check: must reject a # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:array) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:array) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'array', # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:array) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'array', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:array) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=clause:defhash_v, type, type:array) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'array', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:array) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:v, type, type:array) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'array', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:array) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:c, type, type:array) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'array', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:array) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:default_lang, type, type:array) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'array', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:array) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:name, type, type:array) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'array', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:array) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:summary, type, type:array) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'array', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:array) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:description, type, type:array) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'array', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:array) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:tags, type, type:array) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'array', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:array) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:req, type, type:array) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'array', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:array) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:req, type, type:array) req=1 must reject undefined value # { # 'input' => [ # 1 # ], # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'array', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:array) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:forbidden, type, type:array) forbidden=0 must accept defined value # { # 'input' => [ # 1 # ], # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'array', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:array) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:forbidden, type, type:array) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default []', # 'schema' => [ # 'array*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:array) default: must accept valid default [] ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:default, type, type:array) default: must accept valid default [] # { # 'input' => undef, # 'name' => 'default: must reject invalid default a', # 'schema' => [ # 'array*', # 'default', # 'a' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:array) default: must reject invalid default a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:default, type, type:array) default: must reject invalid default a # { # 'dies' => 1, # 'input' => [ # 1 # ], # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'array*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:array) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 22 - (tags=clause:clause, type, type:array) clause (dies, unknown clause) # { # 'input' => [ # 1 # ], # 'name' => 'clause (ok)', # 'schema' => [ # 'array*', # 'clause', # [ # 'min_len', # 0 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:array) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:clause, type, type:array) clause (ok) # { # 'input' => [ # 1 # ], # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'array*', # 'clause', # [ # 'min_len', # 0 # ], # 'max_len', # 0 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:array) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clause, type, type:array) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'clause (nok)', # 'schema' => [ # 'array*', # 'clause', # [ # 'min_len', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:array) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:array) clause (nok) # { # 'dies' => 1, # 'input' => [ # 1 # ], # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'array*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:array) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 26 - (tags=clause:clset, type, type:array) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => [ # 1 # ], # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'array*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:array) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 27 - (tags=clause:clset, type, type:array) clset (dies, unknown attr) # { # 'input' => [ # 1 # ], # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'array*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 28 - (tags=type, type:array) clset (empty = ok) # { # 'input' => [ # 1 # ], # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'array*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:array) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=clause:clset, type, type:array) clset (ignored clause/attr = ok) # { # 'input' => [ # 1 # ], # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'array*', # 'clset', # { # 'max_len' => 1, # 'min_len' => 0 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:array) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=clause:clset, type, type:array) clset (ok + ok = ok) # { # 'input' => [ # 1 # ], # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'array*', # 'clset', # { # 'min_len' => 0 # }, # 'max_len', # 0 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:array) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:array) clset (ok) + clause nok = nok # { # 'input' => [ # 1 # ], # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'array*', # 'clset', # { # 'max_len' => 0, # 'min_len' => 0 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:array) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:array) clset (ok + nok = nok) # { # 'input' => [ # 1 # ], # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'array*', # 'clset', # { # 'max_len' => 1, # 'min_len' => 2 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:array) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:array) clset (nok + ok = nok) # { # 'input' => [ # 1 # ], # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'array*', # 'clset', # { # 'max_len' => 0, # 'min_len' => 2 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:array) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:array) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'array', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:array) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:ok, type, type:array) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'array', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:array) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:ok, op, op:not, type, type:array) ok + op not (nok) # { # 'input' => [], # 'name' => '.err_level=error (clause=is, ok)', # 'schema' => [ # 'array', # 'is', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:array) .err_level=error (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=attr, attr:err_level, type, type:array) .err_level=error (clause=is, ok) # { # 'input' => [ # 0 # ], # 'name' => '.err_level=error (clause=is, nok)', # 'schema' => [ # 'array', # 'is', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:array) .err_level=error (clause=is, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=attr, attr:err_level, type, type:array) .err_level=error (clause=is, nok) # { # 'input' => [], # 'name' => '.err_level=warn (clause=is, ok)', # 'schema' => [ # 'array', # 'is', # [], # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:array', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:array) .err_level=warn (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:array) .err_level=warn (clause=is, ok) # { # 'input' => [ # 0 # ], # 'name' => '.err_level=warn (clause=is, nok)', # 'schema' => [ # 'array*', # 'is', # [], # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:array', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:array) .err_level=warn (clause=is, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:array) .err_level=warn (clause=is, nok) # { # 'input' => [ # 1 # ], # 'name' => 'is: must accept same value', # 'schema' => [ # 'array', # 'is', # [ # 1 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:array) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=clause:is, type, type:array) is: must accept same value # { # 'input' => [ # 1 # ], # 'name' => 'is: must reject different value', # 'schema' => [ # 'array', # 'is', # [ # 2 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:array) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=clause:is, type, type:array) is: must reject different value # { # 'input' => [ # 1 # ], # 'name' => '!is (nok)', # 'schema' => [ # 'array', # '!is', # [ # 1 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:array) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, op, op:not, opshortcut, type, type:array) !is (nok) # { # 'input' => [ # 1 # ], # 'name' => '!is (ok)', # 'schema' => [ # 'array', # '!is', # [ # 2 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:array) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:not, opshortcut, type, type:array) !is (ok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'array', # 'is', # [ # 1 # ], # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:array) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, type, type:array) is.op=not (nok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'array', # 'is', # [ # 2 # ], # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:array) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, type, type:array) is.op=not (ok) # { # 'input' => [ # 1 # ], # 'name' => 'is& (no items)', # 'schema' => [ # 'array', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (no items) # { # 'input' => [ # 1 # ], # 'name' => 'is& (ok)', # 'schema' => [ # 'array', # 'is&', # [ # [ # 1 # ], # [ # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'array', # 'is&', # [ # [ # 2 # ], # [ # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (nok + ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'array', # 'is&', # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'array', # 'is&', # [ # [ # 2 # ], # [ # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:array) is& (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'array', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=type, type:array) is.op=and (no items) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 1 # ], # [ # 1 # ] # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:array) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, type, type:array) is.op=and (ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 2 # ], # [ # 1 # ] # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:array) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:and, type, type:array) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 1 # ], # [ # 2 # ] # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:array) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:array) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 2 # ], # [ # 2 # ] # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:array) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:array) is.op=and (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'is| (no items)', # 'schema' => [ # 'array', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (no items) # { # 'input' => [ # 1 # ], # 'name' => 'is| (ok)', # 'schema' => [ # 'array', # 'is|', # [ # [ # 1 # ], # [ # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (ok) # { # 'input' => [ # 1 # ], # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'array', # 'is|', # [ # [ # 2 # ], # [ # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (nok + ok) # { # 'input' => [ # 1 # ], # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'array', # 'is|', # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'array', # 'is|', # [ # [ # 2 # ], # [ # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:array) is| (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'array', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:array) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, type, type:array) is.op=or (no items) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 1 # ], # [ # 1 # ] # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:array) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, type, type:array) is.op=or (ok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 2 # ], # [ # 1 # ] # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:array) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:array) is.op=or (nok + ok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 1 # ], # [ # 2 # ] # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:array) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:array) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 2 # ], # [ # 2 # ] # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:array) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:array) is.op=or (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'array', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:array) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:none, type, type:array) is.op=none (empty items) # { # 'input' => [ # 1 # ], # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 2 # ], # [ # 2 # ] # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:array) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:none, type, type:array) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 2 # ], # [ # 1 # ] # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:array) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:array) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 1 # ], # [ # 2 # ] # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:array) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:array) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'array', # 'is', # [ # [ # 1 # ], # [ # 1 # ] # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:array) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:array) is.op=none (ok + ok) # { # 'input' => [ # 1 # ], # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'array', # 'in', # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:array) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:in, type, type:array) in: must accept valid choices # { # 'input' => [ # 1 # ], # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'array', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:array) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:in, type, type:array) in: must reject empty choices # { # 'input' => [ # 1 # ], # 'name' => '!in (nok)', # 'schema' => [ # 'array', # '!in', # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:array) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, op, op:not, opshortcut, type, type:array) !in (nok) # { # 'input' => [ # 1 # ], # 'name' => '!in (ok)', # 'schema' => [ # 'array', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:array) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:not, opshortcut, type, type:array) !in (ok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'array', # 'in', # [ # [ # 1 # ], # [ # 2 # ] # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:array) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, type, type:array) in.op=not (nok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'array', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:array) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, type, type:array) in.op=not (ok) # { # 'input' => [ # 1 # ], # 'name' => 'in& (no items)', # 'schema' => [ # 'array', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (no items) # { # 'input' => [ # 1 # ], # 'name' => 'in& (ok)', # 'schema' => [ # 'array', # 'in&', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [ # [ # 1 # ], # [ # 2 # ] # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'array', # 'in&', # [ # [], # [ # [ # 1 # ], # [ # 2 # ] # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (nok + ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'array', # 'in&', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'array', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:array) in& (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'array', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:array) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=type, type:array) in.op=and (no items) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'array', # 'in', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:array) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, type, type:array) in.op=and (ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'array', # 'in', # [ # [], # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:array) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:and, type, type:array) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'array', # 'in', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:array) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:array) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'array', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:array) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:array) in.op=and (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'in| (no items)', # 'schema' => [ # 'array', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (no items) # { # 'input' => [ # 1 # ], # 'name' => 'in| (ok)', # 'schema' => [ # 'array', # 'in|', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [ # [ # 1 # ], # [ # 2 # ] # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (ok) # { # 'input' => [ # 1 # ], # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'array', # 'in|', # [ # [], # [ # [ # 1 # ], # [ # 2 # ] # ] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (nok + ok) # { # 'input' => [ # 1 # ], # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'array', # 'in|', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'array', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:array) in| (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'array', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:array) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, type, type:array) in.op=or (no items) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'array', # 'in', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:array) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, type, type:array) in.op=or (ok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'array', # 'in', # [ # [], # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:array) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:array) in.op=or (nok + ok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'array', # 'in', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:array) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:array) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'array', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:array) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:array) in.op=or (nok + nok) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'array', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:array) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:none, type, type:array) in.op=none (empty items) # { # 'input' => [ # 1 # ], # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'array', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:array) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:none, type, type:array) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'array', # 'in', # [ # [], # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:array) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:array) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'array', # 'in', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:array) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:array) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => [ # 1 # ], # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'array', # 'in', # [ # [ # [ # 1 # ], # [ # 2 # ] # ], # [ # [ # 1 # ], # [ # 2 # ] # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:array) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:array) in.op=none (ok + ok) # { # 'input' => [ # 1 # ], # 'name' => 'len (ok)', # 'schema' => [ # 'array', # 'len', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len, type, type:array) len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:len, type, type:array) len (ok) # { # 'input' => [ # 1 # ], # 'name' => 'len (nok)', # 'schema' => [ # 'array', # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len, type, type:array) len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:len, type, type:array) len (nok) # { # 'input' => [ # 1 # ], # 'name' => 'min_len (ok)', # 'schema' => [ # 'array', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:min_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min_len, type, type:array) min_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min_len, type, type:array) min_len (ok) # { # 'input' => [ # 1 # ], # 'name' => 'min_len (nok)', # 'schema' => [ # 'array', # 'min_len', # 2 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:min_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min_len, type, type:array) min_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:min_len, type, type:array) min_len (nok) # { # 'input' => [ # 1 # ], # 'name' => 'max_len (ok)', # 'schema' => [ # 'array', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:max_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max_len, type, type:array) max_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:max_len, type, type:array) max_len (ok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'max_len (nok)', # 'schema' => [ # 'array', # 'max_len', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:max_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max_len, type, type:array) max_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:max_len, type, type:array) max_len (nok) # { # 'input' => [ # 1 # ], # 'name' => 'len_between (ok)', # 'schema' => [ # 'array', # 'len_between', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:len_between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len_between, type, type:array) len_between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:len_between, type, type:array) len_between (ok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'len_between (nok)', # 'schema' => [ # 'array', # 'len_between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:len_between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len_between, type, type:array) len_between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:len_between, type, type:array) len_between (nok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'each_index (ok)', # 'schema' => [ # 'array', # 'each_index', # [ # 'int', # 'max', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:each_index' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_index, type, type:array) each_index (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:each_index, type, type:array) each_index (ok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'each_index (nok)', # 'schema' => [ # 'array', # 'each_index', # [ # 'int', # 'xmax', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:each_index' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_index, type, type:array) each_index (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:each_index, type, type:array) each_index (nok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'each_elem (ok)', # 'schema' => [ # 'array', # 'each_elem', # 'float' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:each_elem' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_elem, type, type:array) each_elem (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:each_elem, type, type:array) each_elem (ok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'each_elem (nok)', # 'schema' => [ # 'array', # 'each_elem', # 'int' # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:each_elem' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_elem, type, type:array) each_elem (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:each_elem, type, type:array) each_elem (nok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'elems (ok)', # 'schema' => [ # 'array', # 'elems', # [ # 'int', # 'float' # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:elems, type, type:array) elems (ok) # { # 'input' => [ # 1, # '1.2' # ], # 'name' => 'elems (nok)', # 'schema' => [ # 'array', # 'elems', # [ # 'int', # 'int' # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 0 # } # Subtest: (tags=clause:elems, type, type:array) elems (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:elems, type, type:array) elems (nok) # { # 'invalid_inputs' => [ # [], # [ # 3 # ] # ], # 'name' => 'has', # 'schema' => [ # 'array', # 'has', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:has' # ], # 'valid_inputs' => [ # [ # 1, # 2, # 3 # ], # [ # 1, # 3 # ] # ] # } # Subtest: (tags=clause:has, type, type:array) has ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 117 - (tags=clause:has, type, type:array) has # { # 'invalid_inputs' => [ # [ # 1, # 2, # 3 # ], # [ # 1, # 3 # ] # ], # 'name' => 'has + op.not', # 'schema' => [ # 'array', # '!has', # 1 # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:has', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid_inputs' => [ # [], # [ # 3 # ] # ] # } # Subtest: (tags=clause:has, op, op:not, opshortcut, type, type:array) has + op.not ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 118 - (tags=clause:has, op, op:not, opshortcut, type, type:array) has + op.not # { # 'invalid_inputs' => [ # [], # [ # 3 # ] # ], # 'name' => 'has + op.or', # 'schema' => [ # 'array', # 'has|', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:has', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid_inputs' => [ # [ # 1, # 2, # 3 # ], # [ # 1, # 3 # ] # ] # } # Subtest: (tags=clause:has, op, op:or, opshortcut, type, type:array) has + op.or ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 119 - (tags=clause:has, op, op:or, opshortcut, type, type:array) has + op.or # { # 'invalid_inputs' => [ # [ # 1, # 3 # ], # [], # [ # 3 # ] # ], # 'name' => 'has + op.and', # 'schema' => [ # 'array', # 'has&', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:has', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid_inputs' => [ # [ # 1, # 2, # 3 # ] # ] # } # Subtest: (tags=clause:has, op, op:and, opshortcut, type, type:array) has + op.and ok 1 - compile success ok 2 - valid input [0] ok 3 - invalid input [0] ok 4 - invalid input [1] ok 5 - invalid input [2] ok 6 - validator (rt=full) returns hash 1..6 ok 120 - (tags=clause:has, op, op:and, opshortcut, type, type:array) has + op.and # { # 'input' => [ # undef, # 1 # ], # 'name' => 'elems (nok, first elem required)', # 'schema' => [ # 'array', # { # 'elems' => [ # 'int*', # [ # 'float', # 'default', # 2 # ] # ] # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 0 # } # Subtest: (tags=clause:elems, type, type:array) elems (nok, first elem required) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:elems, type, type:array) elems (nok, first elem required) # { # 'input' => [ # 1 # ], # 'name' => 'elems (ok, missing elem set to undef)', # 'schema' => [ # 'array', # { # 'elems' => [ # 'int*', # [ # 'float', # 'default', # 2 # ] # ] # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok, missing elem set to undef) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:elems, type, type:array) elems (ok, missing elem set to undef) # { # 'input' => [ # 1, # undef # ], # 'name' => 'elems (ok, second elem optional)', # 'schema' => [ # 'array', # { # 'elems' => [ # 'int*', # [ # 'float', # 'default', # 2 # ] # ] # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok, second elem optional) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:elems, type, type:array) elems (ok, second elem optional) # { # 'input' => [ # 1, # '1.1' # ], # 'name' => 'elems (ok 2)', # 'schema' => [ # 'array', # { # 'elems' => [ # 'int*', # [ # 'float', # 'default', # 2 # ] # ] # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok 2) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:elems, type, type:array) elems (ok 2) # { # 'input' => [ # 1, # '1.1', # undef # ], # 'name' => 'elems (ok, extra elems ignored)', # 'schema' => [ # 'array', # { # 'elems' => [ # 'int*', # [ # 'float', # 'default', # 2 # ] # ] # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok, extra elems ignored) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:elems, type, type:array) elems (ok, extra elems ignored) # { # 'input' => [ # 1, # '1.1', # 'foo' # ], # 'name' => 'elems (ok, extra elems ignored 2)', # 'schema' => [ # 'array', # { # 'elems' => [ # 'int*', # [ # 'float', # 'default', # 2 # ] # ] # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok, extra elems ignored 2) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:elems, type, type:array) elems (ok, extra elems ignored 2) # { # 'input' => [ # 1 # ], # 'name' => 'elems (ok, create_default=0)', # 'output' => [ # 1 # ], # 'schema' => [ # 'array', # { # 'elems' => [ # 'int', # [ # 'int', # 'default', # 2 # ] # ], # 'elems.create_default' => 0 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok, create_default=0) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - output ok 4 - valid (rt=str) ok 5 - validator (rt=full) returns hash ok 6 - errors (rt=full) ok 7 - warnings (rt=full) 1..7 ok 127 - (tags=clause:elems, type, type:array) elems (ok, create_default=0) # { # 'input' => [ # 1, # undef # ], # 'name' => 'elems (ok 2, create_default=0)', # 'output' => [ # 1, # 2 # ], # 'schema' => [ # 'array', # { # 'elems' => [ # 'int', # [ # 'int', # 'default', # 2 # ] # ], # 'elems.create_default' => 0 # } # ], # 'tags' => [ # 'type', # 'type:array', # 'clause:elems' # ], # 'valid' => 1 # } # Subtest: (tags=clause:elems, type, type:array) elems (ok 2, create_default=0) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - output ok 4 - valid (rt=str) ok 5 - validator (rt=full) returns hash ok 6 - errors (rt=full) ok 7 - warnings (rt=full) 1..7 ok 128 - (tags=clause:elems, type, type:array) elems (ok 2, create_default=0) ok 129 1..129 ok 5 - 10-type-array.json # Subtest: 10-type-bool.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'bool', # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:bool) type check: must accept 0 # { # 'input' => 1, # 'name' => 'type check: must accept 1', # 'schema' => 'bool', # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) type check: must accept 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:bool) type check: must accept 1 # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'bool', # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:bool) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:bool) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'bool', # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:bool) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:bool) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'bool', # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:bool) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'bool', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:bool) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=clause:defhash_v, type, type:bool) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'bool', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:bool) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=clause:v, type, type:bool) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'bool', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:bool) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=clause:c, type, type:bool) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'bool', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:bool) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:default_lang, type, type:bool) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'bool', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:bool) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:name, type, type:bool) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'bool', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:bool) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:summary, type, type:bool) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'bool', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:bool) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:description, type, type:bool) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'bool', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:bool) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:tags, type, type:bool) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'bool', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:bool) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:req, type, type:bool) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'bool', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:bool) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:req, type, type:bool) req=1 must reject undefined value # { # 'input' => 1, # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'bool', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:bool) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:forbidden, type, type:bool) forbidden=0 must accept defined value # { # 'input' => 1, # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'bool', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:bool) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:forbidden, type, type:bool) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default 1', # 'schema' => [ # 'bool*', # 'default', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:bool) default: must accept valid default 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:default, type, type:bool) default: must accept valid default 1 # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'bool*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:bool) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:default, type, type:bool) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => 1, # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'bool*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:bool) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 20 - (tags=clause:clause, type, type:bool) clause (dies, unknown clause) # { # 'dies' => 1, # 'input' => 1, # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'bool*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:bool) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 21 - (tags=clause:clset, type, type:bool) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => 1, # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'bool*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:bool) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 22 - (tags=clause:clset, type, type:bool) clset (dies, unknown attr) # { # 'input' => 1, # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'bool*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=type, type:bool) clset (empty = ok) # { # 'input' => 1, # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'bool*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:bool) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clset, type, type:bool) clset (ignored clause/attr = ok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'bool', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:bool) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:ok, type, type:bool) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'bool', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:bool) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 26 - (tags=clause:ok, op, op:not, type, type:bool) ok + op not (nok) # { # 'input' => 1, # 'name' => '.err_level=error (clause=is, ok)', # 'schema' => [ # 'bool', # 'is', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:bool) .err_level=error (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 27 - (tags=attr, attr:err_level, type, type:bool) .err_level=error (clause=is, ok) # { # 'input' => 0, # 'name' => '.err_level=error (clause=is, nok)', # 'schema' => [ # 'bool', # 'is', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:bool) .err_level=error (clause=is, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 28 - (tags=attr, attr:err_level, type, type:bool) .err_level=error (clause=is, nok) # { # 'input' => 1, # 'name' => '.err_level=warn (clause=is, ok)', # 'schema' => [ # 'bool', # 'is', # 1, # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:bool', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:bool) .err_level=warn (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=attr, attr:err_level, type, type:bool) .err_level=warn (clause=is, ok) # { # 'input' => 0, # 'name' => '.err_level=warn (clause=is, nok)', # 'schema' => [ # 'bool*', # 'is', # 1, # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:bool', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:bool) .err_level=warn (clause=is, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=attr, attr:err_level, type, type:bool) .err_level=warn (clause=is, nok) # { # 'input' => 0, # 'name' => 'is: must accept same value', # 'schema' => [ # 'bool', # 'is', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:bool) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:is, type, type:bool) is: must accept same value # { # 'input' => 0, # 'name' => 'is: must reject different value', # 'schema' => [ # 'bool', # 'is', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:bool) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:is, type, type:bool) is: must reject different value # { # 'input' => 0, # 'name' => '!is (nok)', # 'schema' => [ # 'bool', # '!is', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:bool) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:is, op, op:not, opshortcut, type, type:bool) !is (nok) # { # 'input' => 0, # 'name' => '!is (ok)', # 'schema' => [ # 'bool', # '!is', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:bool) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:is, op, op:not, opshortcut, type, type:bool) !is (ok) # { # 'input' => 0, # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'bool', # 'is', # 0, # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:bool) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:is, op, op:not, type, type:bool) is.op=not (nok) # { # 'input' => 0, # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'bool', # 'is', # 1, # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:bool) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:is, op, op:not, type, type:bool) is.op=not (ok) # { # 'input' => 0, # 'name' => 'is& (no items)', # 'schema' => [ # 'bool', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (no items) # { # 'input' => 0, # 'name' => 'is& (ok)', # 'schema' => [ # 'bool', # 'is&', # [ # 0, # 0 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'bool', # 'is&', # [ # 1, # 0 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (nok + ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'bool', # 'is&', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'bool', # 'is&', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=clause:is, op, op:and, opshortcut, type, type:bool) is& (nok + nok) # { # 'input' => 0, # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'bool', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=type, type:bool) is.op=and (no items) # { # 'input' => 0, # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'bool', # 'is', # [ # 0, # 0 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:bool) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, op, op:and, type, type:bool) is.op=and (ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'bool', # 'is', # [ # 1, # 0 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:bool) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:and, type, type:bool) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'bool', # 'is', # [ # 0, # 1 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:bool) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:and, type, type:bool) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'bool', # 'is', # [ # 1, # 1 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:bool) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:and, type, type:bool) is.op=and (nok + nok) # { # 'input' => 0, # 'name' => 'is| (no items)', # 'schema' => [ # 'bool', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (no items) # { # 'input' => 0, # 'name' => 'is| (ok)', # 'schema' => [ # 'bool', # 'is|', # [ # 0, # 0 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (ok) # { # 'input' => 0, # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'bool', # 'is|', # [ # 1, # 0 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (nok + ok) # { # 'input' => 0, # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'bool', # 'is|', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'bool', # 'is|', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:or, opshortcut, type, type:bool) is| (nok + nok) # { # 'input' => 0, # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'bool', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:bool) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=clause:is, op, op:or, type, type:bool) is.op=or (no items) # { # 'input' => 0, # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'bool', # 'is', # [ # 0, # 0 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:bool) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:or, type, type:bool) is.op=or (ok) # { # 'input' => 0, # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'bool', # 'is', # [ # 1, # 0 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:bool) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:or, type, type:bool) is.op=or (nok + ok) # { # 'input' => 0, # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'bool', # 'is', # [ # 0, # 1 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:bool) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:or, type, type:bool) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'bool', # 'is', # [ # 1, # 1 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:bool) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:or, type, type:bool) is.op=or (nok + nok) # { # 'input' => 0, # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'bool', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:bool) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:none, type, type:bool) is.op=none (empty items) # { # 'input' => 0, # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'bool', # 'is', # [ # 1, # 1 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:bool) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:none, type, type:bool) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'bool', # 'is', # [ # 1, # 0 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:bool) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:none, type, type:bool) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'bool', # 'is', # [ # 0, # 1 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:bool) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:none, type, type:bool) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'bool', # 'is', # [ # 0, # 0 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:bool) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:none, type, type:bool) is.op=none (ok + ok) # { # 'input' => 0, # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'bool', # 'in', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:bool) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:in, type, type:bool) in: must accept valid choices # { # 'input' => 0, # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'bool', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:bool) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:in, type, type:bool) in: must reject empty choices # { # 'input' => 0, # 'name' => '!in (nok)', # 'schema' => [ # 'bool', # '!in', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:bool) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:in, op, op:not, opshortcut, type, type:bool) !in (nok) # { # 'input' => 0, # 'name' => '!in (ok)', # 'schema' => [ # 'bool', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:bool) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:in, op, op:not, opshortcut, type, type:bool) !in (ok) # { # 'input' => 0, # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'bool', # 'in', # [ # 0, # 1 # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:bool) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:in, op, op:not, type, type:bool) in.op=not (nok) # { # 'input' => 0, # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'bool', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:bool) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:in, op, op:not, type, type:bool) in.op=not (ok) # { # 'input' => 0, # 'name' => 'in& (no items)', # 'schema' => [ # 'bool', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (no items) # { # 'input' => 0, # 'name' => 'in& (ok)', # 'schema' => [ # 'bool', # 'in&', # [ # [ # 0, # 1 # ], # [ # 0, # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'bool', # 'in&', # [ # [], # [ # 0, # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (nok + ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'bool', # 'in&', # [ # [ # 0, # 1 # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'bool', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:in, op, op:and, opshortcut, type, type:bool) in& (nok + nok) # { # 'input' => 0, # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'bool', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=type, type:bool) in.op=and (no items) # { # 'input' => 0, # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'bool', # 'in', # [ # [ # 0, # 1 # ], # [ # 0, # 1 # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:bool) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, op, op:and, type, type:bool) in.op=and (ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'bool', # 'in', # [ # [], # [ # 0, # 1 # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:bool) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:and, type, type:bool) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'bool', # 'in', # [ # [ # 0, # 1 # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:bool) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:and, type, type:bool) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'bool', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:bool) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:and, type, type:bool) in.op=and (nok + nok) # { # 'input' => 0, # 'name' => 'in| (no items)', # 'schema' => [ # 'bool', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (no items) # { # 'input' => 0, # 'name' => 'in| (ok)', # 'schema' => [ # 'bool', # 'in|', # [ # [ # 0, # 1 # ], # [ # 0, # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (ok) # { # 'input' => 0, # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'bool', # 'in|', # [ # [], # [ # 0, # 1 # ] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (nok + ok) # { # 'input' => 0, # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'bool', # 'in|', # [ # [ # 0, # 1 # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'bool', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:or, opshortcut, type, type:bool) in| (nok + nok) # { # 'input' => 0, # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'bool', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:bool) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=clause:in, op, op:or, type, type:bool) in.op=or (no items) # { # 'input' => 0, # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'bool', # 'in', # [ # [ # 0, # 1 # ], # [ # 0, # 1 # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:bool) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:or, type, type:bool) in.op=or (ok) # { # 'input' => 0, # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'bool', # 'in', # [ # [], # [ # 0, # 1 # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:bool) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:or, type, type:bool) in.op=or (nok + ok) # { # 'input' => 0, # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'bool', # 'in', # [ # [ # 0, # 1 # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:bool) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:or, type, type:bool) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'bool', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:bool) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:or, type, type:bool) in.op=or (nok + nok) # { # 'input' => 0, # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'bool', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:bool) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:none, type, type:bool) in.op=none (empty items) # { # 'input' => 0, # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'bool', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:bool) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:none, type, type:bool) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'bool', # 'in', # [ # [], # [ # 0, # 1 # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:bool) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:none, type, type:bool) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'bool', # 'in', # [ # [ # 0, # 1 # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:bool) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:none, type, type:bool) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 0, # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'bool', # 'in', # [ # [ # 0, # 1 # ], # [ # 0, # 1 # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:bool) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:none, type, type:bool) in.op=none (ok + ok) # { # 'input' => 1, # 'name' => 'min: 1 0', # 'schema' => [ # 'bool', # 'min', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:bool) min: 1 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:min, type, type:bool) min: 1 0 # { # 'input' => 1, # 'name' => 'min: 1 1', # 'schema' => [ # 'bool', # 'min', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:bool) min: 1 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:min, type, type:bool) min: 1 1 # { # 'input' => 0, # 'name' => 'min: 0 1 -> fail', # 'schema' => [ # 'bool', # 'min', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:bool) min: 0 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:min, type, type:bool) min: 0 1 -> fail # { # 'input' => 1, # 'name' => 'xmin: 1 0', # 'schema' => [ # 'bool', # 'xmin', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:bool) xmin: 1 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:xmin, type, type:bool) xmin: 1 0 # { # 'input' => 1, # 'name' => 'xmin: 1 1 -> fail', # 'schema' => [ # 'bool', # 'xmin', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:bool) xmin: 1 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:xmin, type, type:bool) xmin: 1 1 -> fail # { # 'input' => 0, # 'name' => 'xmin: 0 1 -> fail', # 'schema' => [ # 'bool', # 'xmin', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:bool) xmin: 0 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:xmin, type, type:bool) xmin: 0 1 -> fail # { # 'input' => 1, # 'name' => 'max: 1 0 -> fail', # 'schema' => [ # 'bool', # 'max', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:bool) max: 1 0 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:max, type, type:bool) max: 1 0 -> fail # { # 'input' => 1, # 'name' => 'max: 1 1', # 'schema' => [ # 'bool', # 'max', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:bool) max: 1 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:max, type, type:bool) max: 1 1 # { # 'input' => 0, # 'name' => 'max: 0 1', # 'schema' => [ # 'bool', # 'max', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:bool) max: 0 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:max, type, type:bool) max: 0 1 # { # 'input' => 1, # 'name' => 'xmax: 1 0 -> fail', # 'schema' => [ # 'bool', # 'xmax', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:bool) xmax: 1 0 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:xmax, type, type:bool) xmax: 1 0 -> fail # { # 'input' => 1, # 'name' => 'xmax: 1 1 -> fail', # 'schema' => [ # 'bool', # 'xmax', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:bool) xmax: 1 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:xmax, type, type:bool) xmax: 1 1 -> fail # { # 'input' => 0, # 'name' => 'xmax: 0 1', # 'schema' => [ # 'bool', # 'xmax', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:bool) xmax: 0 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:xmax, type, type:bool) xmax: 0 1 # { # 'input' => 1, # 'name' => 'between: 1 0 & 1', # 'schema' => [ # 'bool', # 'between', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:bool) between: 1 0 & 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:between, type, type:bool) between: 1 0 & 1 # { # 'input' => 1, # 'name' => 'between: 1 0 & 1', # 'schema' => [ # 'bool', # 'between', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:bool) between: 1 0 & 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:between, type, type:bool) between: 1 0 & 1 # { # 'input' => 1, # 'name' => 'between: 1 1 & 1', # 'schema' => [ # 'bool', # 'between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:bool) between: 1 1 & 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:between, type, type:bool) between: 1 1 & 1 # { # 'input' => 0, # 'name' => 'between: 0 1 & 1 -> fail', # 'schema' => [ # 'bool', # 'between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:bool) between: 0 1 & 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:between, type, type:bool) between: 0 1 & 1 -> fail # { # 'input' => '1', # 'name' => 'xbetween: 1 0 & 1', # 'schema' => [ # 'bool', # 'xbetween', # [ # 0, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:bool) xbetween: 1 0 & 1 ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:xbetween, type, type:bool) xbetween: 1 0 & 1 # { # 'input' => '1', # 'name' => 'xbetween: 1 0 & 1 -> fail', # 'schema' => [ # 'bool', # 'xbetween', # [ # 0, # '1' # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:bool) xbetween: 1 0 & 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:xbetween, type, type:bool) xbetween: 1 0 & 1 -> fail # { # 'input' => '1', # 'name' => 'xbetween: 1 1 & 1 -> fail', # 'schema' => [ # 'bool', # 'xbetween', # [ # '1', # '1' # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:bool) xbetween: 1 1 & 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:xbetween, type, type:bool) xbetween: 1 1 & 1 -> fail # { # 'input' => 0, # 'name' => 'xbetween: 0 1 & 1 -> fail', # 'schema' => [ # 'bool', # 'xbetween', # [ # '1', # '1' # ] # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:bool) xbetween: 0 1 & 1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:xbetween, type, type:bool) xbetween: 0 1 & 1 -> fail # { # 'input' => 0, # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'bool', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:bool' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:bool) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=type, type:bool) between.op=and (no items) # { # 'input' => 1, # 'name' => 'is_true: 1 (ok)', # 'schema' => [ # 'bool', # 'is_true', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is_true' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_true, type, type:bool) is_true: 1 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:is_true, type, type:bool) is_true: 1 (ok) # { # 'input' => 0, # 'name' => 'is_true: 1 (nok)', # 'schema' => [ # 'bool', # 'is_true', # 1 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is_true' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_true, type, type:bool) is_true: 1 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:is_true, type, type:bool) is_true: 1 (nok) # { # 'input' => 0, # 'name' => 'is_true: 0 (ok)', # 'schema' => [ # 'bool', # 'is_true', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is_true' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_true, type, type:bool) is_true: 0 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:is_true, type, type:bool) is_true: 0 (ok) # { # 'input' => 1, # 'name' => 'is_true: 0 (nok)', # 'schema' => [ # 'bool', # 'is_true', # 0 # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is_true' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_true, type, type:bool) is_true: 0 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:is_true, type, type:bool) is_true: 0 (nok) # { # 'input' => 0, # 'name' => 'is_true: undef (ok 1)', # 'schema' => [ # 'bool', # 'is_true', # undef # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is_true' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_true, type, type:bool) is_true: undef (ok 1) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:is_true, type, type:bool) is_true: undef (ok 1) # { # 'input' => 1, # 'name' => 'is_true: undef (ok 2)', # 'schema' => [ # 'bool', # 'is_true', # undef # ], # 'tags' => [ # 'type', # 'type:bool', # 'clause:is_true' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_true, type, type:bool) is_true: undef (ok 2) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:is_true, type, type:bool) is_true: undef (ok 2) ok 120 1..120 ok 6 - 10-type-bool.json # Subtest: 10-type-buf.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:buf) type check: must accept 0 # { # 'input' => '1.1', # 'name' => 'type check: must accept 1.1', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) type check: must accept 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:buf) type check: must accept 1.1 # { # 'input' => '', # 'name' => 'type check: must accept ', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) type check: must accept ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:buf) type check: must accept # { # 'input' => 'str # ', # 'name' => 'type check: must accept str # ', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) type check: must accept str ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:buf) type check: must accept str # # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:buf) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:buf) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:buf) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:buf) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'buf', # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:buf) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'buf', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:buf) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=clause:defhash_v, type, type:buf) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'buf', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:buf) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:v, type, type:buf) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'buf', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:buf) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:c, type, type:buf) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'buf', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:buf) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:default_lang, type, type:buf) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'buf', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:buf) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:name, type, type:buf) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'buf', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:buf) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:summary, type, type:buf) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'buf', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:buf) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:description, type, type:buf) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'buf', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:buf) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:tags, type, type:buf) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'buf', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:buf) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:req, type, type:buf) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'buf', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:buf) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:req, type, type:buf) req=1 must reject undefined value # { # 'input' => 'a', # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'buf', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:buf) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:forbidden, type, type:buf) forbidden=0 must accept defined value # { # 'input' => 'a', # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'buf', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:buf) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:forbidden, type, type:buf) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default a', # 'schema' => [ # 'buf*', # 'default', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:buf) default: must accept valid default a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:default, type, type:buf) default: must accept valid default a # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'buf*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:buf) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:default, type, type:buf) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'buf*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:buf) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 22 - (tags=clause:clause, type, type:buf) clause (dies, unknown clause) # { # 'input' => 'a', # 'name' => 'clause (ok)', # 'schema' => [ # 'buf*', # 'clause', # [ # 'match', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:buf) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:clause, type, type:buf) clause (ok) # { # 'input' => 'a', # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'buf*', # 'clause', # [ # 'match', # 'a' # ], # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:buf) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clause, type, type:buf) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'clause (nok)', # 'schema' => [ # 'buf*', # 'clause', # [ # 'match', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:buf) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:buf) clause (nok) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'buf*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:buf) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 26 - (tags=clause:clset, type, type:buf) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'buf*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:buf) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 27 - (tags=clause:clset, type, type:buf) clset (dies, unknown attr) # { # 'input' => 'a', # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'buf*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 28 - (tags=type, type:buf) clset (empty = ok) # { # 'input' => 'a', # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'buf*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:buf) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=clause:clset, type, type:buf) clset (ignored clause/attr = ok) # { # 'input' => 'a', # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'buf*', # 'clset', # { # 'len' => 1, # 'match' => 'a' # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:buf) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=clause:clset, type, type:buf) clset (ok + ok = ok) # { # 'input' => 'a', # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'buf*', # 'clset', # { # 'match' => 'a' # }, # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:buf) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:buf) clset (ok) + clause nok = nok # { # 'input' => 'a', # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'buf*', # 'clset', # { # 'len' => 2, # 'match' => 'a' # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:buf) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:buf) clset (ok + nok = nok) # { # 'input' => 'a', # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'buf*', # 'clset', # { # 'len' => 1, # 'match' => 'b' # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:buf) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:buf) clset (nok + ok = nok) # { # 'input' => 'a', # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'buf*', # 'clset', # { # 'len' => 2, # 'match' => 'b' # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:buf) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:buf) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'buf', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:buf) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:ok, type, type:buf) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'buf', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:buf) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:ok, op, op:not, type, type:buf) ok + op not (nok) # { # 'input' => 'a', # 'name' => '.err_level=error (clause=is, ok)', # 'schema' => [ # 'buf', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:buf) .err_level=error (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=attr, attr:err_level, type, type:buf) .err_level=error (clause=is, ok) # { # 'input' => 'a # ', # 'name' => '.err_level=error (clause=is, nok)', # 'schema' => [ # 'buf', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:buf) .err_level=error (clause=is, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=attr, attr:err_level, type, type:buf) .err_level=error (clause=is, nok) # { # 'input' => 'a', # 'name' => '.err_level=warn (clause=is, ok)', # 'schema' => [ # 'buf', # 'is', # 'a', # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:buf', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:buf) .err_level=warn (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:buf) .err_level=warn (clause=is, ok) # { # 'input' => 'a # ', # 'name' => '.err_level=warn (clause=is, nok)', # 'schema' => [ # 'buf*', # 'is', # 'a', # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:buf', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:buf) .err_level=warn (clause=is, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:buf) .err_level=warn (clause=is, nok) # { # 'input' => 'a', # 'name' => 'is: must accept same value', # 'schema' => [ # 'buf', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:buf) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=clause:is, type, type:buf) is: must accept same value # { # 'input' => 'a', # 'name' => 'is: must reject different value', # 'schema' => [ # 'buf', # 'is', # 'b' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:buf) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=clause:is, type, type:buf) is: must reject different value # { # 'input' => 'a', # 'name' => '!is (nok)', # 'schema' => [ # 'buf', # '!is', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:buf) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, op, op:not, opshortcut, type, type:buf) !is (nok) # { # 'input' => 'a', # 'name' => '!is (ok)', # 'schema' => [ # 'buf', # '!is', # 'b' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:buf) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:not, opshortcut, type, type:buf) !is (ok) # { # 'input' => 'a', # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'buf', # 'is', # 'a', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:buf) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, type, type:buf) is.op=not (nok) # { # 'input' => 'a', # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'buf', # 'is', # 'b', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:buf) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, type, type:buf) is.op=not (ok) # { # 'input' => 'a', # 'name' => 'is& (no items)', # 'schema' => [ # 'buf', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (no items) # { # 'input' => 'a', # 'name' => 'is& (ok)', # 'schema' => [ # 'buf', # 'is&', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'buf', # 'is&', # [ # 'b', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'buf', # 'is&', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'buf', # 'is&', # [ # 'b', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:buf) is& (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'buf', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=type, type:buf) is.op=and (no items) # { # 'input' => 'a', # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'buf', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:buf) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, type, type:buf) is.op=and (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'buf', # 'is', # [ # 'b', # 'a' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:buf) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:and, type, type:buf) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'buf', # 'is', # [ # 'a', # 'b' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:buf) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:buf) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'buf', # 'is', # [ # 'b', # 'b' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:buf) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:buf) is.op=and (nok + nok) # { # 'input' => 'a', # 'name' => 'is| (no items)', # 'schema' => [ # 'buf', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (no items) # { # 'input' => 'a', # 'name' => 'is| (ok)', # 'schema' => [ # 'buf', # 'is|', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (ok) # { # 'input' => 'a', # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'buf', # 'is|', # [ # 'b', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (nok + ok) # { # 'input' => 'a', # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'buf', # 'is|', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'buf', # 'is|', # [ # 'b', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:buf) is| (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'buf', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:buf) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, type, type:buf) is.op=or (no items) # { # 'input' => 'a', # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'buf', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:buf) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, type, type:buf) is.op=or (ok) # { # 'input' => 'a', # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'buf', # 'is', # [ # 'b', # 'a' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:buf) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:buf) is.op=or (nok + ok) # { # 'input' => 'a', # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'buf', # 'is', # [ # 'a', # 'b' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:buf) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:buf) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'buf', # 'is', # [ # 'b', # 'b' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:buf) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:buf) is.op=or (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'buf', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:buf) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:none, type, type:buf) is.op=none (empty items) # { # 'input' => 'a', # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'buf', # 'is', # [ # 'b', # 'b' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:buf) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:none, type, type:buf) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'buf', # 'is', # [ # 'b', # 'a' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:buf) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:buf) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'buf', # 'is', # [ # 'a', # 'b' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:buf) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:buf) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'buf', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:buf) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:buf) is.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'buf', # 'in', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:buf) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:in, type, type:buf) in: must accept valid choices # { # 'input' => 'a', # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'buf', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:buf) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:in, type, type:buf) in: must reject empty choices # { # 'input' => 'a', # 'name' => '!in (nok)', # 'schema' => [ # 'buf', # '!in', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:buf) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, op, op:not, opshortcut, type, type:buf) !in (nok) # { # 'input' => 'a', # 'name' => '!in (ok)', # 'schema' => [ # 'buf', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:buf) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:not, opshortcut, type, type:buf) !in (ok) # { # 'input' => 'a', # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'buf', # 'in', # [ # 'a', # 'b' # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:buf) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, type, type:buf) in.op=not (nok) # { # 'input' => 'a', # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'buf', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:buf) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, type, type:buf) in.op=not (ok) # { # 'input' => 'a', # 'name' => 'in& (no items)', # 'schema' => [ # 'buf', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (no items) # { # 'input' => 'a', # 'name' => 'in& (ok)', # 'schema' => [ # 'buf', # 'in&', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'buf', # 'in&', # [ # [], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'buf', # 'in&', # [ # [ # 'a', # 'b' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'buf', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:buf) in& (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'buf', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=type, type:buf) in.op=and (no items) # { # 'input' => 'a', # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'buf', # 'in', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:buf) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, type, type:buf) in.op=and (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'buf', # 'in', # [ # [], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:buf) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:and, type, type:buf) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'buf', # 'in', # [ # [ # 'a', # 'b' # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:buf) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:buf) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'buf', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:buf) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:buf) in.op=and (nok + nok) # { # 'input' => 'a', # 'name' => 'in| (no items)', # 'schema' => [ # 'buf', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (no items) # { # 'input' => 'a', # 'name' => 'in| (ok)', # 'schema' => [ # 'buf', # 'in|', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (ok) # { # 'input' => 'a', # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'buf', # 'in|', # [ # [], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (nok + ok) # { # 'input' => 'a', # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'buf', # 'in|', # [ # [ # 'a', # 'b' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'buf', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:buf) in| (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'buf', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:buf) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, type, type:buf) in.op=or (no items) # { # 'input' => 'a', # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'buf', # 'in', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:buf) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, type, type:buf) in.op=or (ok) # { # 'input' => 'a', # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'buf', # 'in', # [ # [], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:buf) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:buf) in.op=or (nok + ok) # { # 'input' => 'a', # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'buf', # 'in', # [ # [ # 'a', # 'b' # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:buf) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:buf) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'buf', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:buf) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:buf) in.op=or (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'buf', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:buf) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:none, type, type:buf) in.op=none (empty items) # { # 'input' => 'a', # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'buf', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:buf) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:none, type, type:buf) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'buf', # 'in', # [ # [], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:buf) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:buf) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'buf', # 'in', # [ # [ # 'a', # 'b' # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:buf) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:buf) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'buf', # 'in', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:buf) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:buf) in.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'min: a ', # 'schema' => [ # 'buf', # 'min', # '' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:buf) min: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:min, type, type:buf) min: a # { # 'input' => 'a', # 'name' => 'min: a a', # 'schema' => [ # 'buf', # 'min', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:buf) min: a a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:min, type, type:buf) min: a a # { # 'input' => '', # 'name' => 'min: a -> fail', # 'schema' => [ # 'buf', # 'min', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:buf) min: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min, type, type:buf) min: a -> fail # { # 'input' => 'a', # 'name' => 'xmin: a ', # 'schema' => [ # 'buf', # 'xmin', # '' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:buf) xmin: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:xmin, type, type:buf) xmin: a # { # 'input' => 'a', # 'name' => 'xmin: a a -> fail', # 'schema' => [ # 'buf', # 'xmin', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:buf) xmin: a a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:xmin, type, type:buf) xmin: a a -> fail # { # 'input' => '', # 'name' => 'xmin: a -> fail', # 'schema' => [ # 'buf', # 'xmin', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:buf) xmin: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:xmin, type, type:buf) xmin: a -> fail # { # 'input' => 'a', # 'name' => 'max: a -> fail', # 'schema' => [ # 'buf', # 'max', # '' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:buf) max: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:max, type, type:buf) max: a -> fail # { # 'input' => 'a', # 'name' => 'max: a a', # 'schema' => [ # 'buf', # 'max', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:buf) max: a a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:max, type, type:buf) max: a a # { # 'input' => '', # 'name' => 'max: a', # 'schema' => [ # 'buf', # 'max', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:buf) max: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:max, type, type:buf) max: a # { # 'input' => 'a', # 'name' => 'xmax: a -> fail', # 'schema' => [ # 'buf', # 'xmax', # '' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:buf) xmax: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:xmax, type, type:buf) xmax: a -> fail # { # 'input' => 'a', # 'name' => 'xmax: a a -> fail', # 'schema' => [ # 'buf', # 'xmax', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:buf) xmax: a a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:xmax, type, type:buf) xmax: a a -> fail # { # 'input' => '', # 'name' => 'xmax: a', # 'schema' => [ # 'buf', # 'xmax', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:buf) xmax: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:xmax, type, type:buf) xmax: a # { # 'input' => 'a', # 'name' => 'between: a & ab', # 'schema' => [ # 'buf', # 'between', # [ # '', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:buf) between: a & ab ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:between, type, type:buf) between: a & ab # { # 'input' => 'a', # 'name' => 'between: a & a', # 'schema' => [ # 'buf', # 'between', # [ # '', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:buf) between: a & a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:between, type, type:buf) between: a & a # { # 'input' => 'a', # 'name' => 'between: a a & a', # 'schema' => [ # 'buf', # 'between', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:buf) between: a a & a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:between, type, type:buf) between: a a & a # { # 'input' => '', # 'name' => 'between: a & ab -> fail', # 'schema' => [ # 'buf', # 'between', # [ # 'a', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:buf) between: a & ab -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:between, type, type:buf) between: a & ab -> fail # { # 'input' => 'a', # 'name' => 'xbetween: a & ab', # 'schema' => [ # 'buf', # 'xbetween', # [ # '', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xbetween' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xbetween, type, type:buf) xbetween: a & ab ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:xbetween, type, type:buf) xbetween: a & ab # { # 'input' => 'a', # 'name' => 'xbetween: a & a -> fail', # 'schema' => [ # 'buf', # 'xbetween', # [ # '', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:buf) xbetween: a & a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 120 - (tags=clause:xbetween, type, type:buf) xbetween: a & a -> fail # { # 'input' => 'a', # 'name' => 'xbetween: a a & a -> fail', # 'schema' => [ # 'buf', # 'xbetween', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:buf) xbetween: a a & a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:xbetween, type, type:buf) xbetween: a a & a -> fail # { # 'input' => '', # 'name' => 'xbetween: a & ab -> fail', # 'schema' => [ # 'buf', # 'xbetween', # [ # 'a', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:buf) xbetween: a & ab -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:xbetween, type, type:buf) xbetween: a & ab -> fail # { # 'input' => '', # 'name' => '!between (nok)', # 'schema' => [ # 'buf', # '!between', # [ # '', # '' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:buf) !between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:between, op, op:not, opshortcut, type, type:buf) !between (nok) # { # 'input' => '', # 'name' => '!between (ok)', # 'schema' => [ # 'buf', # '!between', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:buf) !between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:between, op, op:not, opshortcut, type, type:buf) !between (ok) # { # 'input' => '', # 'name' => 'between.op=not (nok)', # 'schema' => [ # 'buf', # 'between', # [ # '', # '' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, type, type:buf) between.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:between, op, op:not, type, type:buf) between.op=not (nok) # { # 'input' => '', # 'name' => 'between.op=not (ok)', # 'schema' => [ # 'buf', # 'between', # [ # 'a', # 'a' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, type, type:buf) between.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:between, op, op:not, type, type:buf) between.op=not (ok) # { # 'input' => '', # 'name' => 'between& (no items)', # 'schema' => [ # 'buf', # 'between&', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (no items) # { # 'input' => '', # 'name' => 'between& (ok)', # 'schema' => [ # 'buf', # 'between&', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (nok + ok)', # 'schema' => [ # 'buf', # 'between&', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (ok + nok)', # 'schema' => [ # 'buf', # 'between&', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (nok + nok)', # 'schema' => [ # 'buf', # 'between&', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:between, op, op:and, opshortcut, type, type:buf) between& (nok + nok) # { # 'input' => '', # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'buf', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:buf) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=type, type:buf) between.op=and (no items) # { # 'input' => '', # 'name' => 'between.op=and (ok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, type, type:buf) between.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=clause:between, op, op:and, type, type:buf) between.op=and (ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (nok + ok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:buf) between.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 134 - (tags=clause:between, op, op:and, type, type:buf) between.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (ok + nok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:buf) between.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 135 - (tags=clause:between, op, op:and, type, type:buf) between.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (nok + nok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:buf) between.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 136 - (tags=clause:between, op, op:and, type, type:buf) between.op=and (nok + nok) # { # 'input' => '', # 'name' => 'between| (no items)', # 'schema' => [ # 'buf', # 'between|', # [] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 137 - (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (no items) # { # 'input' => '', # 'name' => 'between| (ok)', # 'schema' => [ # 'buf', # 'between|', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 138 - (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (ok) # { # 'input' => '', # 'name' => 'between| (nok + ok)', # 'schema' => [ # 'buf', # 'between|', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 139 - (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (nok + ok) # { # 'input' => '', # 'name' => 'between| (ok + nok)', # 'schema' => [ # 'buf', # 'between|', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between| (nok + nok)', # 'schema' => [ # 'buf', # 'between|', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:between, op, op:or, opshortcut, type, type:buf) between| (nok + nok) # { # 'input' => '', # 'name' => 'between.op=or (no items)', # 'schema' => [ # 'buf', # 'between', # [], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:buf) between.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:between, op, op:or, type, type:buf) between.op=or (no items) # { # 'input' => '', # 'name' => 'between.op=or (ok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:buf) between.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:between, op, op:or, type, type:buf) between.op=or (ok) # { # 'input' => '', # 'name' => 'between.op=or (nok + ok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:buf) between.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:between, op, op:or, type, type:buf) between.op=or (nok + ok) # { # 'input' => '', # 'name' => 'between.op=or (ok + nok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:buf) between.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:between, op, op:or, type, type:buf) between.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=or (nok + nok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, type, type:buf) between.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:between, op, op:or, type, type:buf) between.op=or (nok + nok) # { # 'input' => '', # 'name' => 'between.op=none (empty items)', # 'schema' => [ # 'buf', # 'between', # [], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:buf) between.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:between, op, op:none, type, type:buf) between.op=none (empty items) # { # 'input' => '', # 'name' => 'between.op=none (nok + nok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:buf) between.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:between, op, op:none, type, type:buf) between.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (nok + ok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:buf) between.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:between, op, op:none, type, type:buf) between.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (ok + nok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:buf) between.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:between, op, op:none, type, type:buf) between.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (ok + ok)', # 'schema' => [ # 'buf', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:buf) between.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:between, op, op:none, type, type:buf) between.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'len (ok)', # 'schema' => [ # 'buf', # 'len', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len, type, type:buf) len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:len, type, type:buf) len (ok) # { # 'input' => 'a', # 'name' => 'len (nok)', # 'schema' => [ # 'buf', # 'len', # 3 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len, type, type:buf) len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:len, type, type:buf) len (nok) # { # 'input' => 'a', # 'name' => 'min_len (ok)', # 'schema' => [ # 'buf', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:min_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min_len, type, type:buf) min_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 154 - (tags=clause:min_len, type, type:buf) min_len (ok) # { # 'input' => 'a', # 'name' => 'min_len (nok)', # 'schema' => [ # 'buf', # 'min_len', # 3 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:min_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min_len, type, type:buf) min_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 155 - (tags=clause:min_len, type, type:buf) min_len (nok) # { # 'input' => 'a', # 'name' => 'max_len (ok)', # 'schema' => [ # 'buf', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:max_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max_len, type, type:buf) max_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 156 - (tags=clause:max_len, type, type:buf) max_len (ok) # { # 'input' => 'abc', # 'name' => 'max_len (nok)', # 'schema' => [ # 'buf', # 'max_len', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:max_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max_len, type, type:buf) max_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 157 - (tags=clause:max_len, type, type:buf) max_len (nok) # { # 'input' => 'a', # 'name' => 'len_between (ok)', # 'schema' => [ # 'buf', # 'len_between', # [ # 1, # 3 # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:len_between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len_between, type, type:buf) len_between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 158 - (tags=clause:len_between, type, type:buf) len_between (ok) # { # 'input' => 'abc', # 'name' => 'len_between (nok)', # 'schema' => [ # 'buf', # 'len_between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:len_between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len_between, type, type:buf) len_between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 159 - (tags=clause:len_between, type, type:buf) len_between (nok) # { # 'input' => 'abc', # 'name' => 'each_index (ok)', # 'schema' => [ # 'buf', # 'each_index', # [ # 'int', # 'max', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:each_index' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_index, type, type:buf) each_index (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 160 - (tags=clause:each_index, type, type:buf) each_index (ok) # { # 'input' => 'abc', # 'name' => 'each_index (nok)', # 'schema' => [ # 'buf', # 'each_index', # [ # 'int', # 'xmax', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:each_index' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_index, type, type:buf) each_index (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 161 - (tags=clause:each_index, type, type:buf) each_index (nok) # { # 'input' => 'abc', # 'name' => 'each_elem (ok)', # 'schema' => [ # 'buf', # 'each_elem', # 'buf' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:each_elem' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_elem, type, type:buf) each_elem (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 162 - (tags=clause:each_elem, type, type:buf) each_elem (ok) # { # 'input' => 'abc', # 'name' => 'each_elem (nok)', # 'schema' => [ # 'buf', # 'each_elem', # 'float' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:each_elem' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_elem, type, type:buf) each_elem (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 163 - (tags=clause:each_elem, type, type:buf) each_elem (nok) # { # 'invalid_inputs' => [ # '', # 'A', # 'c' # ], # 'name' => 'has', # 'schema' => [ # 'buf', # 'has', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:has' # ], # 'valid_inputs' => [ # 'abc', # 'ac' # ] # } # Subtest: (tags=clause:has, type, type:buf) has ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - invalid input [2] ok 7 - validator (rt=full) returns hash 1..7 ok 164 - (tags=clause:has, type, type:buf) has # { # 'invalid_inputs' => [ # 'abc', # 'ac' # ], # 'name' => 'has + op.not', # 'schema' => [ # 'buf', # '!has', # 'a' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:has', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid_inputs' => [ # '', # 'A', # 'c' # ] # } # Subtest: (tags=clause:has, op, op:not, opshortcut, type, type:buf) has + op.not ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - valid input [2] ok 5 - invalid input [0] ok 6 - invalid input [1] ok 7 - validator (rt=full) returns hash 1..7 ok 165 - (tags=clause:has, op, op:not, opshortcut, type, type:buf) has + op.not # { # 'invalid_inputs' => [ # '', # 'A', # 'c' # ], # 'name' => 'has + op.or', # 'schema' => [ # 'buf', # 'has|', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:has', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid_inputs' => [ # 'abc', # 'ac' # ] # } # Subtest: (tags=clause:has, op, op:or, opshortcut, type, type:buf) has + op.or ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - invalid input [2] ok 7 - validator (rt=full) returns hash 1..7 ok 166 - (tags=clause:has, op, op:or, opshortcut, type, type:buf) has + op.or # { # 'invalid_inputs' => [ # 'ac', # '', # 'A', # 'c' # ], # 'name' => 'has + op.and', # 'schema' => [ # 'buf', # 'has&', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:has', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid_inputs' => [ # 'abc' # ] # } # Subtest: (tags=clause:has, op, op:and, opshortcut, type, type:buf) has + op.and ok 1 - compile success ok 2 - valid input [0] ok 3 - invalid input [0] ok 4 - invalid input [1] ok 5 - invalid input [2] ok 6 - invalid input [3] ok 7 - validator (rt=full) returns hash 1..7 ok 167 - (tags=clause:has, op, op:and, opshortcut, type, type:buf) has + op.and # { # 'input' => 'a', # 'name' => 'match: (ok)', # 'schema' => [ # 'buf', # 'match', # '[abc]' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:match' # ], # 'valid' => 1 # } # Subtest: (tags=clause:match, type, type:buf) match: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 168 - (tags=clause:match, type, type:buf) match: (ok) # { # 'input' => 'A', # 'name' => 'match: (nok)', # 'schema' => [ # 'buf', # 'match', # '[abc]' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:match' # ], # 'valid' => 0 # } # Subtest: (tags=clause:match, type, type:buf) match: (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 169 - (tags=clause:match, type, type:buf) match: (nok) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'match: (dies, invalid regex)', # 'schema' => [ # 'buf', # 'match', # '(' # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:match' # ] # } # Subtest: (tags=clause:match, type, type:buf) match: (dies, invalid regex) ok 1 - compile error 1..1 ok 170 - (tags=clause:match, type, type:buf) match: (dies, invalid regex) # { # 'input' => 'a', # 'name' => 'is_re: 1 (ok)', # 'schema' => [ # 'buf', # 'is_re', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_re, type, type:buf) is_re: 1 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 171 - (tags=clause:is_re, type, type:buf) is_re: 1 (ok) # { # 'input' => 'a(', # 'name' => 'is_re: 1 (nok)', # 'schema' => [ # 'buf', # 'is_re', # 1 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_re, type, type:buf) is_re: 1 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 172 - (tags=clause:is_re, type, type:buf) is_re: 1 (nok) # { # 'input' => 'a(', # 'name' => 'is_re: 0 (ok)', # 'schema' => [ # 'buf', # 'is_re', # 0 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_re, type, type:buf) is_re: 0 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 173 - (tags=clause:is_re, type, type:buf) is_re: 0 (ok) # { # 'input' => 'a', # 'name' => 'is_re: 0 (nok)', # 'schema' => [ # 'buf', # 'is_re', # 0 # ], # 'tags' => [ # 'type', # 'type:buf', # 'clause:is_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_re, type, type:buf) is_re: 0 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 174 - (tags=clause:is_re, type, type:buf) is_re: 0 (nok) ok 175 1..175 ok 7 - 10-type-buf.json # Subtest: 10-type-cistr.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:cistr) type check: must accept 0 # { # 'input' => '1.1', # 'name' => 'type check: must accept 1.1', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) type check: must accept 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:cistr) type check: must accept 1.1 # { # 'input' => '', # 'name' => 'type check: must accept ', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) type check: must accept ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:cistr) type check: must accept # { # 'input' => 'str # ', # 'name' => 'type check: must accept str # ', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) type check: must accept str ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:cistr) type check: must accept str # # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:cistr) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:cistr) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:cistr) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:cistr) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'cistr', # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:cistr) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'cistr', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:cistr) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=clause:defhash_v, type, type:cistr) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'cistr', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:cistr) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:v, type, type:cistr) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'cistr', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:cistr) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:c, type, type:cistr) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'cistr', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:cistr) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:default_lang, type, type:cistr) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'cistr', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:cistr) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:name, type, type:cistr) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'cistr', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:cistr) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:summary, type, type:cistr) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'cistr', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:cistr) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:description, type, type:cistr) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'cistr', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:cistr) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:tags, type, type:cistr) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'cistr', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:cistr) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:req, type, type:cistr) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'cistr', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:cistr) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:req, type, type:cistr) req=1 must reject undefined value # { # 'input' => 'a', # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'cistr', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:cistr) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:forbidden, type, type:cistr) forbidden=0 must accept defined value # { # 'input' => 'a', # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'cistr', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:cistr) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:forbidden, type, type:cistr) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default a', # 'schema' => [ # 'cistr*', # 'default', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:cistr) default: must accept valid default a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:default, type, type:cistr) default: must accept valid default a # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'cistr*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:cistr) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:default, type, type:cistr) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'cistr*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:cistr) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 22 - (tags=clause:clause, type, type:cistr) clause (dies, unknown clause) # { # 'input' => 'a', # 'name' => 'clause (ok)', # 'schema' => [ # 'cistr*', # 'clause', # [ # 'match', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:cistr) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:clause, type, type:cistr) clause (ok) # { # 'input' => 'a', # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'cistr*', # 'clause', # [ # 'match', # 'a' # ], # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:cistr) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clause, type, type:cistr) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'clause (nok)', # 'schema' => [ # 'cistr*', # 'clause', # [ # 'match', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:cistr) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:cistr) clause (nok) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'cistr*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:cistr) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 26 - (tags=clause:clset, type, type:cistr) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'cistr*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:cistr) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 27 - (tags=clause:clset, type, type:cistr) clset (dies, unknown attr) # { # 'input' => 'a', # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'cistr*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 28 - (tags=type, type:cistr) clset (empty = ok) # { # 'input' => 'a', # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'cistr*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:cistr) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=clause:clset, type, type:cistr) clset (ignored clause/attr = ok) # { # 'input' => 'a', # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'cistr*', # 'clset', # { # 'len' => 1, # 'match' => 'a' # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:cistr) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=clause:clset, type, type:cistr) clset (ok + ok = ok) # { # 'input' => 'a', # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'cistr*', # 'clset', # { # 'match' => 'a' # }, # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:cistr) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:cistr) clset (ok) + clause nok = nok # { # 'input' => 'a', # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'cistr*', # 'clset', # { # 'len' => 2, # 'match' => 'a' # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:cistr) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:cistr) clset (ok + nok = nok) # { # 'input' => 'a', # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'cistr*', # 'clset', # { # 'len' => 1, # 'match' => 'b' # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:cistr) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:cistr) clset (nok + ok = nok) # { # 'input' => 'a', # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'cistr*', # 'clset', # { # 'len' => 2, # 'match' => 'b' # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:cistr) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:cistr) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'cistr', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:cistr) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:ok, type, type:cistr) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'cistr', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:cistr) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:ok, op, op:not, type, type:cistr) ok + op not (nok) # { # 'input' => 'a', # 'name' => '.err_level=error (clause=is, ok)', # 'schema' => [ # 'cistr', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:cistr) .err_level=error (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=attr, attr:err_level, type, type:cistr) .err_level=error (clause=is, ok) # { # 'input' => 'a # ', # 'name' => '.err_level=error (clause=is, nok)', # 'schema' => [ # 'cistr', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:cistr) .err_level=error (clause=is, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=attr, attr:err_level, type, type:cistr) .err_level=error (clause=is, nok) # { # 'input' => 'a', # 'name' => '.err_level=warn (clause=is, ok)', # 'schema' => [ # 'cistr', # 'is', # 'a', # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:cistr) .err_level=warn (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:cistr) .err_level=warn (clause=is, ok) # { # 'input' => 'a # ', # 'name' => '.err_level=warn (clause=is, nok)', # 'schema' => [ # 'cistr*', # 'is', # 'a', # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:cistr) .err_level=warn (clause=is, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:cistr) .err_level=warn (clause=is, nok) # { # 'input' => 'a', # 'name' => 'is: must accept same value', # 'schema' => [ # 'cistr', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:cistr) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=clause:is, type, type:cistr) is: must accept same value # { # 'input' => 'a', # 'name' => 'is: must reject different value', # 'schema' => [ # 'cistr', # 'is', # 'B' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:cistr) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=clause:is, type, type:cistr) is: must reject different value # { # 'input' => 'a', # 'name' => '!is (nok)', # 'schema' => [ # 'cistr', # '!is', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:cistr) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, op, op:not, opshortcut, type, type:cistr) !is (nok) # { # 'input' => 'a', # 'name' => '!is (ok)', # 'schema' => [ # 'cistr', # '!is', # 'B' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:cistr) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:not, opshortcut, type, type:cistr) !is (ok) # { # 'input' => 'a', # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'cistr', # 'is', # 'a', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:cistr) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, type, type:cistr) is.op=not (nok) # { # 'input' => 'a', # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'cistr', # 'is', # 'B', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:cistr) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, type, type:cistr) is.op=not (ok) # { # 'input' => 'a', # 'name' => 'is& (no items)', # 'schema' => [ # 'cistr', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (no items) # { # 'input' => 'a', # 'name' => 'is& (ok)', # 'schema' => [ # 'cistr', # 'is&', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'cistr', # 'is&', # [ # 'B', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'cistr', # 'is&', # [ # 'a', # 'B' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'cistr', # 'is&', # [ # 'B', # 'B' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:cistr) is& (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'cistr', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=type, type:cistr) is.op=and (no items) # { # 'input' => 'a', # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:cistr) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, type, type:cistr) is.op=and (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'B', # 'a' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:cistr) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:and, type, type:cistr) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'a', # 'B' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:cistr) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:cistr) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'B', # 'B' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:cistr) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:cistr) is.op=and (nok + nok) # { # 'input' => 'a', # 'name' => 'is| (no items)', # 'schema' => [ # 'cistr', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (no items) # { # 'input' => 'a', # 'name' => 'is| (ok)', # 'schema' => [ # 'cistr', # 'is|', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (ok) # { # 'input' => 'a', # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'cistr', # 'is|', # [ # 'B', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (nok + ok) # { # 'input' => 'a', # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'cistr', # 'is|', # [ # 'a', # 'B' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'cistr', # 'is|', # [ # 'B', # 'B' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:cistr) is| (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'cistr', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:cistr) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, type, type:cistr) is.op=or (no items) # { # 'input' => 'a', # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:cistr) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, type, type:cistr) is.op=or (ok) # { # 'input' => 'a', # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'B', # 'a' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:cistr) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:cistr) is.op=or (nok + ok) # { # 'input' => 'a', # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'a', # 'B' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:cistr) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:cistr) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'B', # 'B' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:cistr) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:cistr) is.op=or (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'cistr', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:cistr) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:none, type, type:cistr) is.op=none (empty items) # { # 'input' => 'a', # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'B', # 'B' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:cistr) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:none, type, type:cistr) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'B', # 'a' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:cistr) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:cistr) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'a', # 'B' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:cistr) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:cistr) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'cistr', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:cistr) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:cistr) is.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'cistr', # 'in', # [ # 'a', # 'B' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:cistr) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:in, type, type:cistr) in: must accept valid choices # { # 'input' => 'a', # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'cistr', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:cistr) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:in, type, type:cistr) in: must reject empty choices # { # 'input' => 'a', # 'name' => '!in (nok)', # 'schema' => [ # 'cistr', # '!in', # [ # 'a', # 'B' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:cistr) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, op, op:not, opshortcut, type, type:cistr) !in (nok) # { # 'input' => 'a', # 'name' => '!in (ok)', # 'schema' => [ # 'cistr', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:cistr) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:not, opshortcut, type, type:cistr) !in (ok) # { # 'input' => 'a', # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'cistr', # 'in', # [ # 'a', # 'B' # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:cistr) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, type, type:cistr) in.op=not (nok) # { # 'input' => 'a', # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'cistr', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:cistr) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, type, type:cistr) in.op=not (ok) # { # 'input' => 'a', # 'name' => 'in& (no items)', # 'schema' => [ # 'cistr', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (no items) # { # 'input' => 'a', # 'name' => 'in& (ok)', # 'schema' => [ # 'cistr', # 'in&', # [ # [ # 'a', # 'B' # ], # [ # 'a', # 'B' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'cistr', # 'in&', # [ # [], # [ # 'a', # 'B' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'cistr', # 'in&', # [ # [ # 'a', # 'B' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'cistr', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:cistr) in& (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'cistr', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=type, type:cistr) in.op=and (no items) # { # 'input' => 'a', # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'cistr', # 'in', # [ # [ # 'a', # 'B' # ], # [ # 'a', # 'B' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:cistr) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, type, type:cistr) in.op=and (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'cistr', # 'in', # [ # [], # [ # 'a', # 'B' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:cistr) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:and, type, type:cistr) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'cistr', # 'in', # [ # [ # 'a', # 'B' # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:cistr) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:cistr) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'cistr', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:cistr) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:cistr) in.op=and (nok + nok) # { # 'input' => 'a', # 'name' => 'in| (no items)', # 'schema' => [ # 'cistr', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (no items) # { # 'input' => 'a', # 'name' => 'in| (ok)', # 'schema' => [ # 'cistr', # 'in|', # [ # [ # 'a', # 'B' # ], # [ # 'a', # 'B' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (ok) # { # 'input' => 'a', # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'cistr', # 'in|', # [ # [], # [ # 'a', # 'B' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (nok + ok) # { # 'input' => 'a', # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'cistr', # 'in|', # [ # [ # 'a', # 'B' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'cistr', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:cistr) in| (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'cistr', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:cistr) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, type, type:cistr) in.op=or (no items) # { # 'input' => 'a', # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'cistr', # 'in', # [ # [ # 'a', # 'B' # ], # [ # 'a', # 'B' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:cistr) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, type, type:cistr) in.op=or (ok) # { # 'input' => 'a', # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'cistr', # 'in', # [ # [], # [ # 'a', # 'B' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:cistr) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:cistr) in.op=or (nok + ok) # { # 'input' => 'a', # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'cistr', # 'in', # [ # [ # 'a', # 'B' # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:cistr) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:cistr) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'cistr', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:cistr) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:cistr) in.op=or (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'cistr', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:cistr) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:none, type, type:cistr) in.op=none (empty items) # { # 'input' => 'a', # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'cistr', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:cistr) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:none, type, type:cistr) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'cistr', # 'in', # [ # [], # [ # 'a', # 'B' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:cistr) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:cistr) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'cistr', # 'in', # [ # [ # 'a', # 'B' # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:cistr) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:cistr) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'cistr', # 'in', # [ # [ # 'a', # 'B' # ], # [ # 'a', # 'B' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:cistr) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:cistr) in.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'min: a ', # 'schema' => [ # 'cistr', # 'min', # '' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:cistr) min: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:min, type, type:cistr) min: a # { # 'input' => 'a', # 'name' => 'min: a a', # 'schema' => [ # 'cistr', # 'min', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:cistr) min: a a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:min, type, type:cistr) min: a a # { # 'input' => '', # 'name' => 'min: a -> fail', # 'schema' => [ # 'cistr', # 'min', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:cistr) min: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min, type, type:cistr) min: a -> fail # { # 'input' => 'a', # 'name' => 'xmin: a ', # 'schema' => [ # 'cistr', # 'xmin', # '' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:cistr) xmin: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:xmin, type, type:cistr) xmin: a # { # 'input' => 'a', # 'name' => 'xmin: a a -> fail', # 'schema' => [ # 'cistr', # 'xmin', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:cistr) xmin: a a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:xmin, type, type:cistr) xmin: a a -> fail # { # 'input' => '', # 'name' => 'xmin: a -> fail', # 'schema' => [ # 'cistr', # 'xmin', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:cistr) xmin: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:xmin, type, type:cistr) xmin: a -> fail # { # 'input' => 'a', # 'name' => 'max: a -> fail', # 'schema' => [ # 'cistr', # 'max', # '' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:cistr) max: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:max, type, type:cistr) max: a -> fail # { # 'input' => 'a', # 'name' => 'max: a a', # 'schema' => [ # 'cistr', # 'max', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:cistr) max: a a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:max, type, type:cistr) max: a a # { # 'input' => '', # 'name' => 'max: a', # 'schema' => [ # 'cistr', # 'max', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:cistr) max: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:max, type, type:cistr) max: a # { # 'input' => 'a', # 'name' => 'xmax: a -> fail', # 'schema' => [ # 'cistr', # 'xmax', # '' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:cistr) xmax: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:xmax, type, type:cistr) xmax: a -> fail # { # 'input' => 'a', # 'name' => 'xmax: a a -> fail', # 'schema' => [ # 'cistr', # 'xmax', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:cistr) xmax: a a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:xmax, type, type:cistr) xmax: a a -> fail # { # 'input' => '', # 'name' => 'xmax: a', # 'schema' => [ # 'cistr', # 'xmax', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:cistr) xmax: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:xmax, type, type:cistr) xmax: a # { # 'input' => 'a', # 'name' => 'between: a & Ab', # 'schema' => [ # 'cistr', # 'between', # [ # '', # 'Ab' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:cistr) between: a & Ab ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:between, type, type:cistr) between: a & Ab # { # 'input' => 'a', # 'name' => 'between: a & a', # 'schema' => [ # 'cistr', # 'between', # [ # '', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:cistr) between: a & a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:between, type, type:cistr) between: a & a # { # 'input' => 'a', # 'name' => 'between: a a & a', # 'schema' => [ # 'cistr', # 'between', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:cistr) between: a a & a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:between, type, type:cistr) between: a a & a # { # 'input' => '', # 'name' => 'between: a & Ab -> fail', # 'schema' => [ # 'cistr', # 'between', # [ # 'a', # 'Ab' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:cistr) between: a & Ab -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:between, type, type:cistr) between: a & Ab -> fail # { # 'input' => 'a', # 'name' => 'xbetween: a & Ab', # 'schema' => [ # 'cistr', # 'xbetween', # [ # '', # 'Ab' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xbetween' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xbetween, type, type:cistr) xbetween: a & Ab ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:xbetween, type, type:cistr) xbetween: a & Ab # { # 'input' => 'a', # 'name' => 'xbetween: a & a -> fail', # 'schema' => [ # 'cistr', # 'xbetween', # [ # '', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:cistr) xbetween: a & a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 120 - (tags=clause:xbetween, type, type:cistr) xbetween: a & a -> fail # { # 'input' => 'a', # 'name' => 'xbetween: a a & a -> fail', # 'schema' => [ # 'cistr', # 'xbetween', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:cistr) xbetween: a a & a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:xbetween, type, type:cistr) xbetween: a a & a -> fail # { # 'input' => '', # 'name' => 'xbetween: a & Ab -> fail', # 'schema' => [ # 'cistr', # 'xbetween', # [ # 'a', # 'Ab' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:cistr) xbetween: a & Ab -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:xbetween, type, type:cistr) xbetween: a & Ab -> fail # { # 'input' => '', # 'name' => '!between (nok)', # 'schema' => [ # 'cistr', # '!between', # [ # '', # '' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:cistr) !between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:between, op, op:not, opshortcut, type, type:cistr) !between (nok) # { # 'input' => '', # 'name' => '!between (ok)', # 'schema' => [ # 'cistr', # '!between', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:cistr) !between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:between, op, op:not, opshortcut, type, type:cistr) !between (ok) # { # 'input' => '', # 'name' => 'between.op=not (nok)', # 'schema' => [ # 'cistr', # 'between', # [ # '', # '' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, type, type:cistr) between.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:between, op, op:not, type, type:cistr) between.op=not (nok) # { # 'input' => '', # 'name' => 'between.op=not (ok)', # 'schema' => [ # 'cistr', # 'between', # [ # 'a', # 'a' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, type, type:cistr) between.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:between, op, op:not, type, type:cistr) between.op=not (ok) # { # 'input' => '', # 'name' => 'between& (no items)', # 'schema' => [ # 'cistr', # 'between&', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (no items) # { # 'input' => '', # 'name' => 'between& (ok)', # 'schema' => [ # 'cistr', # 'between&', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (nok + ok)', # 'schema' => [ # 'cistr', # 'between&', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (ok + nok)', # 'schema' => [ # 'cistr', # 'between&', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (nok + nok)', # 'schema' => [ # 'cistr', # 'between&', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:between, op, op:and, opshortcut, type, type:cistr) between& (nok + nok) # { # 'input' => '', # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'cistr', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:cistr) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=type, type:cistr) between.op=and (no items) # { # 'input' => '', # 'name' => 'between.op=and (ok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, type, type:cistr) between.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=clause:between, op, op:and, type, type:cistr) between.op=and (ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (nok + ok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:cistr) between.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 134 - (tags=clause:between, op, op:and, type, type:cistr) between.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (ok + nok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:cistr) between.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 135 - (tags=clause:between, op, op:and, type, type:cistr) between.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (nok + nok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:cistr) between.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 136 - (tags=clause:between, op, op:and, type, type:cistr) between.op=and (nok + nok) # { # 'input' => '', # 'name' => 'between| (no items)', # 'schema' => [ # 'cistr', # 'between|', # [] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 137 - (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (no items) # { # 'input' => '', # 'name' => 'between| (ok)', # 'schema' => [ # 'cistr', # 'between|', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 138 - (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (ok) # { # 'input' => '', # 'name' => 'between| (nok + ok)', # 'schema' => [ # 'cistr', # 'between|', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 139 - (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (nok + ok) # { # 'input' => '', # 'name' => 'between| (ok + nok)', # 'schema' => [ # 'cistr', # 'between|', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between| (nok + nok)', # 'schema' => [ # 'cistr', # 'between|', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:between, op, op:or, opshortcut, type, type:cistr) between| (nok + nok) # { # 'input' => '', # 'name' => 'between.op=or (no items)', # 'schema' => [ # 'cistr', # 'between', # [], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:cistr) between.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:between, op, op:or, type, type:cistr) between.op=or (no items) # { # 'input' => '', # 'name' => 'between.op=or (ok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:cistr) between.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:between, op, op:or, type, type:cistr) between.op=or (ok) # { # 'input' => '', # 'name' => 'between.op=or (nok + ok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:cistr) between.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:between, op, op:or, type, type:cistr) between.op=or (nok + ok) # { # 'input' => '', # 'name' => 'between.op=or (ok + nok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:cistr) between.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:between, op, op:or, type, type:cistr) between.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=or (nok + nok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, type, type:cistr) between.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:between, op, op:or, type, type:cistr) between.op=or (nok + nok) # { # 'input' => '', # 'name' => 'between.op=none (empty items)', # 'schema' => [ # 'cistr', # 'between', # [], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:cistr) between.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:between, op, op:none, type, type:cistr) between.op=none (empty items) # { # 'input' => '', # 'name' => 'between.op=none (nok + nok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:cistr) between.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:between, op, op:none, type, type:cistr) between.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (nok + ok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:cistr) between.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:between, op, op:none, type, type:cistr) between.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (ok + nok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:cistr) between.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:between, op, op:none, type, type:cistr) between.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (ok + ok)', # 'schema' => [ # 'cistr', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:cistr) between.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:between, op, op:none, type, type:cistr) between.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'len (ok)', # 'schema' => [ # 'cistr', # 'len', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len, type, type:cistr) len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:len, type, type:cistr) len (ok) # { # 'input' => 'a', # 'name' => 'len (nok)', # 'schema' => [ # 'cistr', # 'len', # 3 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len, type, type:cistr) len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:len, type, type:cistr) len (nok) # { # 'input' => 'a', # 'name' => 'min_len (ok)', # 'schema' => [ # 'cistr', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:min_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min_len, type, type:cistr) min_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 154 - (tags=clause:min_len, type, type:cistr) min_len (ok) # { # 'input' => 'a', # 'name' => 'min_len (nok)', # 'schema' => [ # 'cistr', # 'min_len', # 3 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:min_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min_len, type, type:cistr) min_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 155 - (tags=clause:min_len, type, type:cistr) min_len (nok) # { # 'input' => 'a', # 'name' => 'max_len (ok)', # 'schema' => [ # 'cistr', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:max_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max_len, type, type:cistr) max_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 156 - (tags=clause:max_len, type, type:cistr) max_len (ok) # { # 'input' => 'abc', # 'name' => 'max_len (nok)', # 'schema' => [ # 'cistr', # 'max_len', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:max_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max_len, type, type:cistr) max_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 157 - (tags=clause:max_len, type, type:cistr) max_len (nok) # { # 'input' => 'a', # 'name' => 'len_between (ok)', # 'schema' => [ # 'cistr', # 'len_between', # [ # 1, # 3 # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:len_between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len_between, type, type:cistr) len_between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 158 - (tags=clause:len_between, type, type:cistr) len_between (ok) # { # 'input' => 'abc', # 'name' => 'len_between (nok)', # 'schema' => [ # 'cistr', # 'len_between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:len_between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len_between, type, type:cistr) len_between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 159 - (tags=clause:len_between, type, type:cistr) len_between (nok) # { # 'input' => 'abc', # 'name' => 'each_index (ok)', # 'schema' => [ # 'cistr', # 'each_index', # [ # 'int', # 'max', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:each_index' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_index, type, type:cistr) each_index (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 160 - (tags=clause:each_index, type, type:cistr) each_index (ok) # { # 'input' => 'abc', # 'name' => 'each_index (nok)', # 'schema' => [ # 'cistr', # 'each_index', # [ # 'int', # 'xmax', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:each_index' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_index, type, type:cistr) each_index (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 161 - (tags=clause:each_index, type, type:cistr) each_index (nok) # { # 'input' => 'abc', # 'name' => 'each_elem (ok)', # 'schema' => [ # 'cistr', # 'each_elem', # 'cistr' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:each_elem' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_elem, type, type:cistr) each_elem (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 162 - (tags=clause:each_elem, type, type:cistr) each_elem (ok) # { # 'input' => 'abc', # 'name' => 'each_elem (nok)', # 'schema' => [ # 'cistr', # 'each_elem', # 'float' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:each_elem' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_elem, type, type:cistr) each_elem (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 163 - (tags=clause:each_elem, type, type:cistr) each_elem (nok) # { # 'invalid_inputs' => [ # '', # 'c' # ], # 'name' => 'has', # 'schema' => [ # 'cistr', # 'has', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:has' # ], # 'valid_inputs' => [ # 'abc', # 'Ac' # ] # } # Subtest: (tags=clause:has, type, type:cistr) has ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 164 - (tags=clause:has, type, type:cistr) has # { # 'invalid_inputs' => [ # 'abc', # 'Ac' # ], # 'name' => 'has + op.not', # 'schema' => [ # 'cistr', # '!has', # 'a' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:has', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid_inputs' => [ # '', # 'c' # ] # } # Subtest: (tags=clause:has, op, op:not, opshortcut, type, type:cistr) has + op.not ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 165 - (tags=clause:has, op, op:not, opshortcut, type, type:cistr) has + op.not # { # 'invalid_inputs' => [ # '', # 'c' # ], # 'name' => 'has + op.or', # 'schema' => [ # 'cistr', # 'has|', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:has', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid_inputs' => [ # 'abc', # 'Ac' # ] # } # Subtest: (tags=clause:has, op, op:or, opshortcut, type, type:cistr) has + op.or ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 166 - (tags=clause:has, op, op:or, opshortcut, type, type:cistr) has + op.or # { # 'invalid_inputs' => [ # 'Ac', # '', # 'c' # ], # 'name' => 'has + op.and', # 'schema' => [ # 'cistr', # 'has&', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:has', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid_inputs' => [ # 'abc' # ] # } # Subtest: (tags=clause:has, op, op:and, opshortcut, type, type:cistr) has + op.and ok 1 - compile success ok 2 - valid input [0] ok 3 - invalid input [0] ok 4 - invalid input [1] ok 5 - invalid input [2] ok 6 - validator (rt=full) returns hash 1..6 ok 167 - (tags=clause:has, op, op:and, opshortcut, type, type:cistr) has + op.and # { # 'input' => 'A', # 'name' => 'match: (ok)', # 'schema' => [ # 'cistr', # 'match', # '[abc]' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:match' # ], # 'valid' => 1 # } # Subtest: (tags=clause:match, type, type:cistr) match: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 168 - (tags=clause:match, type, type:cistr) match: (ok) # { # 'input' => 'z', # 'name' => 'match: (nok)', # 'schema' => [ # 'cistr', # 'match', # '[abc]' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:match' # ], # 'valid' => 0 # } # Subtest: (tags=clause:match, type, type:cistr) match: (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 169 - (tags=clause:match, type, type:cistr) match: (nok) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'match: (dies, invalid regex)', # 'schema' => [ # 'cistr', # 'match', # '(' # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:match' # ] # } # Subtest: (tags=clause:match, type, type:cistr) match: (dies, invalid regex) ok 1 - compile error 1..1 ok 170 - (tags=clause:match, type, type:cistr) match: (dies, invalid regex) # { # 'input' => 'a', # 'name' => 'is_re: 1 (ok)', # 'schema' => [ # 'cistr', # 'is_re', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_re, type, type:cistr) is_re: 1 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 171 - (tags=clause:is_re, type, type:cistr) is_re: 1 (ok) # { # 'input' => 'a(', # 'name' => 'is_re: 1 (nok)', # 'schema' => [ # 'cistr', # 'is_re', # 1 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_re, type, type:cistr) is_re: 1 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 172 - (tags=clause:is_re, type, type:cistr) is_re: 1 (nok) # { # 'input' => 'a(', # 'name' => 'is_re: 0 (ok)', # 'schema' => [ # 'cistr', # 'is_re', # 0 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_re, type, type:cistr) is_re: 0 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 173 - (tags=clause:is_re, type, type:cistr) is_re: 0 (ok) # { # 'input' => 'a', # 'name' => 'is_re: 0 (nok)', # 'schema' => [ # 'cistr', # 'is_re', # 0 # ], # 'tags' => [ # 'type', # 'type:cistr', # 'clause:is_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_re, type, type:cistr) is_re: 0 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 174 - (tags=clause:is_re, type, type:cistr) is_re: 0 (nok) ok 175 1..175 ok 8 - 10-type-cistr.json # Subtest: 10-type-float.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => '-1.1', # 'name' => 'type check: must accept -1.1', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) type check: must accept -1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:float) type check: must accept -1.1 # { # 'input' => -1, # 'name' => 'type check: must accept -1', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) type check: must accept -1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:float) type check: must accept -1 # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:float) type check: must accept 0 # { # 'input' => 1, # 'name' => 'type check: must accept 1', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) type check: must accept 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:float) type check: must accept 1 # { # 'input' => '1.1', # 'name' => 'type check: must accept 1.1', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) type check: must accept 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:float) type check: must accept 1.1 # { # 'input' => 'a', # 'name' => 'type check: must reject a', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:float) type check: must reject a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:float) type check: must reject a # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:float) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:float) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:float) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=type, type:float) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'float', # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=type, type:float) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'float', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:float) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:defhash_v, type, type:float) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'float', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:float) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:v, type, type:float) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'float', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:float) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:c, type, type:float) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'float', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:float) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:default_lang, type, type:float) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'float', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:float) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:name, type, type:float) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'float', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:float) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:summary, type, type:float) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'float', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:float) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:description, type, type:float) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'float', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:float) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:tags, type, type:float) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'float', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:float) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:req, type, type:float) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'float', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:float) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:req, type, type:float) req=1 must reject undefined value # { # 'input' => '1.1', # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'float', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:float) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:forbidden, type, type:float) forbidden=0 must accept defined value # { # 'input' => '1.1', # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'float', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:float) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:forbidden, type, type:float) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default 1.1', # 'schema' => [ # 'float*', # 'default', # '1.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:float) default: must accept valid default 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 22 - (tags=clause:default, type, type:float) default: must accept valid default 1.1 # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'float*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:float) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:default, type, type:float) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => '1.1', # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'float*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:float) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 24 - (tags=clause:clause, type, type:float) clause (dies, unknown clause) # { # 'input' => '1.1', # 'name' => 'clause (ok)', # 'schema' => [ # 'float*', # 'clause', # [ # 'min', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:float) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:float) clause (ok) # { # 'input' => '1.1', # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'float*', # 'clause', # [ # 'min', # 1 # ], # 'max', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:float) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 26 - (tags=clause:clause, type, type:float) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'clause (nok)', # 'schema' => [ # 'float*', # 'clause', # [ # 'min', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:float) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 27 - (tags=clause:clause, type, type:float) clause (nok) # { # 'dies' => 1, # 'input' => '1.1', # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'float*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:float) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 28 - (tags=clause:clset, type, type:float) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => '1.1', # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'float*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:float) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 29 - (tags=clause:clset, type, type:float) clset (dies, unknown attr) # { # 'input' => '1.1', # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'float*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=type, type:float) clset (empty = ok) # { # 'input' => '1.1', # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'float*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:float) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:float) clset (ignored clause/attr = ok) # { # 'input' => '1.1', # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'float*', # 'clset', # { # 'max' => '1.1', # 'min' => 1 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:float) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:float) clset (ok + ok = ok) # { # 'input' => '1.1', # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'float*', # 'clset', # { # 'min' => 1 # }, # 'max', # 1 # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:float) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:float) clset (ok) + clause nok = nok # { # 'input' => '1.1', # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'float*', # 'clset', # { # 'max' => 1, # 'min' => 1 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:float) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:float) clset (ok + nok = nok) # { # 'input' => '1.1', # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'float*', # 'clset', # { # 'max' => '1.1', # 'min' => 2 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:float) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:clset, type, type:float) clset (nok + ok = nok) # { # 'input' => '1.1', # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'float*', # 'clset', # { # 'max' => 1, # 'min' => 2 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:float) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:clset, type, type:float) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'float', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:float) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=clause:ok, type, type:float) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'float', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:float) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=clause:ok, op, op:not, type, type:float) ok + op not (nok) # { # 'input' => '0.1', # 'name' => '.err_level=error (clause=min, ok)', # 'schema' => [ # 'float', # 'min', # 0 # ], # 'tags' => [ # 'type', # 'type:float', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:float) .err_level=error (clause=min, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:float) .err_level=error (clause=min, ok) # { # 'input' => '-0.1', # 'name' => '.err_level=error (clause=min, nok)', # 'schema' => [ # 'float', # 'min', # 0 # ], # 'tags' => [ # 'type', # 'type:float', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:float) .err_level=error (clause=min, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:float) .err_level=error (clause=min, nok) # { # 'input' => '0.1', # 'name' => '.err_level=warn (clause=min, ok)', # 'schema' => [ # 'float', # 'min', # 0, # 'min.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:float', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:float) .err_level=warn (clause=min, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=attr, attr:err_level, type, type:float) .err_level=warn (clause=min, ok) # { # 'input' => '-0.1', # 'name' => '.err_level=warn (clause=min, nok)', # 'schema' => [ # 'float*', # 'min', # 0, # 'min.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:float', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:float) .err_level=warn (clause=min, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=attr, attr:err_level, type, type:float) .err_level=warn (clause=min, nok) # { # 'input' => '1.1', # 'name' => 'is: must accept same value', # 'schema' => [ # 'float', # 'is', # '1.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:float) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, type, type:float) is: must accept same value # { # 'input' => '1.1', # 'name' => 'is: must reject different value', # 'schema' => [ # 'float', # 'is', # '1.2' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:float) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, type, type:float) is: must reject different value # { # 'input' => '1.1', # 'name' => '!is (nok)', # 'schema' => [ # 'float', # '!is', # '1.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:float) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, opshortcut, type, type:float) !is (nok) # { # 'input' => '1.1', # 'name' => '!is (ok)', # 'schema' => [ # 'float', # '!is', # '1.2' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:float) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, opshortcut, type, type:float) !is (ok) # { # 'input' => '1.1', # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'float', # 'is', # '1.1', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:float) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:not, type, type:float) is.op=not (nok) # { # 'input' => '1.1', # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'float', # 'is', # '1.2', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:float) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:not, type, type:float) is.op=not (ok) # { # 'input' => '1.1', # 'name' => 'is& (no items)', # 'schema' => [ # 'float', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (no items) # { # 'input' => '1.1', # 'name' => 'is& (ok)', # 'schema' => [ # 'float', # 'is&', # [ # '1.1', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'float', # 'is&', # [ # '1.2', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'float', # 'is&', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'float', # 'is&', # [ # '1.2', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, opshortcut, type, type:float) is& (nok + nok) # { # 'input' => '1.1', # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'float', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=type, type:float) is.op=and (no items) # { # 'input' => '1.1', # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'float', # 'is', # [ # '1.1', # '1.1' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:float) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:float) is.op=and (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'float', # 'is', # [ # '1.2', # '1.1' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:float) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:float) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'float', # 'is', # [ # '1.1', # '1.2' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:float) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:and, type, type:float) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'float', # 'is', # [ # '1.2', # '1.2' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:float) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:and, type, type:float) is.op=and (nok + nok) # { # 'input' => '1.1', # 'name' => 'is| (no items)', # 'schema' => [ # 'float', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (no items) # { # 'input' => '1.1', # 'name' => 'is| (ok)', # 'schema' => [ # 'float', # 'is|', # [ # '1.1', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (ok) # { # 'input' => '1.1', # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'float', # 'is|', # [ # '1.2', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (nok + ok) # { # 'input' => '1.1', # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'float', # 'is|', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'float', # 'is|', # [ # '1.2', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, opshortcut, type, type:float) is| (nok + nok) # { # 'input' => '1.1', # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'float', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:float) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:float) is.op=or (no items) # { # 'input' => '1.1', # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'float', # 'is', # [ # '1.1', # '1.1' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:float) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:float) is.op=or (ok) # { # 'input' => '1.1', # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'float', # 'is', # [ # '1.2', # '1.1' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:float) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:float) is.op=or (nok + ok) # { # 'input' => '1.1', # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'float', # 'is', # [ # '1.1', # '1.2' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:float) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:or, type, type:float) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'float', # 'is', # [ # '1.2', # '1.2' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:float) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:or, type, type:float) is.op=or (nok + nok) # { # 'input' => '1.1', # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'float', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:float) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:float) is.op=none (empty items) # { # 'input' => '1.1', # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'float', # 'is', # [ # '1.2', # '1.2' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:float) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:float) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'float', # 'is', # [ # '1.2', # '1.1' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:float) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:float) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'float', # 'is', # [ # '1.1', # '1.2' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:float) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:is, op, op:none, type, type:float) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'float', # 'is', # [ # '1.1', # '1.1' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:float) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:is, op, op:none, type, type:float) is.op=none (ok + ok) # { # 'input' => '1.1', # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'float', # 'in', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:float) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, type, type:float) in: must accept valid choices # { # 'input' => '1.1', # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'float', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:float) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, type, type:float) in: must reject empty choices # { # 'input' => '1.1', # 'name' => '!in (nok)', # 'schema' => [ # 'float', # '!in', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:float) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, opshortcut, type, type:float) !in (nok) # { # 'input' => '1.1', # 'name' => '!in (ok)', # 'schema' => [ # 'float', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:float) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, opshortcut, type, type:float) !in (ok) # { # 'input' => '1.1', # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'float', # 'in', # [ # '1.1', # '1.2' # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:float) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:not, type, type:float) in.op=not (nok) # { # 'input' => '1.1', # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'float', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:float) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:not, type, type:float) in.op=not (ok) # { # 'input' => '1.1', # 'name' => 'in& (no items)', # 'schema' => [ # 'float', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (no items) # { # 'input' => '1.1', # 'name' => 'in& (ok)', # 'schema' => [ # 'float', # 'in&', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'float', # 'in&', # [ # [], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'float', # 'in&', # [ # [ # '1.1', # '1.2' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'float', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, opshortcut, type, type:float) in& (nok + nok) # { # 'input' => '1.1', # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'float', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=type, type:float) in.op=and (no items) # { # 'input' => '1.1', # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'float', # 'in', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:float) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:float) in.op=and (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'float', # 'in', # [ # [], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:float) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:float) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'float', # 'in', # [ # [ # '1.1', # '1.2' # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:float) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:and, type, type:float) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'float', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:float) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:and, type, type:float) in.op=and (nok + nok) # { # 'input' => '1.1', # 'name' => 'in| (no items)', # 'schema' => [ # 'float', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (no items) # { # 'input' => '1.1', # 'name' => 'in| (ok)', # 'schema' => [ # 'float', # 'in|', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (ok) # { # 'input' => '1.1', # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'float', # 'in|', # [ # [], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (nok + ok) # { # 'input' => '1.1', # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'float', # 'in|', # [ # [ # '1.1', # '1.2' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'float', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, opshortcut, type, type:float) in| (nok + nok) # { # 'input' => '1.1', # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'float', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:float) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:float) in.op=or (no items) # { # 'input' => '1.1', # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'float', # 'in', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:float) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:float) in.op=or (ok) # { # 'input' => '1.1', # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'float', # 'in', # [ # [], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:float) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:float) in.op=or (nok + ok) # { # 'input' => '1.1', # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'float', # 'in', # [ # [ # '1.1', # '1.2' # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:float) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:or, type, type:float) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'float', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:float) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:or, type, type:float) in.op=or (nok + nok) # { # 'input' => '1.1', # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'float', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:float) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:float) in.op=none (empty items) # { # 'input' => '1.1', # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'float', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:float) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:float) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'float', # 'in', # [ # [], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:float) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:float) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'float', # 'in', # [ # [ # '1.1', # '1.2' # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:float) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:in, op, op:none, type, type:float) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'float', # 'in', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:float) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:in, op, op:none, type, type:float) in.op=none (ok + ok) # { # 'input' => '2.1', # 'name' => 'min: 2.1 -3.1', # 'schema' => [ # 'float', # 'min', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:float) min: 2.1 -3.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min, type, type:float) min: 2.1 -3.1 # { # 'input' => '2.1', # 'name' => 'min: 2.1 2.1', # 'schema' => [ # 'float', # 'min', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:float) min: 2.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:min, type, type:float) min: 2.1 2.1 # { # 'input' => '-3.1', # 'name' => 'min: -3.1 2.1 -> fail', # 'schema' => [ # 'float', # 'min', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:float) min: -3.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:min, type, type:float) min: -3.1 2.1 -> fail # { # 'input' => '2.1', # 'name' => 'xmin: 2.1 -3.1', # 'schema' => [ # 'float', # 'xmin', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:float) xmin: 2.1 -3.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:xmin, type, type:float) xmin: 2.1 -3.1 # { # 'input' => '2.1', # 'name' => 'xmin: 2.1 2.1 -> fail', # 'schema' => [ # 'float', # 'xmin', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:float) xmin: 2.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:xmin, type, type:float) xmin: 2.1 2.1 -> fail # { # 'input' => '-3.1', # 'name' => 'xmin: -3.1 2.1 -> fail', # 'schema' => [ # 'float', # 'xmin', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:float) xmin: -3.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:xmin, type, type:float) xmin: -3.1 2.1 -> fail # { # 'input' => '2.1', # 'name' => 'max: 2.1 -3.1 -> fail', # 'schema' => [ # 'float', # 'max', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:float) max: 2.1 -3.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:max, type, type:float) max: 2.1 -3.1 -> fail # { # 'input' => '2.1', # 'name' => 'max: 2.1 2.1', # 'schema' => [ # 'float', # 'max', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:float) max: 2.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:max, type, type:float) max: 2.1 2.1 # { # 'input' => '-3.1', # 'name' => 'max: -3.1 2.1', # 'schema' => [ # 'float', # 'max', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:float) max: -3.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:max, type, type:float) max: -3.1 2.1 # { # 'input' => '2.1', # 'name' => 'xmax: 2.1 -3.1 -> fail', # 'schema' => [ # 'float', # 'xmax', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:float) xmax: 2.1 -3.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:xmax, type, type:float) xmax: 2.1 -3.1 -> fail # { # 'input' => '2.1', # 'name' => 'xmax: 2.1 2.1 -> fail', # 'schema' => [ # 'float', # 'xmax', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:float) xmax: 2.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:xmax, type, type:float) xmax: 2.1 2.1 -> fail # { # 'input' => '-3.1', # 'name' => 'xmax: -3.1 2.1', # 'schema' => [ # 'float', # 'xmax', # '2.1' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:float) xmax: -3.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:xmax, type, type:float) xmax: -3.1 2.1 # { # 'input' => '2.1', # 'name' => 'between: 2.1 -3.1 & 4.1', # 'schema' => [ # 'float', # 'between', # [ # '-3.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:float) between: 2.1 -3.1 & 4.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:between, type, type:float) between: 2.1 -3.1 & 4.1 # { # 'input' => '2.1', # 'name' => 'between: 2.1 -3.1 & 2.1', # 'schema' => [ # 'float', # 'between', # [ # '-3.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:float) between: 2.1 -3.1 & 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:between, type, type:float) between: 2.1 -3.1 & 2.1 # { # 'input' => '2.1', # 'name' => 'between: 2.1 2.1 & 2.1', # 'schema' => [ # 'float', # 'between', # [ # '2.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:float) between: 2.1 2.1 & 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:between, type, type:float) between: 2.1 2.1 & 2.1 # { # 'input' => '-3.1', # 'name' => 'between: -3.1 2.1 & 4.1 -> fail', # 'schema' => [ # 'float', # 'between', # [ # '2.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:float) between: -3.1 2.1 & 4.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 120 - (tags=clause:between, type, type:float) between: -3.1 2.1 & 4.1 -> fail # { # 'input' => '2.1', # 'name' => 'xbetween: 2.1 -3.1 & 4.1', # 'schema' => [ # 'float', # 'xbetween', # [ # '-3.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xbetween' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xbetween, type, type:float) xbetween: 2.1 -3.1 & 4.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:xbetween, type, type:float) xbetween: 2.1 -3.1 & 4.1 # { # 'input' => '2.1', # 'name' => 'xbetween: 2.1 -3.1 & 2.1 -> fail', # 'schema' => [ # 'float', # 'xbetween', # [ # '-3.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:float) xbetween: 2.1 -3.1 & 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:xbetween, type, type:float) xbetween: 2.1 -3.1 & 2.1 -> fail # { # 'input' => '2.1', # 'name' => 'xbetween: 2.1 2.1 & 2.1 -> fail', # 'schema' => [ # 'float', # 'xbetween', # [ # '2.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:float) xbetween: 2.1 2.1 & 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:xbetween, type, type:float) xbetween: 2.1 2.1 & 2.1 -> fail # { # 'input' => '-3.1', # 'name' => 'xbetween: -3.1 2.1 & 4.1 -> fail', # 'schema' => [ # 'float', # 'xbetween', # [ # '2.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:float) xbetween: -3.1 2.1 & 4.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:xbetween, type, type:float) xbetween: -3.1 2.1 & 4.1 -> fail # { # 'input' => '-3.1', # 'name' => '!between (nok)', # 'schema' => [ # 'float', # '!between', # [ # '-3.1', # '-3.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:float) !between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:between, op, op:not, opshortcut, type, type:float) !between (nok) # { # 'input' => '-3.1', # 'name' => '!between (ok)', # 'schema' => [ # 'float', # '!between', # [ # '2.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:float) !between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:between, op, op:not, opshortcut, type, type:float) !between (ok) # { # 'input' => '-3.1', # 'name' => 'between.op=not (nok)', # 'schema' => [ # 'float', # 'between', # [ # '-3.1', # '-3.1' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, type, type:float) between.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:between, op, op:not, type, type:float) between.op=not (nok) # { # 'input' => '-3.1', # 'name' => 'between.op=not (ok)', # 'schema' => [ # 'float', # 'between', # [ # '2.1', # '2.1' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, type, type:float) between.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:between, op, op:not, type, type:float) between.op=not (ok) # { # 'input' => '-3.1', # 'name' => 'between& (no items)', # 'schema' => [ # 'float', # 'between&', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (no items) # { # 'input' => '-3.1', # 'name' => 'between& (ok)', # 'schema' => [ # 'float', # 'between&', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between& (nok + ok)', # 'schema' => [ # 'float', # 'between&', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (nok + ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between& (ok + nok)', # 'schema' => [ # 'float', # 'between&', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between& (nok + nok)', # 'schema' => [ # 'float', # 'between&', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=clause:between, op, op:and, opshortcut, type, type:float) between& (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'float', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:float) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 134 - (tags=type, type:float) between.op=and (no items) # { # 'input' => '-3.1', # 'name' => 'between.op=and (ok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, type, type:float) between.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 135 - (tags=clause:between, op, op:and, type, type:float) between.op=and (ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=and (nok + ok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:float) between.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 136 - (tags=clause:between, op, op:and, type, type:float) between.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=and (ok + nok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:float) between.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 137 - (tags=clause:between, op, op:and, type, type:float) between.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=and (nok + nok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:float) between.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 138 - (tags=clause:between, op, op:and, type, type:float) between.op=and (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between| (no items)', # 'schema' => [ # 'float', # 'between|', # [] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 139 - (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (no items) # { # 'input' => '-3.1', # 'name' => 'between| (ok)', # 'schema' => [ # 'float', # 'between|', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (ok) # { # 'input' => '-3.1', # 'name' => 'between| (nok + ok)', # 'schema' => [ # 'float', # 'between|', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (nok + ok) # { # 'input' => '-3.1', # 'name' => 'between| (ok + nok)', # 'schema' => [ # 'float', # 'between|', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between| (nok + nok)', # 'schema' => [ # 'float', # 'between|', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:between, op, op:or, opshortcut, type, type:float) between| (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between.op=or (no items)', # 'schema' => [ # 'float', # 'between', # [], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:float) between.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:between, op, op:or, type, type:float) between.op=or (no items) # { # 'input' => '-3.1', # 'name' => 'between.op=or (ok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:float) between.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:between, op, op:or, type, type:float) between.op=or (ok) # { # 'input' => '-3.1', # 'name' => 'between.op=or (nok + ok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:float) between.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:between, op, op:or, type, type:float) between.op=or (nok + ok) # { # 'input' => '-3.1', # 'name' => 'between.op=or (ok + nok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:float) between.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:between, op, op:or, type, type:float) between.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=or (nok + nok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, type, type:float) between.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:between, op, op:or, type, type:float) between.op=or (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between.op=none (empty items)', # 'schema' => [ # 'float', # 'between', # [], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:float) between.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:between, op, op:none, type, type:float) between.op=none (empty items) # { # 'input' => '-3.1', # 'name' => 'between.op=none (nok + nok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:float) between.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:between, op, op:none, type, type:float) between.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=none (nok + ok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:float) between.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:between, op, op:none, type, type:float) between.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=none (ok + nok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:float) between.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:between, op, op:none, type, type:float) between.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=none (ok + ok)', # 'schema' => [ # 'float', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:float', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:float) between.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:between, op, op:none, type, type:float) between.op=none (ok + ok) ok 154 1..154 ok 9 - 10-type-float.json # Subtest: 10-type-hash.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => {}, # 'name' => 'type check: must accept {}', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) type check: must accept {} ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:hash) type check: must accept {} # { # 'input' => { # 'a' => '1' # }, # 'name' => 'type check: must accept { a => 1 }', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) type check: must accept { a => 1 } ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:hash) type check: must accept { a => 1 } # { # 'input' => { # '' => [] # }, # 'name' => 'type check: must accept { "" => [] }', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) type check: must accept { "" => [] } ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:hash) type check: must accept { "" => [] } # { # 'input' => 1, # 'name' => 'type check: must reject 1', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:hash) type check: must reject 1 ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:hash) type check: must reject 1 # { # 'input' => 'a', # 'name' => 'type check: must reject a', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:hash) type check: must reject a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:hash) type check: must reject a # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:hash) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:hash) type check: must reject [] # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'hash', # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:hash) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'hash', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:hash) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=clause:defhash_v, type, type:hash) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'hash', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:hash) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:v, type, type:hash) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'hash', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:hash) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:c, type, type:hash) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'hash', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:hash) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:default_lang, type, type:hash) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'hash', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:hash) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:name, type, type:hash) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'hash', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:hash) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:summary, type, type:hash) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'hash', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:hash) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:description, type, type:hash) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'hash', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:hash) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:tags, type, type:hash) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'hash', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:hash) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:req, type, type:hash) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'hash', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:hash) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:req, type, type:hash) req=1 must reject undefined value # { # 'input' => { # 'a' => 1 # }, # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'hash', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:hash) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:forbidden, type, type:hash) forbidden=0 must accept defined value # { # 'input' => { # 'a' => 1 # }, # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'hash', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:hash) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:forbidden, type, type:hash) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default {}', # 'schema' => [ # 'hash*', # 'default', # {} # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:hash) default: must accept valid default {} ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:default, type, type:hash) default: must accept valid default {} # { # 'input' => undef, # 'name' => 'default: must reject invalid default a', # 'schema' => [ # 'hash*', # 'default', # 'a' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:hash) default: must reject invalid default a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:default, type, type:hash) default: must reject invalid default a # { # 'dies' => 1, # 'input' => { # 'a' => 1 # }, # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'hash*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:hash) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 22 - (tags=clause:clause, type, type:hash) clause (dies, unknown clause) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clause (ok)', # 'schema' => [ # 'hash*', # 'clause', # [ # 'min_len', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:hash) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:clause, type, type:hash) clause (ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'hash*', # 'clause', # [ # 'min_len', # 1 # ], # 'max_len', # 0 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:hash) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clause, type, type:hash) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => { # 'a' => 1 # }, # 'name' => 'clause (nok)', # 'schema' => [ # 'hash*', # 'clause', # [ # 'min_len', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:hash) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:hash) clause (nok) # { # 'dies' => 1, # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'hash*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:hash) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 26 - (tags=clause:clset, type, type:hash) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'hash*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:hash) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 27 - (tags=clause:clset, type, type:hash) clset (dies, unknown attr) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'hash*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 28 - (tags=type, type:hash) clset (empty = ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'hash*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:hash) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=clause:clset, type, type:hash) clset (ignored clause/attr = ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'hash*', # 'clset', # { # 'max_len' => 1, # 'min_len' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:hash) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=clause:clset, type, type:hash) clset (ok + ok = ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'hash*', # 'clset', # { # 'min_len' => 1 # }, # 'max_len', # 0 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:hash) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:hash) clset (ok) + clause nok = nok # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'hash*', # 'clset', # { # 'max_len' => 0, # 'min_len' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:hash) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:hash) clset (ok + nok = nok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'hash*', # 'clset', # { # 'max_len' => 1, # 'min_len' => 2 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:hash) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:hash) clset (nok + ok = nok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'hash*', # 'clset', # { # 'max_len' => 0, # 'min_len' => 2 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:hash) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:hash) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'hash', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:hash) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:ok, type, type:hash) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'hash', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:hash) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:ok, op, op:not, type, type:hash) ok + op not (nok) # { # 'input' => { # 'a' => 0 # }, # 'name' => '.err_level=error (clause=is, ok)', # 'schema' => [ # 'hash', # 'is', # { # 'a' => 0 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:hash) .err_level=error (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=attr, attr:err_level, type, type:hash) .err_level=error (clause=is, ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => '.err_level=error (clause=is, nok)', # 'schema' => [ # 'hash', # 'is', # { # 'a' => 0 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:hash) .err_level=error (clause=is, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=attr, attr:err_level, type, type:hash) .err_level=error (clause=is, nok) # { # 'input' => { # 'a' => 0 # }, # 'name' => '.err_level=warn (clause=is, ok)', # 'schema' => [ # 'hash', # 'is', # { # 'a' => 0 # }, # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:hash', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:hash) .err_level=warn (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:hash) .err_level=warn (clause=is, ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => '.err_level=warn (clause=is, nok)', # 'schema' => [ # 'hash*', # 'is', # { # 'a' => 0 # }, # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:hash', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:hash) .err_level=warn (clause=is, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:hash) .err_level=warn (clause=is, nok) # { # 'input' => {}, # 'name' => 'is: must accept same value', # 'schema' => [ # 'hash', # 'is', # {} # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:hash) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=clause:is, type, type:hash) is: must accept same value # { # 'input' => {}, # 'name' => 'is: must reject different value', # 'schema' => [ # 'hash', # 'is', # { # 'a' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:hash) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=clause:is, type, type:hash) is: must reject different value # { # 'input' => {}, # 'name' => '!is (nok)', # 'schema' => [ # 'hash', # '!is', # {} # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:hash) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, op, op:not, opshortcut, type, type:hash) !is (nok) # { # 'input' => {}, # 'name' => '!is (ok)', # 'schema' => [ # 'hash', # '!is', # { # 'a' => 1 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:hash) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:not, opshortcut, type, type:hash) !is (ok) # { # 'input' => {}, # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'hash', # 'is', # {}, # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:hash) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, type, type:hash) is.op=not (nok) # { # 'input' => {}, # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'hash', # 'is', # { # 'a' => 1 # }, # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:hash) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, type, type:hash) is.op=not (ok) # { # 'input' => {}, # 'name' => 'is& (no items)', # 'schema' => [ # 'hash', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (no items) # { # 'input' => {}, # 'name' => 'is& (ok)', # 'schema' => [ # 'hash', # 'is&', # [ # {}, # {} # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'hash', # 'is&', # [ # { # 'a' => 1 # }, # {} # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (nok + ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'hash', # 'is&', # [ # {}, # { # 'a' => 1 # } # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'hash', # 'is&', # [ # { # 'a' => 1 # }, # { # 'a' => 1 # } # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:hash) is& (nok + nok) # { # 'input' => {}, # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'hash', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=type, type:hash) is.op=and (no items) # { # 'input' => {}, # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'hash', # 'is', # [ # {}, # {} # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:hash) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, type, type:hash) is.op=and (ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'hash', # 'is', # [ # { # 'a' => 1 # }, # {} # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:hash) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:and, type, type:hash) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'hash', # 'is', # [ # {}, # { # 'a' => 1 # } # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:hash) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:hash) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'hash', # 'is', # [ # { # 'a' => 1 # }, # { # 'a' => 1 # } # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:hash) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:hash) is.op=and (nok + nok) # { # 'input' => {}, # 'name' => 'is| (no items)', # 'schema' => [ # 'hash', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (no items) # { # 'input' => {}, # 'name' => 'is| (ok)', # 'schema' => [ # 'hash', # 'is|', # [ # {}, # {} # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (ok) # { # 'input' => {}, # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'hash', # 'is|', # [ # { # 'a' => 1 # }, # {} # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (nok + ok) # { # 'input' => {}, # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'hash', # 'is|', # [ # {}, # { # 'a' => 1 # } # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'hash', # 'is|', # [ # { # 'a' => 1 # }, # { # 'a' => 1 # } # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:hash) is| (nok + nok) # { # 'input' => {}, # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'hash', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:hash) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, type, type:hash) is.op=or (no items) # { # 'input' => {}, # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'hash', # 'is', # [ # {}, # {} # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:hash) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, type, type:hash) is.op=or (ok) # { # 'input' => {}, # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'hash', # 'is', # [ # { # 'a' => 1 # }, # {} # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:hash) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:hash) is.op=or (nok + ok) # { # 'input' => {}, # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'hash', # 'is', # [ # {}, # { # 'a' => 1 # } # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:hash) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:hash) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'hash', # 'is', # [ # { # 'a' => 1 # }, # { # 'a' => 1 # } # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:hash) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:hash) is.op=or (nok + nok) # { # 'input' => {}, # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'hash', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:hash) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:none, type, type:hash) is.op=none (empty items) # { # 'input' => {}, # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'hash', # 'is', # [ # { # 'a' => 1 # }, # { # 'a' => 1 # } # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:hash) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:none, type, type:hash) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'hash', # 'is', # [ # { # 'a' => 1 # }, # {} # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:hash) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:hash) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'hash', # 'is', # [ # {}, # { # 'a' => 1 # } # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:hash) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:hash) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'hash', # 'is', # [ # {}, # {} # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:hash) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:hash) is.op=none (ok + ok) # { # 'input' => {}, # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'hash', # 'in', # [ # {}, # { # 'a' => 1 # } # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:hash) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:in, type, type:hash) in: must accept valid choices # { # 'input' => {}, # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'hash', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:hash) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:in, type, type:hash) in: must reject empty choices # { # 'input' => {}, # 'name' => '!in (nok)', # 'schema' => [ # 'hash', # '!in', # [ # {}, # { # 'a' => 1 # } # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:hash) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, op, op:not, opshortcut, type, type:hash) !in (nok) # { # 'input' => {}, # 'name' => '!in (ok)', # 'schema' => [ # 'hash', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:hash) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:not, opshortcut, type, type:hash) !in (ok) # { # 'input' => {}, # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'hash', # 'in', # [ # {}, # { # 'a' => 1 # } # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:hash) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, type, type:hash) in.op=not (nok) # { # 'input' => {}, # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'hash', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:hash) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, type, type:hash) in.op=not (ok) # { # 'input' => {}, # 'name' => 'in& (no items)', # 'schema' => [ # 'hash', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (no items) # { # 'input' => {}, # 'name' => 'in& (ok)', # 'schema' => [ # 'hash', # 'in&', # [ # [ # {}, # { # 'a' => 1 # } # ], # [ # {}, # { # 'a' => 1 # } # ] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'hash', # 'in&', # [ # [], # [ # {}, # { # 'a' => 1 # } # ] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (nok + ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'hash', # 'in&', # [ # [ # {}, # { # 'a' => 1 # } # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'hash', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:hash) in& (nok + nok) # { # 'input' => {}, # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'hash', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:hash) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=type, type:hash) in.op=and (no items) # { # 'input' => {}, # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'hash', # 'in', # [ # [ # {}, # { # 'a' => 1 # } # ], # [ # {}, # { # 'a' => 1 # } # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:hash) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, type, type:hash) in.op=and (ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'hash', # 'in', # [ # [], # [ # {}, # { # 'a' => 1 # } # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:hash) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:and, type, type:hash) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'hash', # 'in', # [ # [ # {}, # { # 'a' => 1 # } # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:hash) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:hash) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'hash', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:hash) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:hash) in.op=and (nok + nok) # { # 'input' => {}, # 'name' => 'in| (no items)', # 'schema' => [ # 'hash', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (no items) # { # 'input' => {}, # 'name' => 'in| (ok)', # 'schema' => [ # 'hash', # 'in|', # [ # [ # {}, # { # 'a' => 1 # } # ], # [ # {}, # { # 'a' => 1 # } # ] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (ok) # { # 'input' => {}, # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'hash', # 'in|', # [ # [], # [ # {}, # { # 'a' => 1 # } # ] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (nok + ok) # { # 'input' => {}, # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'hash', # 'in|', # [ # [ # {}, # { # 'a' => 1 # } # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'hash', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:hash) in| (nok + nok) # { # 'input' => {}, # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'hash', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:hash) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, type, type:hash) in.op=or (no items) # { # 'input' => {}, # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'hash', # 'in', # [ # [ # {}, # { # 'a' => 1 # } # ], # [ # {}, # { # 'a' => 1 # } # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:hash) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, type, type:hash) in.op=or (ok) # { # 'input' => {}, # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'hash', # 'in', # [ # [], # [ # {}, # { # 'a' => 1 # } # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:hash) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:hash) in.op=or (nok + ok) # { # 'input' => {}, # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'hash', # 'in', # [ # [ # {}, # { # 'a' => 1 # } # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:hash) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:hash) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'hash', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:hash) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:hash) in.op=or (nok + nok) # { # 'input' => {}, # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'hash', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:hash) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:none, type, type:hash) in.op=none (empty items) # { # 'input' => {}, # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'hash', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:hash) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:none, type, type:hash) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'hash', # 'in', # [ # [], # [ # {}, # { # 'a' => 1 # } # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:hash) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:hash) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'hash', # 'in', # [ # [ # {}, # { # 'a' => 1 # } # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:hash) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:hash) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => {}, # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'hash', # 'in', # [ # [ # {}, # { # 'a' => 1 # } # ], # [ # {}, # { # 'a' => 1 # } # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:hash) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:hash) in.op=none (ok + ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'len (ok)', # 'schema' => [ # 'hash', # 'len', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len, type, type:hash) len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:len, type, type:hash) len (ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'len (nok)', # 'schema' => [ # 'hash', # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len, type, type:hash) len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:len, type, type:hash) len (nok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'min_len (ok)', # 'schema' => [ # 'hash', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:min_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min_len, type, type:hash) min_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min_len, type, type:hash) min_len (ok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'min_len (nok)', # 'schema' => [ # 'hash', # 'min_len', # 2 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:min_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min_len, type, type:hash) min_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:min_len, type, type:hash) min_len (nok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'max_len (ok)', # 'schema' => [ # 'hash', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:max_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max_len, type, type:hash) max_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:max_len, type, type:hash) max_len (ok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'max_len (nok)', # 'schema' => [ # 'hash', # 'max_len', # 1 # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:max_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max_len, type, type:hash) max_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:max_len, type, type:hash) max_len (nok) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'len_between (ok)', # 'schema' => [ # 'hash', # 'len_between', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:len_between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len_between, type, type:hash) len_between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:len_between, type, type:hash) len_between (ok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'len_between (nok)', # 'schema' => [ # 'hash', # 'len_between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:len_between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len_between, type, type:hash) len_between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:len_between, type, type:hash) len_between (nok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_index (ok)', # 'schema' => [ # 'hash', # 'each_index', # [ # 'str', # 'len', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_index' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_index, type, type:hash) each_index (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:each_index, type, type:hash) each_index (ok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_index (nok)', # 'schema' => [ # 'hash', # 'each_index', # [ # 'str', # 'len', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_index' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_index, type, type:hash) each_index (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:each_index, type, type:hash) each_index (nok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_key (ok)', # 'schema' => [ # 'hash', # 'each_key', # [ # 'str', # 'len', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_key' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_key, type, type:hash) each_key (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:each_key, type, type:hash) each_key (ok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_key (nok)', # 'schema' => [ # 'hash', # 'each_key', # [ # 'str', # 'len', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_key' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_key, type, type:hash) each_key (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:each_key, type, type:hash) each_key (nok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_elem (ok)', # 'schema' => [ # 'hash', # 'each_elem', # 'float' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_elem' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_elem, type, type:hash) each_elem (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:each_elem, type, type:hash) each_elem (ok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_elem (nok)', # 'schema' => [ # 'hash', # 'each_elem', # 'int' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_elem' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_elem, type, type:hash) each_elem (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:each_elem, type, type:hash) each_elem (nok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_value (ok)', # 'schema' => [ # 'hash', # 'each_value', # 'float' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_value' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_value, type, type:hash) each_value (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:each_value, type, type:hash) each_value (ok) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'each_value (nok)', # 'schema' => [ # 'hash', # 'each_value', # 'int' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:each_value' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_value, type, type:hash) each_value (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:each_value, type, type:hash) each_value (nok) # { # 'invalid_inputs' => [ # {}, # { # '3' => 'c' # } # ], # 'name' => 'has', # 'schema' => [ # 'hash', # 'has', # 'a' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:has' # ], # 'valid_inputs' => [ # { # '1' => 'a', # '2' => 'b', # '3' => 'c' # }, # { # '1' => 'a', # '3' => 'c' # } # ] # } # Subtest: (tags=clause:has, type, type:hash) has ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 119 - (tags=clause:has, type, type:hash) has # { # 'invalid_inputs' => [ # { # '1' => 'a', # '2' => 'b', # '3' => 'c' # }, # { # '1' => 'a', # '3' => 'c' # } # ], # 'name' => 'has + op.not', # 'schema' => [ # 'hash', # '!has', # 'a' # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:has', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid_inputs' => [ # {}, # { # '3' => 'c' # } # ] # } # Subtest: (tags=clause:has, op, op:not, opshortcut, type, type:hash) has + op.not ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 120 - (tags=clause:has, op, op:not, opshortcut, type, type:hash) has + op.not # { # 'invalid_inputs' => [ # {}, # { # '3' => 'c' # } # ], # 'name' => 'has + op.or', # 'schema' => [ # 'hash', # 'has|', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:has', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid_inputs' => [ # { # '1' => 'a', # '2' => 'b', # '3' => 'c' # }, # { # '1' => 'a', # '3' => 'c' # } # ] # } # Subtest: (tags=clause:has, op, op:or, opshortcut, type, type:hash) has + op.or ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - validator (rt=full) returns hash 1..6 ok 121 - (tags=clause:has, op, op:or, opshortcut, type, type:hash) has + op.or # { # 'invalid_inputs' => [ # { # '1' => 'a', # '3' => 'c' # }, # {}, # { # '3' => 'c' # } # ], # 'name' => 'has + op.and', # 'schema' => [ # 'hash', # 'has&', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:has', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid_inputs' => [ # { # '1' => 'a', # '2' => 'b', # '3' => 'c' # } # ] # } # Subtest: (tags=clause:has, op, op:and, opshortcut, type, type:hash) has + op.and ok 1 - compile success ok 2 - valid input [0] ok 3 - invalid input [0] ok 4 - invalid input [1] ok 5 - invalid input [2] ok 6 - validator (rt=full) returns hash 1..6 ok 122 - (tags=clause:has, op, op:and, opshortcut, type, type:hash) has + op.and # { # 'input' => {}, # 'name' => 'keys: (ok, empty)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (ok, empty) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:keys, type, type:hash) keys: (ok, empty) # { # 'input' => { # 'a' => undef # }, # 'name' => 'keys: (ok, only a, a valid 1)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (ok, only a, a valid 1) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:keys, type, type:hash) keys: (ok, only a, a valid 1) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'keys: (ok, only a, a valid 2)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (ok, only a, a valid 2) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:keys, type, type:hash) keys: (ok, only a, a valid 2) # { # 'input' => { # 'a' => '1.1' # }, # 'name' => 'keys: (nok, only a, a invalid)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (nok, only a, a invalid) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:keys, type, type:hash) keys: (nok, only a, a invalid) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'keys: (ok, only a, valid 2)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (ok, only a, valid 2) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:keys, type, type:hash) keys: (ok, only a, valid 2) # { # 'input' => { # 'a' => 1, # 'b' => '1.1' # }, # 'name' => 'keys: (ok, a & b, valid)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (ok, a & b, valid) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:keys, type, type:hash) keys: (ok, a & b, valid) # { # 'input' => { # 'a' => 1, # 'b' => undef # }, # 'name' => 'keys: (nok, a & b, b invalid)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (nok, a & b, b invalid) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:keys, type, type:hash) keys: (nok, a & b, b invalid) # { # 'input' => { # 'a' => '1.1', # 'b' => '1.1' # }, # 'name' => 'keys: (nok, a & b, a invalid)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (nok, a & b, a invalid) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:keys, type, type:hash) keys: (nok, a & b, a invalid) # { # 'input' => { # 'a' => '1.1', # 'b' => undef # }, # 'name' => 'keys: (nok, a & b, a & b invalid)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (nok, a & b, a & b invalid) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:keys, type, type:hash) keys: (nok, a & b, a & b invalid) # { # 'input' => { # 'a' => 1, # 'b' => '1.1', # 'c' => 1 # }, # 'name' => 'keys: (nok, extra)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (nok, extra) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=clause:keys, type, type:hash) keys: (nok, extra) # { # 'input' => { # 'a' => 1, # 'b' => '1.1', # 'c' => 1 # }, # 'name' => 'keys: (ok, extra, restrict=0)', # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => 'float*' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:keys, type, type:hash) keys: (ok, extra, restrict=0) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=clause:keys, type, type:hash) keys: (ok, extra, restrict=0) # { # 'input' => {}, # 'name' => 'keys (create_default=1) 1', # 'output' => { # 'b' => 2 # }, # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => [ # 'int', # 'default', # 2 # ] # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys (create_default=1) 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - output ok 4 - valid (rt=str) ok 5 - validator (rt=full) returns hash ok 6 - errors (rt=full) ok 7 - warnings (rt=full) 1..7 ok 134 - (tags=clause:keys, type, type:hash) keys (create_default=1) 1 # { # 'input' => { # 'b' => undef # }, # 'name' => 'keys (create_default=1) 2', # 'output' => { # 'b' => 2 # }, # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => [ # 'int', # 'default', # 2 # ] # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys (create_default=1) 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - output ok 4 - valid (rt=str) ok 5 - validator (rt=full) returns hash ok 6 - errors (rt=full) ok 7 - warnings (rt=full) 1..7 ok 135 - (tags=clause:keys, type, type:hash) keys (create_default=1) 2 # { # 'input' => {}, # 'name' => 'keys (create_default=0) 1', # 'output' => {}, # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => [ # 'int', # 'default', # 2 # ] # }, # 'keys.create_default' => 0 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys (create_default=0) 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - output ok 4 - valid (rt=str) ok 5 - validator (rt=full) returns hash ok 6 - errors (rt=full) ok 7 - warnings (rt=full) 1..7 ok 136 - (tags=clause:keys, type, type:hash) keys (create_default=0) 1 # { # 'input' => { # 'b' => undef # }, # 'name' => 'keys (create_default=0) 2', # 'output' => { # 'b' => 2 # }, # 'schema' => [ # 'hash', # { # 'keys' => { # 'a' => 'int', # 'b' => [ # 'int', # 'default', # 2 # ] # }, # 'keys.create_default' => 0 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:keys, type, type:hash) keys (create_default=0) 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - output ok 4 - valid (rt=str) ok 5 - validator (rt=full) returns hash ok 6 - errors (rt=full) ok 7 - warnings (rt=full) 1..7 ok 137 - (tags=clause:keys, type, type:hash) keys (create_default=0) 2 # { # 'invalid_inputs' => [ # { # 'a' => 'x' # }, # { # 'b' => 'x' # }, # { # 'c' => 1 # } # ], # 'name' => 're_keys', # 'schema' => [ # 'hash', # { # 're_keys' => { # '[ab]' => 'int' # } # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:re_keys' # ], # 'valid_inputs' => [ # {}, # { # 'a' => 1 # }, # { # 'b' => 1 # } # ] # } # Subtest: (tags=clause:re_keys, type, type:hash) re_keys ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - valid input [2] ok 5 - invalid input [0] ok 6 - invalid input [1] ok 7 - invalid input [2] ok 8 - validator (rt=full) returns hash 1..8 ok 138 - (tags=clause:re_keys, type, type:hash) re_keys # { # 'invalid_inputs' => [ # { # 'a' => 'x' # }, # { # 'b' => 'x' # } # ], # 'name' => 're_keys (restrict=0)', # 'schema' => [ # 'hash', # { # 're_keys' => { # '[ab]' => 'int' # }, # 're_keys.restrict' => 0 # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:re_keys' # ], # 'valid_inputs' => [ # {}, # { # 'a' => 1 # }, # { # 'b' => 1 # }, # { # 'c' => 'x' # } # ] # } # Subtest: (tags=clause:re_keys, type, type:hash) re_keys (restrict=0) ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - valid input [2] ok 5 - valid input [3] ok 6 - invalid input [0] ok 7 - invalid input [1] ok 8 - validator (rt=full) returns hash 1..8 ok 139 - (tags=clause:re_keys, type, type:hash) re_keys (restrict=0) # { # 'input' => {}, # 'name' => 'req_keys: (ok, empty req_keys, empty keys in input)', # 'schema' => [ # 'hash', # { # 'req_keys' => [] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req_keys, type, type:hash) req_keys: (ok, empty req_keys, empty keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:req_keys, type, type:hash) req_keys: (ok, empty req_keys, empty keys in input) # { # 'input' => { # 'a' => 1 # }, # 'name' => 'req_keys: (ok, empty req_keys, extra keys in input)', # 'schema' => [ # 'hash', # { # 'req_keys' => [] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req_keys, type, type:hash) req_keys: (ok, empty req_keys, extra keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:req_keys, type, type:hash) req_keys: (ok, empty req_keys, extra keys in input) # { # 'input' => { # 'a' => 1, # 'b' => 1 # }, # 'name' => 'req_keys: (ok)', # 'schema' => [ # 'hash', # { # 'req_keys' => [ # 'a', # 'b' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req_keys, type, type:hash) req_keys: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:req_keys, type, type:hash) req_keys: (ok) # { # 'input' => { # 'a' => 1, # 'b' => 1, # 'c' => 1 # }, # 'name' => 'req_keys: (ok, extra keys in input)', # 'schema' => [ # 'hash', # { # 'req_keys' => [ # 'a', # 'b' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req_keys, type, type:hash) req_keys: (ok, extra keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:req_keys, type, type:hash) req_keys: (ok, extra keys in input) # { # 'input' => { # 'b' => 1, # 'c' => 1 # }, # 'name' => 'req_keys: (nok, missing req keys in input)', # 'schema' => [ # 'hash', # { # 'req_keys' => [ # 'a', # 'b' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:req_keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req_keys, type, type:hash) req_keys: (nok, missing req keys in input) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:req_keys, type, type:hash) req_keys: (nok, missing req keys in input) # { # 'input' => {}, # 'name' => 'allowed_keys: (ok, empty keys in input)', # 'schema' => [ # 'hash', # { # 'allowed_keys' => [ # 'a', # 'b', # 'c' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:allowed_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:allowed_keys, type, type:hash) allowed_keys: (ok, empty keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:allowed_keys, type, type:hash) allowed_keys: (ok, empty keys in input) # { # 'input' => { # 'a' => 1, # 'b' => undef # }, # 'name' => 'allowed_keys: (ok)', # 'schema' => [ # 'hash', # { # 'allowed_keys' => [ # 'a', # 'b', # 'c' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:allowed_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:allowed_keys, type, type:hash) allowed_keys: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:allowed_keys, type, type:hash) allowed_keys: (ok) # { # 'input' => { # 'a' => 1, # 'd' => undef # }, # 'name' => 'allowed_keys: (nok, keys outside allowed list)', # 'schema' => [ # 'hash', # { # 'allowed_keys' => [ # 'a', # 'b', # 'c' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:allowed_keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:allowed_keys, type, type:hash) allowed_keys: (nok, keys outside allowed list) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:allowed_keys, type, type:hash) allowed_keys: (nok, keys outside allowed list) # { # 'input' => {}, # 'name' => 'allowed_keys_re: (ok, empty keys in input)', # 'schema' => [ # 'hash', # { # 'allowed_keys_re' => '^(a|b|c)$' # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:allowed_keys_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:allowed_keys_re, type, type:hash) allowed_keys_re: (ok, empty keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:allowed_keys_re, type, type:hash) allowed_keys_re: (ok, empty keys in input) # { # 'input' => { # 'a' => 1, # 'b' => undef # }, # 'name' => 'allowed_keys_re: (ok)', # 'schema' => [ # 'hash', # { # 'allowed_keys_re' => '^(a|b|c)$' # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:allowed_keys_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:allowed_keys_re, type, type:hash) allowed_keys_re: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:allowed_keys_re, type, type:hash) allowed_keys_re: (ok) # { # 'input' => { # 'a' => 1, # 'd' => undef # }, # 'name' => 'allowed_keys_re: (nok, keys outside allowed regex)', # 'schema' => [ # 'hash', # { # 'allowed_keys_re' => '^(a|b|c)$' # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:allowed_keys_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:allowed_keys_re, type, type:hash) allowed_keys_re: (nok, keys outside allowed regex) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:allowed_keys_re, type, type:hash) allowed_keys_re: (nok, keys outside allowed regex) # { # 'input' => {}, # 'name' => 'forbidden_keys: (ok, empty keys in input)', # 'schema' => [ # 'hash', # { # 'forbidden_keys' => [ # 'a', # 'b', # 'c' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden_keys, type, type:hash) forbidden_keys: (ok, empty keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:forbidden_keys, type, type:hash) forbidden_keys: (ok, empty keys in input) # { # 'input' => { # 'd' => 1, # 'e' => undef # }, # 'name' => 'forbidden_keys: (ok)', # 'schema' => [ # 'hash', # { # 'forbidden_keys' => [ # 'a', # 'b', # 'c' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden_keys' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden_keys, type, type:hash) forbidden_keys: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:forbidden_keys, type, type:hash) forbidden_keys: (ok) # { # 'input' => { # 'a' => 1, # 'd' => undef # }, # 'name' => 'forbidden_keys: (nok, keys in forbidden list)', # 'schema' => [ # 'hash', # { # 'forbidden_keys' => [ # 'a', # 'b', # 'c' # ] # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden_keys' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden_keys, type, type:hash) forbidden_keys: (nok, keys in forbidden list) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:forbidden_keys, type, type:hash) forbidden_keys: (nok, keys in forbidden list) # { # 'input' => {}, # 'name' => 'forbidden_keys_re: (ok, empty keys in input)', # 'schema' => [ # 'hash', # { # 'forbidden_keys_re' => '^(a|b|c)$' # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden_keys_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden_keys_re, type, type:hash) forbidden_keys_re: (ok, empty keys in input) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 154 - (tags=clause:forbidden_keys_re, type, type:hash) forbidden_keys_re: (ok, empty keys in input) # { # 'input' => { # 'd' => 1, # 'e' => undef # }, # 'name' => 'forbidden_keys_re: (ok)', # 'schema' => [ # 'hash', # { # 'forbidden_keys_re' => '^(a|b|c)$' # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden_keys_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden_keys_re, type, type:hash) forbidden_keys_re: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 155 - (tags=clause:forbidden_keys_re, type, type:hash) forbidden_keys_re: (ok) # { # 'input' => { # 'a' => 1, # 'd' => undef # }, # 'name' => 'forbidden_keys_re: (nok, keys in forbidden regex)', # 'schema' => [ # 'hash', # { # 'forbidden_keys_re' => '^(a|b|c)$' # } # ], # 'tags' => [ # 'type', # 'type:hash', # 'clause:forbidden_keys_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden_keys_re, type, type:hash) forbidden_keys_re: (nok, keys in forbidden regex) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 156 - (tags=clause:forbidden_keys_re, type, type:hash) forbidden_keys_re: (nok, keys in forbidden regex) ok 157 1..157 ok 10 - 10-type-hash.json # Subtest: 10-type-int.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => -1, # 'name' => 'type check: must accept -1', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) type check: must accept -1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:int) type check: must accept -1 # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:int) type check: must accept 0 # { # 'input' => 1, # 'name' => 'type check: must accept 1', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) type check: must accept 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:int) type check: must accept 1 # { # 'input' => '1.1', # 'name' => 'type check: must reject 1.1', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:int) type check: must reject 1.1 ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:int) type check: must reject 1.1 # { # 'input' => 'a', # 'name' => 'type check: must reject a', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:int) type check: must reject a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:int) type check: must reject a # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:int) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:int) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:int) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:int) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'int', # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=type, type:int) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'int', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:int) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:defhash_v, type, type:int) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'int', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:int) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:v, type, type:int) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'int', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:int) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:c, type, type:int) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'int', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:int) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:default_lang, type, type:int) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'int', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:int) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:name, type, type:int) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'int', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:int) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:summary, type, type:int) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'int', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:int) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:description, type, type:int) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'int', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:int) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:tags, type, type:int) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'int', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:int) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:req, type, type:int) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'int', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:int) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:req, type, type:int) req=1 must reject undefined value # { # 'input' => 2, # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'int', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:int) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:forbidden, type, type:int) forbidden=0 must accept defined value # { # 'input' => 2, # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'int', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:int) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:forbidden, type, type:int) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default 1', # 'schema' => [ # 'int*', # 'default', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:int) default: must accept valid default 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:default, type, type:int) default: must accept valid default 1 # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'int*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:int) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 22 - (tags=clause:default, type, type:int) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => 2, # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'int*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:int) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 23 - (tags=clause:clause, type, type:int) clause (dies, unknown clause) # { # 'input' => 2, # 'name' => 'clause (ok)', # 'schema' => [ # 'int*', # 'clause', # [ # 'min', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:int) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clause, type, type:int) clause (ok) # { # 'input' => 2, # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'int*', # 'clause', # [ # 'min', # 1 # ], # 'xmax', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:int) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:int) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => 2, # 'name' => 'clause (nok)', # 'schema' => [ # 'int*', # 'clause', # [ # 'min', # 3 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:int) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 26 - (tags=clause:clause, type, type:int) clause (nok) # { # 'dies' => 1, # 'input' => 2, # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'int*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:int) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 27 - (tags=clause:clset, type, type:int) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => 2, # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'int*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:int) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 28 - (tags=clause:clset, type, type:int) clset (dies, unknown attr) # { # 'input' => 2, # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'int*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=type, type:int) clset (empty = ok) # { # 'input' => 2, # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'int*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:int) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=clause:clset, type, type:int) clset (ignored clause/attr = ok) # { # 'input' => 2, # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'int*', # 'clset', # { # 'max' => 2, # 'min' => 1 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:int) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:int) clset (ok + ok = ok) # { # 'input' => 2, # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'int*', # 'clset', # { # 'min' => 1 # }, # 'xmax', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:int) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:int) clset (ok) + clause nok = nok # { # 'input' => 2, # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'int*', # 'clset', # { # 'min' => 1, # 'xmax' => 2 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:int) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:int) clset (ok + nok = nok) # { # 'input' => 2, # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'int*', # 'clset', # { # 'max' => 2, # 'min' => 3 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:int) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:int) clset (nok + ok = nok) # { # 'input' => 2, # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'int*', # 'clset', # { # 'min' => 3, # 'xmax' => 2 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:int) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:clset, type, type:int) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'int', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:int) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:ok, type, type:int) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'int', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:int) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=clause:ok, op, op:not, type, type:int) ok + op not (nok) # { # 'input' => 9, # 'name' => '.err_level=error (clause=div_by, ok)', # 'schema' => [ # 'int', # 'div_by', # 3 # ], # 'tags' => [ # 'type', # 'type:int', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:int) .err_level=error (clause=div_by, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=attr, attr:err_level, type, type:int) .err_level=error (clause=div_by, ok) # { # 'input' => 8, # 'name' => '.err_level=error (clause=div_by, nok)', # 'schema' => [ # 'int', # 'div_by', # 3 # ], # 'tags' => [ # 'type', # 'type:int', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:int) .err_level=error (clause=div_by, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:int) .err_level=error (clause=div_by, nok) # { # 'input' => 9, # 'name' => '.err_level=warn (clause=div_by, ok)', # 'schema' => [ # 'int', # 'div_by', # 3, # 'div_by.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:int', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:int) .err_level=warn (clause=div_by, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:int) .err_level=warn (clause=div_by, ok) # { # 'input' => 8, # 'name' => '.err_level=warn (clause=div_by, nok)', # 'schema' => [ # 'int*', # 'div_by', # 3, # 'div_by.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:int', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:int) .err_level=warn (clause=div_by, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=attr, attr:err_level, type, type:int) .err_level=warn (clause=div_by, nok) # { # 'input' => 1, # 'name' => 'is: must accept same value', # 'schema' => [ # 'int', # 'is', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:int) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=clause:is, type, type:int) is: must accept same value # { # 'input' => 1, # 'name' => 'is: must reject different value', # 'schema' => [ # 'int', # 'is', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:int) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, type, type:int) is: must reject different value # { # 'input' => 1, # 'name' => '!is (nok)', # 'schema' => [ # 'int', # '!is', # 1 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:int) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:not, opshortcut, type, type:int) !is (nok) # { # 'input' => 1, # 'name' => '!is (ok)', # 'schema' => [ # 'int', # '!is', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:int) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, opshortcut, type, type:int) !is (ok) # { # 'input' => 1, # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'int', # 'is', # 1, # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:int) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, type, type:int) is.op=not (nok) # { # 'input' => 1, # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'int', # 'is', # 2, # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:int) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:not, type, type:int) is.op=not (ok) # { # 'input' => 1, # 'name' => 'is& (no items)', # 'schema' => [ # 'int', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (no items) # { # 'input' => 1, # 'name' => 'is& (ok)', # 'schema' => [ # 'int', # 'is&', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'int', # 'is&', # [ # 2, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (nok + ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'int', # 'is&', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'int', # 'is&', # [ # 2, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=clause:is, op, op:and, opshortcut, type, type:int) is& (nok + nok) # { # 'input' => 1, # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'int', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=type, type:int) is.op=and (no items) # { # 'input' => 1, # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'int', # 'is', # [ # 1, # 1 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:int) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:and, type, type:int) is.op=and (ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'int', # 'is', # [ # 2, # 1 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:int) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:int) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'int', # 'is', # [ # 1, # 2 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:int) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:int) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'int', # 'is', # [ # 2, # 2 # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:int) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:and, type, type:int) is.op=and (nok + nok) # { # 'input' => 1, # 'name' => 'is| (no items)', # 'schema' => [ # 'int', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (no items) # { # 'input' => 1, # 'name' => 'is| (ok)', # 'schema' => [ # 'int', # 'is|', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (ok) # { # 'input' => 1, # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'int', # 'is|', # [ # 2, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (nok + ok) # { # 'input' => 1, # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'int', # 'is|', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'int', # 'is|', # [ # 2, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, opshortcut, type, type:int) is| (nok + nok) # { # 'input' => 1, # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'int', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:int) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, type, type:int) is.op=or (no items) # { # 'input' => 1, # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'int', # 'is', # [ # 1, # 1 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:int) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:int) is.op=or (ok) # { # 'input' => 1, # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'int', # 'is', # [ # 2, # 1 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:int) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:int) is.op=or (nok + ok) # { # 'input' => 1, # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'int', # 'is', # [ # 1, # 2 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:int) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:int) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'int', # 'is', # [ # 2, # 2 # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:int) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:or, type, type:int) is.op=or (nok + nok) # { # 'input' => 1, # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'int', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:int) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:none, type, type:int) is.op=none (empty items) # { # 'input' => 1, # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'int', # 'is', # [ # 2, # 2 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:int) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:int) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'int', # 'is', # [ # 2, # 1 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:int) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:int) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'int', # 'is', # [ # 1, # 2 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:int) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:int) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'int', # 'is', # [ # 1, # 1 # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:int) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:is, op, op:none, type, type:int) is.op=none (ok + ok) # { # 'input' => 1, # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'int', # 'in', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:int) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:in, type, type:int) in: must accept valid choices # { # 'input' => 1, # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'int', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:int) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, type, type:int) in: must reject empty choices # { # 'input' => 1, # 'name' => '!in (nok)', # 'schema' => [ # 'int', # '!in', # [ # 1, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:int) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:not, opshortcut, type, type:int) !in (nok) # { # 'input' => 1, # 'name' => '!in (ok)', # 'schema' => [ # 'int', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:int) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, opshortcut, type, type:int) !in (ok) # { # 'input' => 1, # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'int', # 'in', # [ # 1, # 2 # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:int) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, type, type:int) in.op=not (nok) # { # 'input' => 1, # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'int', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:int) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:not, type, type:int) in.op=not (ok) # { # 'input' => 1, # 'name' => 'in& (no items)', # 'schema' => [ # 'int', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (no items) # { # 'input' => 1, # 'name' => 'in& (ok)', # 'schema' => [ # 'int', # 'in&', # [ # [ # 1, # 2 # ], # [ # 1, # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'int', # 'in&', # [ # [], # [ # 1, # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (nok + ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'int', # 'in&', # [ # [ # 1, # 2 # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'int', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=clause:in, op, op:and, opshortcut, type, type:int) in& (nok + nok) # { # 'input' => 1, # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'int', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=type, type:int) in.op=and (no items) # { # 'input' => 1, # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'int', # 'in', # [ # [ # 1, # 2 # ], # [ # 1, # 2 # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:int) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:and, type, type:int) in.op=and (ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'int', # 'in', # [ # [], # [ # 1, # 2 # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:int) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:int) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'int', # 'in', # [ # [ # 1, # 2 # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:int) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:int) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'int', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:int) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:and, type, type:int) in.op=and (nok + nok) # { # 'input' => 1, # 'name' => 'in| (no items)', # 'schema' => [ # 'int', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (no items) # { # 'input' => 1, # 'name' => 'in| (ok)', # 'schema' => [ # 'int', # 'in|', # [ # [ # 1, # 2 # ], # [ # 1, # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (ok) # { # 'input' => 1, # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'int', # 'in|', # [ # [], # [ # 1, # 2 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (nok + ok) # { # 'input' => 1, # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'int', # 'in|', # [ # [ # 1, # 2 # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'int', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, opshortcut, type, type:int) in| (nok + nok) # { # 'input' => 1, # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'int', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:int) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, type, type:int) in.op=or (no items) # { # 'input' => 1, # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'int', # 'in', # [ # [ # 1, # 2 # ], # [ # 1, # 2 # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:int) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:int) in.op=or (ok) # { # 'input' => 1, # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'int', # 'in', # [ # [], # [ # 1, # 2 # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:int) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:int) in.op=or (nok + ok) # { # 'input' => 1, # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'int', # 'in', # [ # [ # 1, # 2 # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:int) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:int) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'int', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:int) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:or, type, type:int) in.op=or (nok + nok) # { # 'input' => 1, # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'int', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:int) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:none, type, type:int) in.op=none (empty items) # { # 'input' => 1, # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'int', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:int) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:int) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'int', # 'in', # [ # [], # [ # 1, # 2 # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:int) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:int) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'int', # 'in', # [ # [ # 1, # 2 # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:int) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:int) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 1, # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'int', # 'in', # [ # [ # 1, # 2 # ], # [ # 1, # 2 # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:int) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:in, op, op:none, type, type:int) in.op=none (ok + ok) # { # 'input' => 2, # 'name' => 'min: 2 -3', # 'schema' => [ # 'int', # 'min', # -3 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:int) min: 2 -3 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:min, type, type:int) min: 2 -3 # { # 'input' => 2, # 'name' => 'min: 2 2', # 'schema' => [ # 'int', # 'min', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:int) min: 2 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min, type, type:int) min: 2 2 # { # 'input' => -3, # 'name' => 'min: -3 2 -> fail', # 'schema' => [ # 'int', # 'min', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:int) min: -3 2 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:min, type, type:int) min: -3 2 -> fail # { # 'input' => 2, # 'name' => 'xmin: 2 -3', # 'schema' => [ # 'int', # 'xmin', # -3 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:int) xmin: 2 -3 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:xmin, type, type:int) xmin: 2 -3 # { # 'input' => 2, # 'name' => 'xmin: 2 2 -> fail', # 'schema' => [ # 'int', # 'xmin', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:int) xmin: 2 2 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:xmin, type, type:int) xmin: 2 2 -> fail # { # 'input' => -3, # 'name' => 'xmin: -3 2 -> fail', # 'schema' => [ # 'int', # 'xmin', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:int) xmin: -3 2 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:xmin, type, type:int) xmin: -3 2 -> fail # { # 'input' => 2, # 'name' => 'max: 2 -3 -> fail', # 'schema' => [ # 'int', # 'max', # -3 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:int) max: 2 -3 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:max, type, type:int) max: 2 -3 -> fail # { # 'input' => 2, # 'name' => 'max: 2 2', # 'schema' => [ # 'int', # 'max', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:int) max: 2 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:max, type, type:int) max: 2 2 # { # 'input' => -3, # 'name' => 'max: -3 2', # 'schema' => [ # 'int', # 'max', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:int) max: -3 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:max, type, type:int) max: -3 2 # { # 'input' => 2, # 'name' => 'xmax: 2 -3 -> fail', # 'schema' => [ # 'int', # 'xmax', # -3 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:int) xmax: 2 -3 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:xmax, type, type:int) xmax: 2 -3 -> fail # { # 'input' => 2, # 'name' => 'xmax: 2 2 -> fail', # 'schema' => [ # 'int', # 'xmax', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:int) xmax: 2 2 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:xmax, type, type:int) xmax: 2 2 -> fail # { # 'input' => -3, # 'name' => 'xmax: -3 2', # 'schema' => [ # 'int', # 'xmax', # 2 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:int) xmax: -3 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:xmax, type, type:int) xmax: -3 2 # { # 'input' => 2, # 'name' => 'between: 2 -3 & 4', # 'schema' => [ # 'int', # 'between', # [ # -3, # 4 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:int) between: 2 -3 & 4 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:between, type, type:int) between: 2 -3 & 4 # { # 'input' => 2, # 'name' => 'between: 2 -3 & 2', # 'schema' => [ # 'int', # 'between', # [ # -3, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:int) between: 2 -3 & 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:between, type, type:int) between: 2 -3 & 2 # { # 'input' => 2, # 'name' => 'between: 2 2 & 2', # 'schema' => [ # 'int', # 'between', # [ # 2, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:int) between: 2 2 & 2 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:between, type, type:int) between: 2 2 & 2 # { # 'input' => -3, # 'name' => 'between: -3 2 & 4 -> fail', # 'schema' => [ # 'int', # 'between', # [ # 2, # 4 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:int) between: -3 2 & 4 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:between, type, type:int) between: -3 2 & 4 -> fail # { # 'input' => '2', # 'name' => 'xbetween: 2 -3 & 4', # 'schema' => [ # 'int', # 'xbetween', # [ # -3, # 4 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xbetween' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xbetween, type, type:int) xbetween: 2 -3 & 4 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 120 - (tags=clause:xbetween, type, type:int) xbetween: 2 -3 & 4 # { # 'input' => '2', # 'name' => 'xbetween: 2 -3 & 2 -> fail', # 'schema' => [ # 'int', # 'xbetween', # [ # -3, # '2' # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:int) xbetween: 2 -3 & 2 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:xbetween, type, type:int) xbetween: 2 -3 & 2 -> fail # { # 'input' => '2', # 'name' => 'xbetween: 2 2 & 2 -> fail', # 'schema' => [ # 'int', # 'xbetween', # [ # '2', # '2' # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:int) xbetween: 2 2 & 2 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:xbetween, type, type:int) xbetween: 2 2 & 2 -> fail # { # 'input' => -3, # 'name' => 'xbetween: -3 2 & 4 -> fail', # 'schema' => [ # 'int', # 'xbetween', # [ # '2', # '4' # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:int) xbetween: -3 2 & 4 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:xbetween, type, type:int) xbetween: -3 2 & 4 -> fail # { # 'input' => -3, # 'name' => '!between (nok)', # 'schema' => [ # 'int', # '!between', # [ # -3, # -3 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:int) !between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:between, op, op:not, opshortcut, type, type:int) !between (nok) # { # 'input' => -3, # 'name' => '!between (ok)', # 'schema' => [ # 'int', # '!between', # [ # '2', # '2' # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:int) !between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:between, op, op:not, opshortcut, type, type:int) !between (ok) # { # 'input' => -3, # 'name' => 'between.op=not (nok)', # 'schema' => [ # 'int', # 'between', # [ # -3, # -3 # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, type, type:int) between.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:between, op, op:not, type, type:int) between.op=not (nok) # { # 'input' => -3, # 'name' => 'between.op=not (ok)', # 'schema' => [ # 'int', # 'between', # [ # '2', # '2' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, type, type:int) between.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:between, op, op:not, type, type:int) between.op=not (ok) # { # 'input' => -3, # 'name' => 'between& (no items)', # 'schema' => [ # 'int', # 'between&', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (no items) # { # 'input' => -3, # 'name' => 'between& (ok)', # 'schema' => [ # 'int', # 'between&', # [ # [ # -3, # -3 # ], # [ # -3, # -3 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (ok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between& (nok + ok)', # 'schema' => [ # 'int', # 'between&', # [ # [ # '2', # '2' # ], # [ # -3, # -3 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (nok + ok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between& (ok + nok)', # 'schema' => [ # 'int', # 'between&', # [ # [ # -3, # -3 # ], # [ # '2', # '2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (ok + nok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between& (nok + nok)', # 'schema' => [ # 'int', # 'between&', # [ # [ # '2', # '2' # ], # [ # '2', # '2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=clause:between, op, op:and, opshortcut, type, type:int) between& (nok + nok) # { # 'input' => -3, # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'int', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:int) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=type, type:int) between.op=and (no items) # { # 'input' => -3, # 'name' => 'between.op=and (ok)', # 'schema' => [ # 'int', # 'between', # [ # [ # -3, # -3 # ], # [ # -3, # -3 # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, type, type:int) between.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 134 - (tags=clause:between, op, op:and, type, type:int) between.op=and (ok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=and (nok + ok)', # 'schema' => [ # 'int', # 'between', # [ # [ # '2', # '2' # ], # [ # -3, # -3 # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:int) between.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 135 - (tags=clause:between, op, op:and, type, type:int) between.op=and (nok + ok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=and (ok + nok)', # 'schema' => [ # 'int', # 'between', # [ # [ # -3, # -3 # ], # [ # '2', # '2' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:int) between.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 136 - (tags=clause:between, op, op:and, type, type:int) between.op=and (ok + nok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=and (nok + nok)', # 'schema' => [ # 'int', # 'between', # [ # [ # '2', # '2' # ], # [ # '2', # '2' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:int) between.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 137 - (tags=clause:between, op, op:and, type, type:int) between.op=and (nok + nok) # { # 'input' => -3, # 'name' => 'between| (no items)', # 'schema' => [ # 'int', # 'between|', # [] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 138 - (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (no items) # { # 'input' => -3, # 'name' => 'between| (ok)', # 'schema' => [ # 'int', # 'between|', # [ # [ # -3, # -3 # ], # [ # -3, # -3 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 139 - (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (ok) # { # 'input' => -3, # 'name' => 'between| (nok + ok)', # 'schema' => [ # 'int', # 'between|', # [ # [ # '2', # '2' # ], # [ # -3, # -3 # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (nok + ok) # { # 'input' => -3, # 'name' => 'between| (ok + nok)', # 'schema' => [ # 'int', # 'between|', # [ # [ # -3, # -3 # ], # [ # '2', # '2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (ok + nok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between| (nok + nok)', # 'schema' => [ # 'int', # 'between|', # [ # [ # '2', # '2' # ], # [ # '2', # '2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:between, op, op:or, opshortcut, type, type:int) between| (nok + nok) # { # 'input' => -3, # 'name' => 'between.op=or (no items)', # 'schema' => [ # 'int', # 'between', # [], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:int) between.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:between, op, op:or, type, type:int) between.op=or (no items) # { # 'input' => -3, # 'name' => 'between.op=or (ok)', # 'schema' => [ # 'int', # 'between', # [ # [ # -3, # -3 # ], # [ # -3, # -3 # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:int) between.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:between, op, op:or, type, type:int) between.op=or (ok) # { # 'input' => -3, # 'name' => 'between.op=or (nok + ok)', # 'schema' => [ # 'int', # 'between', # [ # [ # '2', # '2' # ], # [ # -3, # -3 # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:int) between.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:between, op, op:or, type, type:int) between.op=or (nok + ok) # { # 'input' => -3, # 'name' => 'between.op=or (ok + nok)', # 'schema' => [ # 'int', # 'between', # [ # [ # -3, # -3 # ], # [ # '2', # '2' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:int) between.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:between, op, op:or, type, type:int) between.op=or (ok + nok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=or (nok + nok)', # 'schema' => [ # 'int', # 'between', # [ # [ # '2', # '2' # ], # [ # '2', # '2' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, type, type:int) between.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:between, op, op:or, type, type:int) between.op=or (nok + nok) # { # 'input' => -3, # 'name' => 'between.op=none (empty items)', # 'schema' => [ # 'int', # 'between', # [], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:int) between.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:between, op, op:none, type, type:int) between.op=none (empty items) # { # 'input' => -3, # 'name' => 'between.op=none (nok + nok)', # 'schema' => [ # 'int', # 'between', # [ # [ # '2', # '2' # ], # [ # '2', # '2' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:int) between.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:between, op, op:none, type, type:int) between.op=none (nok + nok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=none (nok + ok)', # 'schema' => [ # 'int', # 'between', # [ # [ # '2', # '2' # ], # [ # -3, # -3 # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:int) between.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:between, op, op:none, type, type:int) between.op=none (nok + ok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=none (ok + nok)', # 'schema' => [ # 'int', # 'between', # [ # [ # -3, # -3 # ], # [ # '2', # '2' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:int) between.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:between, op, op:none, type, type:int) between.op=none (ok + nok) # { # 'errors' => 1, # 'input' => -3, # 'name' => 'between.op=none (ok + ok)', # 'schema' => [ # 'int', # 'between', # [ # [ # -3, # -3 # ], # [ # -3, # -3 # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:int) between.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:between, op, op:none, type, type:int) between.op=none (ok + ok) # { # 'input' => 10, # 'name' => 'mod: (nok)', # 'schema' => [ # 'int', # 'mod', # [ # 3, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:mod' # ], # 'valid' => 0 # } # Subtest: (tags=clause:mod, type, type:int) mod: (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:mod, type, type:int) mod: (nok) # { # 'input' => 11, # 'name' => 'mod: (ok)', # 'schema' => [ # 'int', # 'mod', # [ # 3, # 2 # ] # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:mod' # ], # 'valid' => 1 # } # Subtest: (tags=clause:mod, type, type:int) mod: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 154 - (tags=clause:mod, type, type:int) mod: (ok) # { # 'input' => 7, # 'name' => 'div_by: (nok)', # 'schema' => [ # 'int', # 'div_by', # 3 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:div_by' # ], # 'valid' => 0 # } # Subtest: (tags=clause:div_by, type, type:int) div_by: (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 155 - (tags=clause:div_by, type, type:int) div_by: (nok) # { # 'input' => 6, # 'name' => 'div_by: (ok)', # 'schema' => [ # 'int', # 'div_by', # 3 # ], # 'tags' => [ # 'type', # 'type:int', # 'clause:div_by' # ], # 'valid' => 1 # } # Subtest: (tags=clause:div_by, type, type:int) div_by: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 156 - (tags=clause:div_by, type, type:int) div_by: (ok) ok 157 1..157 ok 11 - 10-type-int.json # Subtest: 10-type-num.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => '-1.1', # 'name' => 'type check: must accept -1.1', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) type check: must accept -1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:num) type check: must accept -1.1 # { # 'input' => -1, # 'name' => 'type check: must accept -1', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) type check: must accept -1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:num) type check: must accept -1 # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:num) type check: must accept 0 # { # 'input' => 1, # 'name' => 'type check: must accept 1', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) type check: must accept 1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:num) type check: must accept 1 # { # 'input' => '1.1', # 'name' => 'type check: must accept 1.1', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) type check: must accept 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:num) type check: must accept 1.1 # { # 'input' => 'a', # 'name' => 'type check: must reject a', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:num) type check: must reject a ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:num) type check: must reject a # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:num) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:num) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:num) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=type, type:num) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'num', # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=type, type:num) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'num', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:num) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:defhash_v, type, type:num) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'num', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:num) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:v, type, type:num) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'num', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:num) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:c, type, type:num) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'num', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:num) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:default_lang, type, type:num) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'num', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:num) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:name, type, type:num) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'num', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:num) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:summary, type, type:num) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'num', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:num) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:description, type, type:num) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'num', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:num) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:tags, type, type:num) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'num', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:num) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:req, type, type:num) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'num', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:num) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:req, type, type:num) req=1 must reject undefined value # { # 'input' => '1.1', # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'num', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:num) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:forbidden, type, type:num) forbidden=0 must accept defined value # { # 'input' => '1.1', # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'num', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:num) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:forbidden, type, type:num) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default 1.1', # 'schema' => [ # 'num*', # 'default', # '1.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:num) default: must accept valid default 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 22 - (tags=clause:default, type, type:num) default: must accept valid default 1.1 # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'num*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:num) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:default, type, type:num) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => '1.1', # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'num*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:num) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 24 - (tags=clause:clause, type, type:num) clause (dies, unknown clause) # { # 'input' => '1.1', # 'name' => 'clause (ok)', # 'schema' => [ # 'num*', # 'clause', # [ # 'min', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:num) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:num) clause (ok) # { # 'input' => '1.1', # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'num*', # 'clause', # [ # 'min', # 1 # ], # 'max', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:num) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 26 - (tags=clause:clause, type, type:num) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'clause (nok)', # 'schema' => [ # 'num*', # 'clause', # [ # 'min', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:num) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 27 - (tags=clause:clause, type, type:num) clause (nok) # { # 'dies' => 1, # 'input' => '1.1', # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'num*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:num) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 28 - (tags=clause:clset, type, type:num) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => '1.1', # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'num*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:num) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 29 - (tags=clause:clset, type, type:num) clset (dies, unknown attr) # { # 'input' => '1.1', # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'num*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=type, type:num) clset (empty = ok) # { # 'input' => '1.1', # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'num*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:num) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:num) clset (ignored clause/attr = ok) # { # 'input' => '1.1', # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'num*', # 'clset', # { # 'max' => '1.1', # 'min' => 1 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:num) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:num) clset (ok + ok = ok) # { # 'input' => '1.1', # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'num*', # 'clset', # { # 'min' => 1 # }, # 'max', # 1 # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:num) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:num) clset (ok) + clause nok = nok # { # 'input' => '1.1', # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'num*', # 'clset', # { # 'max' => 1, # 'min' => 1 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:num) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:num) clset (ok + nok = nok) # { # 'input' => '1.1', # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'num*', # 'clset', # { # 'max' => '1.1', # 'min' => 2 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:num) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:clset, type, type:num) clset (nok + ok = nok) # { # 'input' => '1.1', # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'num*', # 'clset', # { # 'max' => 1, # 'min' => 2 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:num) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:clset, type, type:num) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'num', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:num) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=clause:ok, type, type:num) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'num', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:num) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=clause:ok, op, op:not, type, type:num) ok + op not (nok) # { # 'input' => '0.1', # 'name' => '.err_level=error (clause=min, ok)', # 'schema' => [ # 'num', # 'min', # 0 # ], # 'tags' => [ # 'type', # 'type:num', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:num) .err_level=error (clause=min, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:num) .err_level=error (clause=min, ok) # { # 'input' => '-0.1', # 'name' => '.err_level=error (clause=min, nok)', # 'schema' => [ # 'num', # 'min', # 0 # ], # 'tags' => [ # 'type', # 'type:num', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:num) .err_level=error (clause=min, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:num) .err_level=error (clause=min, nok) # { # 'input' => '0.1', # 'name' => '.err_level=warn (clause=min, ok)', # 'schema' => [ # 'num', # 'min', # 0, # 'min.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:num', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:num) .err_level=warn (clause=min, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=attr, attr:err_level, type, type:num) .err_level=warn (clause=min, ok) # { # 'input' => '-0.1', # 'name' => '.err_level=warn (clause=min, nok)', # 'schema' => [ # 'num*', # 'min', # 0, # 'min.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:num', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:num) .err_level=warn (clause=min, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=attr, attr:err_level, type, type:num) .err_level=warn (clause=min, nok) # { # 'input' => '1.1', # 'name' => 'is: must accept same value', # 'schema' => [ # 'num', # 'is', # '1.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:num) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, type, type:num) is: must accept same value # { # 'input' => '1.1', # 'name' => 'is: must reject different value', # 'schema' => [ # 'num', # 'is', # '1.2' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:num) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, type, type:num) is: must reject different value # { # 'input' => '1.1', # 'name' => '!is (nok)', # 'schema' => [ # 'num', # '!is', # '1.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:num) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, opshortcut, type, type:num) !is (nok) # { # 'input' => '1.1', # 'name' => '!is (ok)', # 'schema' => [ # 'num', # '!is', # '1.2' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:num) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, opshortcut, type, type:num) !is (ok) # { # 'input' => '1.1', # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'num', # 'is', # '1.1', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:num) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:not, type, type:num) is.op=not (nok) # { # 'input' => '1.1', # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'num', # 'is', # '1.2', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:num) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:not, type, type:num) is.op=not (ok) # { # 'input' => '1.1', # 'name' => 'is& (no items)', # 'schema' => [ # 'num', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (no items) # { # 'input' => '1.1', # 'name' => 'is& (ok)', # 'schema' => [ # 'num', # 'is&', # [ # '1.1', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'num', # 'is&', # [ # '1.2', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'num', # 'is&', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'num', # 'is&', # [ # '1.2', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, opshortcut, type, type:num) is& (nok + nok) # { # 'input' => '1.1', # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'num', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=type, type:num) is.op=and (no items) # { # 'input' => '1.1', # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'num', # 'is', # [ # '1.1', # '1.1' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:num) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:num) is.op=and (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'num', # 'is', # [ # '1.2', # '1.1' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:num) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:num) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'num', # 'is', # [ # '1.1', # '1.2' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:num) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:and, type, type:num) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'num', # 'is', # [ # '1.2', # '1.2' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:num) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:and, type, type:num) is.op=and (nok + nok) # { # 'input' => '1.1', # 'name' => 'is| (no items)', # 'schema' => [ # 'num', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (no items) # { # 'input' => '1.1', # 'name' => 'is| (ok)', # 'schema' => [ # 'num', # 'is|', # [ # '1.1', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (ok) # { # 'input' => '1.1', # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'num', # 'is|', # [ # '1.2', # '1.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (nok + ok) # { # 'input' => '1.1', # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'num', # 'is|', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'num', # 'is|', # [ # '1.2', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, opshortcut, type, type:num) is| (nok + nok) # { # 'input' => '1.1', # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'num', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:num) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:num) is.op=or (no items) # { # 'input' => '1.1', # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'num', # 'is', # [ # '1.1', # '1.1' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:num) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:num) is.op=or (ok) # { # 'input' => '1.1', # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'num', # 'is', # [ # '1.2', # '1.1' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:num) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:num) is.op=or (nok + ok) # { # 'input' => '1.1', # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'num', # 'is', # [ # '1.1', # '1.2' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:num) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:or, type, type:num) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'num', # 'is', # [ # '1.2', # '1.2' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:num) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:or, type, type:num) is.op=or (nok + nok) # { # 'input' => '1.1', # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'num', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:num) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:num) is.op=none (empty items) # { # 'input' => '1.1', # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'num', # 'is', # [ # '1.2', # '1.2' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:num) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:num) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'num', # 'is', # [ # '1.2', # '1.1' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:num) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:num) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'num', # 'is', # [ # '1.1', # '1.2' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:num) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:is, op, op:none, type, type:num) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'num', # 'is', # [ # '1.1', # '1.1' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:num) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:is, op, op:none, type, type:num) is.op=none (ok + ok) # { # 'input' => '1.1', # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'num', # 'in', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:num) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, type, type:num) in: must accept valid choices # { # 'input' => '1.1', # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'num', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:num) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, type, type:num) in: must reject empty choices # { # 'input' => '1.1', # 'name' => '!in (nok)', # 'schema' => [ # 'num', # '!in', # [ # '1.1', # '1.2' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:num) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, opshortcut, type, type:num) !in (nok) # { # 'input' => '1.1', # 'name' => '!in (ok)', # 'schema' => [ # 'num', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:num) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, opshortcut, type, type:num) !in (ok) # { # 'input' => '1.1', # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'num', # 'in', # [ # '1.1', # '1.2' # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:num) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:not, type, type:num) in.op=not (nok) # { # 'input' => '1.1', # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'num', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:num) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:not, type, type:num) in.op=not (ok) # { # 'input' => '1.1', # 'name' => 'in& (no items)', # 'schema' => [ # 'num', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (no items) # { # 'input' => '1.1', # 'name' => 'in& (ok)', # 'schema' => [ # 'num', # 'in&', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'num', # 'in&', # [ # [], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'num', # 'in&', # [ # [ # '1.1', # '1.2' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'num', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, opshortcut, type, type:num) in& (nok + nok) # { # 'input' => '1.1', # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'num', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=type, type:num) in.op=and (no items) # { # 'input' => '1.1', # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'num', # 'in', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:num) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:num) in.op=and (ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'num', # 'in', # [ # [], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:num) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:num) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'num', # 'in', # [ # [ # '1.1', # '1.2' # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:num) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:and, type, type:num) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'num', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:num) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:and, type, type:num) in.op=and (nok + nok) # { # 'input' => '1.1', # 'name' => 'in| (no items)', # 'schema' => [ # 'num', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (no items) # { # 'input' => '1.1', # 'name' => 'in| (ok)', # 'schema' => [ # 'num', # 'in|', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (ok) # { # 'input' => '1.1', # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'num', # 'in|', # [ # [], # [ # '1.1', # '1.2' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (nok + ok) # { # 'input' => '1.1', # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'num', # 'in|', # [ # [ # '1.1', # '1.2' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'num', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, opshortcut, type, type:num) in| (nok + nok) # { # 'input' => '1.1', # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'num', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:num) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:num) in.op=or (no items) # { # 'input' => '1.1', # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'num', # 'in', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:num) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:num) in.op=or (ok) # { # 'input' => '1.1', # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'num', # 'in', # [ # [], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:num) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:num) in.op=or (nok + ok) # { # 'input' => '1.1', # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'num', # 'in', # [ # [ # '1.1', # '1.2' # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:num) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:or, type, type:num) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'num', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:num) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:or, type, type:num) in.op=or (nok + nok) # { # 'input' => '1.1', # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'num', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:num) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:num) in.op=none (empty items) # { # 'input' => '1.1', # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'num', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:num) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:num) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'num', # 'in', # [ # [], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:num) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:num) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'num', # 'in', # [ # [ # '1.1', # '1.2' # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:num) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:in, op, op:none, type, type:num) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '1.1', # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'num', # 'in', # [ # [ # '1.1', # '1.2' # ], # [ # '1.1', # '1.2' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:num) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:in, op, op:none, type, type:num) in.op=none (ok + ok) # { # 'input' => '2.1', # 'name' => 'min: 2.1 -3.1', # 'schema' => [ # 'num', # 'min', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:num) min: 2.1 -3.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min, type, type:num) min: 2.1 -3.1 # { # 'input' => '2.1', # 'name' => 'min: 2.1 2.1', # 'schema' => [ # 'num', # 'min', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:num) min: 2.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:min, type, type:num) min: 2.1 2.1 # { # 'input' => '-3.1', # 'name' => 'min: -3.1 2.1 -> fail', # 'schema' => [ # 'num', # 'min', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:num) min: -3.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:min, type, type:num) min: -3.1 2.1 -> fail # { # 'input' => '2.1', # 'name' => 'xmin: 2.1 -3.1', # 'schema' => [ # 'num', # 'xmin', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:num) xmin: 2.1 -3.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:xmin, type, type:num) xmin: 2.1 -3.1 # { # 'input' => '2.1', # 'name' => 'xmin: 2.1 2.1 -> fail', # 'schema' => [ # 'num', # 'xmin', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:num) xmin: 2.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:xmin, type, type:num) xmin: 2.1 2.1 -> fail # { # 'input' => '-3.1', # 'name' => 'xmin: -3.1 2.1 -> fail', # 'schema' => [ # 'num', # 'xmin', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:num) xmin: -3.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:xmin, type, type:num) xmin: -3.1 2.1 -> fail # { # 'input' => '2.1', # 'name' => 'max: 2.1 -3.1 -> fail', # 'schema' => [ # 'num', # 'max', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:num) max: 2.1 -3.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:max, type, type:num) max: 2.1 -3.1 -> fail # { # 'input' => '2.1', # 'name' => 'max: 2.1 2.1', # 'schema' => [ # 'num', # 'max', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:num) max: 2.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:max, type, type:num) max: 2.1 2.1 # { # 'input' => '-3.1', # 'name' => 'max: -3.1 2.1', # 'schema' => [ # 'num', # 'max', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:num) max: -3.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:max, type, type:num) max: -3.1 2.1 # { # 'input' => '2.1', # 'name' => 'xmax: 2.1 -3.1 -> fail', # 'schema' => [ # 'num', # 'xmax', # '-3.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:num) xmax: 2.1 -3.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:xmax, type, type:num) xmax: 2.1 -3.1 -> fail # { # 'input' => '2.1', # 'name' => 'xmax: 2.1 2.1 -> fail', # 'schema' => [ # 'num', # 'xmax', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:num) xmax: 2.1 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:xmax, type, type:num) xmax: 2.1 2.1 -> fail # { # 'input' => '-3.1', # 'name' => 'xmax: -3.1 2.1', # 'schema' => [ # 'num', # 'xmax', # '2.1' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:num) xmax: -3.1 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:xmax, type, type:num) xmax: -3.1 2.1 # { # 'input' => '2.1', # 'name' => 'between: 2.1 -3.1 & 4.1', # 'schema' => [ # 'num', # 'between', # [ # '-3.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:num) between: 2.1 -3.1 & 4.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:between, type, type:num) between: 2.1 -3.1 & 4.1 # { # 'input' => '2.1', # 'name' => 'between: 2.1 -3.1 & 2.1', # 'schema' => [ # 'num', # 'between', # [ # '-3.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:num) between: 2.1 -3.1 & 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:between, type, type:num) between: 2.1 -3.1 & 2.1 # { # 'input' => '2.1', # 'name' => 'between: 2.1 2.1 & 2.1', # 'schema' => [ # 'num', # 'between', # [ # '2.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:num) between: 2.1 2.1 & 2.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:between, type, type:num) between: 2.1 2.1 & 2.1 # { # 'input' => '-3.1', # 'name' => 'between: -3.1 2.1 & 4.1 -> fail', # 'schema' => [ # 'num', # 'between', # [ # '2.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:num) between: -3.1 2.1 & 4.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 120 - (tags=clause:between, type, type:num) between: -3.1 2.1 & 4.1 -> fail # { # 'input' => '2.1', # 'name' => 'xbetween: 2.1 -3.1 & 4.1', # 'schema' => [ # 'num', # 'xbetween', # [ # '-3.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xbetween' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xbetween, type, type:num) xbetween: 2.1 -3.1 & 4.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:xbetween, type, type:num) xbetween: 2.1 -3.1 & 4.1 # { # 'input' => '2.1', # 'name' => 'xbetween: 2.1 -3.1 & 2.1 -> fail', # 'schema' => [ # 'num', # 'xbetween', # [ # '-3.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:num) xbetween: 2.1 -3.1 & 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:xbetween, type, type:num) xbetween: 2.1 -3.1 & 2.1 -> fail # { # 'input' => '2.1', # 'name' => 'xbetween: 2.1 2.1 & 2.1 -> fail', # 'schema' => [ # 'num', # 'xbetween', # [ # '2.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:num) xbetween: 2.1 2.1 & 2.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:xbetween, type, type:num) xbetween: 2.1 2.1 & 2.1 -> fail # { # 'input' => '-3.1', # 'name' => 'xbetween: -3.1 2.1 & 4.1 -> fail', # 'schema' => [ # 'num', # 'xbetween', # [ # '2.1', # '4.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:num) xbetween: -3.1 2.1 & 4.1 -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:xbetween, type, type:num) xbetween: -3.1 2.1 & 4.1 -> fail # { # 'input' => '-3.1', # 'name' => '!between (nok)', # 'schema' => [ # 'num', # '!between', # [ # '-3.1', # '-3.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:num) !between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:between, op, op:not, opshortcut, type, type:num) !between (nok) # { # 'input' => '-3.1', # 'name' => '!between (ok)', # 'schema' => [ # 'num', # '!between', # [ # '2.1', # '2.1' # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:num) !between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:between, op, op:not, opshortcut, type, type:num) !between (ok) # { # 'input' => '-3.1', # 'name' => 'between.op=not (nok)', # 'schema' => [ # 'num', # 'between', # [ # '-3.1', # '-3.1' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, type, type:num) between.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:between, op, op:not, type, type:num) between.op=not (nok) # { # 'input' => '-3.1', # 'name' => 'between.op=not (ok)', # 'schema' => [ # 'num', # 'between', # [ # '2.1', # '2.1' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, type, type:num) between.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:between, op, op:not, type, type:num) between.op=not (ok) # { # 'input' => '-3.1', # 'name' => 'between& (no items)', # 'schema' => [ # 'num', # 'between&', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (no items) # { # 'input' => '-3.1', # 'name' => 'between& (ok)', # 'schema' => [ # 'num', # 'between&', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between& (nok + ok)', # 'schema' => [ # 'num', # 'between&', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (nok + ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between& (ok + nok)', # 'schema' => [ # 'num', # 'between&', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between& (nok + nok)', # 'schema' => [ # 'num', # 'between&', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=clause:between, op, op:and, opshortcut, type, type:num) between& (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'num', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:num) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 134 - (tags=type, type:num) between.op=and (no items) # { # 'input' => '-3.1', # 'name' => 'between.op=and (ok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, type, type:num) between.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 135 - (tags=clause:between, op, op:and, type, type:num) between.op=and (ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=and (nok + ok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:num) between.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 136 - (tags=clause:between, op, op:and, type, type:num) between.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=and (ok + nok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:num) between.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 137 - (tags=clause:between, op, op:and, type, type:num) between.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=and (nok + nok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:num) between.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 138 - (tags=clause:between, op, op:and, type, type:num) between.op=and (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between| (no items)', # 'schema' => [ # 'num', # 'between|', # [] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 139 - (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (no items) # { # 'input' => '-3.1', # 'name' => 'between| (ok)', # 'schema' => [ # 'num', # 'between|', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (ok) # { # 'input' => '-3.1', # 'name' => 'between| (nok + ok)', # 'schema' => [ # 'num', # 'between|', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (nok + ok) # { # 'input' => '-3.1', # 'name' => 'between| (ok + nok)', # 'schema' => [ # 'num', # 'between|', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between| (nok + nok)', # 'schema' => [ # 'num', # 'between|', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ] # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:between, op, op:or, opshortcut, type, type:num) between| (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between.op=or (no items)', # 'schema' => [ # 'num', # 'between', # [], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:num) between.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:between, op, op:or, type, type:num) between.op=or (no items) # { # 'input' => '-3.1', # 'name' => 'between.op=or (ok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:num) between.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:between, op, op:or, type, type:num) between.op=or (ok) # { # 'input' => '-3.1', # 'name' => 'between.op=or (nok + ok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:num) between.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:between, op, op:or, type, type:num) between.op=or (nok + ok) # { # 'input' => '-3.1', # 'name' => 'between.op=or (ok + nok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:num) between.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:between, op, op:or, type, type:num) between.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=or (nok + nok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, type, type:num) between.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:between, op, op:or, type, type:num) between.op=or (nok + nok) # { # 'input' => '-3.1', # 'name' => 'between.op=none (empty items)', # 'schema' => [ # 'num', # 'between', # [], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:num) between.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:between, op, op:none, type, type:num) between.op=none (empty items) # { # 'input' => '-3.1', # 'name' => 'between.op=none (nok + nok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:num) between.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:between, op, op:none, type, type:num) between.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=none (nok + ok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '2.1', # '2.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:num) between.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:between, op, op:none, type, type:num) between.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=none (ok + nok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '2.1', # '2.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:num) between.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:between, op, op:none, type, type:num) between.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '-3.1', # 'name' => 'between.op=none (ok + ok)', # 'schema' => [ # 'num', # 'between', # [ # [ # '-3.1', # '-3.1' # ], # [ # '-3.1', # '-3.1' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:num', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:num) between.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:between, op, op:none, type, type:num) between.op=none (ok + ok) ok 154 1..154 ok 12 - 10-type-num.json # Subtest: 10-type-obj.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 1, # 'name' => 'can (nok)', # 'schema' => [ # 'obj', # { # 'can' => 'foo' # } # ], # 'tags' => [ # 'type', # 'type:obj', # 'clause:can' # ], # 'valid' => 0 # } # Subtest: (tags=clause:can, type, type:obj) can (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=clause:can, type, type:obj) can (nok) # { # 'input' => 1, # 'name' => 'isa (nok)', # 'schema' => [ # 'obj', # { # 'isa' => 'foo' # } # ], # 'tags' => [ # 'type', # 'type:obj', # 'clause:isa' # ], # 'valid' => 0 # } # Subtest: (tags=clause:isa, type, type:obj) isa (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=clause:isa, type, type:obj) isa (nok) ok 3 1..3 ok 13 - 10-type-obj.json # Subtest: 10-type-str.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => 0, # 'name' => 'type check: must accept 0', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) type check: must accept 0 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:str) type check: must accept 0 # { # 'input' => '1.1', # 'name' => 'type check: must accept 1.1', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) type check: must accept 1.1 ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:str) type check: must accept 1.1 # { # 'input' => '', # 'name' => 'type check: must accept ', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) type check: must accept ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 3 - (tags=type, type:str) type check: must accept # { # 'input' => 'str # ', # 'name' => 'type check: must accept str # ', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) type check: must accept str ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 4 - (tags=type, type:str) type check: must accept str # # { # 'input' => [], # 'name' => 'type check: must reject []', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:str) type check: must reject [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 5 - (tags=type, type:str) type check: must reject [] # { # 'input' => {}, # 'name' => 'type check: must reject {}', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:str) type check: must reject {} ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 6 - (tags=type, type:str) type check: must reject {} # { # 'input' => undef, # 'name' => 'must accept undefined value', # 'schema' => 'str', # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 7 - (tags=type, type:str) must accept undefined value # { # 'input' => undef, # 'name' => 'defhash_v', # 'schema' => [ # 'str', # 'defhash_v', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:defhash_v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:defhash_v, type, type:str) defhash_v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 8 - (tags=clause:defhash_v, type, type:str) defhash_v # { # 'input' => undef, # 'name' => 'v', # 'schema' => [ # 'str', # 'v', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:v' # ], # 'valid' => 1 # } # Subtest: (tags=clause:v, type, type:str) v ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 9 - (tags=clause:v, type, type:str) v # { # 'input' => undef, # 'name' => 'c', # 'schema' => [ # 'str', # 'c.foo.bar', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:c' # ], # 'valid' => 1 # } # Subtest: (tags=clause:c, type, type:str) c ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 10 - (tags=clause:c, type, type:str) c # { # 'input' => undef, # 'name' => 'default_lang', # 'schema' => [ # 'str', # 'default_lang', # 'id_ID' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:default_lang' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default_lang, type, type:str) default_lang ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 11 - (tags=clause:default_lang, type, type:str) default_lang # { # 'input' => undef, # 'name' => 'name', # 'schema' => [ # 'str', # 'name', # 'some name' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:name' # ], # 'valid' => 1 # } # Subtest: (tags=clause:name, type, type:str) name ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 12 - (tags=clause:name, type, type:str) name # { # 'input' => undef, # 'name' => 'summary', # 'schema' => [ # 'str', # 'summary', # 'some summary' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:summary' # ], # 'valid' => 1 # } # Subtest: (tags=clause:summary, type, type:str) summary ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 13 - (tags=clause:summary, type, type:str) summary # { # 'input' => undef, # 'name' => 'description', # 'schema' => [ # 'str', # 'description', # 'some description and `markdown`' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:description' # ], # 'valid' => 1 # } # Subtest: (tags=clause:description, type, type:str) description ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 14 - (tags=clause:description, type, type:str) description # { # 'input' => undef, # 'name' => 'tags', # 'schema' => [ # 'str', # 'tags', # [ # 'some', # 'tags' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:tags' # ], # 'valid' => 1 # } # Subtest: (tags=clause:tags, type, type:str) tags ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 15 - (tags=clause:tags, type, type:str) tags # { # 'input' => undef, # 'name' => 'req=0 must accept undefined value', # 'schema' => [ # 'str', # 'req', # 0 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:req' # ], # 'valid' => 1 # } # Subtest: (tags=clause:req, type, type:str) req=0 must accept undefined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 16 - (tags=clause:req, type, type:str) req=0 must accept undefined value # { # 'input' => undef, # 'name' => 'req=1 must reject undefined value', # 'schema' => [ # 'str', # 'req', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:req' # ], # 'valid' => 0 # } # Subtest: (tags=clause:req, type, type:str) req=1 must reject undefined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 17 - (tags=clause:req, type, type:str) req=1 must reject undefined value # { # 'input' => 'a', # 'name' => 'forbidden=0 must accept defined value', # 'schema' => [ # 'str', # 'forbidden', # 0 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:forbidden' # ], # 'valid' => 1 # } # Subtest: (tags=clause:forbidden, type, type:str) forbidden=0 must accept defined value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 18 - (tags=clause:forbidden, type, type:str) forbidden=0 must accept defined value # { # 'input' => 'a', # 'name' => 'forbidden=1 must reject defined value', # 'schema' => [ # 'str', # 'forbidden', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:forbidden' # ], # 'valid' => 0 # } # Subtest: (tags=clause:forbidden, type, type:str) forbidden=1 must reject defined value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 19 - (tags=clause:forbidden, type, type:str) forbidden=1 must reject defined value # { # 'input' => undef, # 'name' => 'default: must accept valid default a', # 'schema' => [ # 'str*', # 'default', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:default' # ], # 'valid' => 1 # } # Subtest: (tags=clause:default, type, type:str) default: must accept valid default a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 20 - (tags=clause:default, type, type:str) default: must accept valid default a # { # 'input' => undef, # 'name' => 'default: must reject invalid default []', # 'schema' => [ # 'str*', # 'default', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:default' # ], # 'valid' => 0 # } # Subtest: (tags=clause:default, type, type:str) default: must reject invalid default [] ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 21 - (tags=clause:default, type, type:str) default: must reject invalid default [] # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clause (dies, unknown clause)', # 'schema' => [ # 'str*', # 'clause', # [ # 'foo', # 1 # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clause' # ] # } # Subtest: (tags=clause:clause, type, type:str) clause (dies, unknown clause) ok 1 - compile error 1..1 ok 22 - (tags=clause:clause, type, type:str) clause (dies, unknown clause) # { # 'input' => 'a', # 'name' => 'clause (ok)', # 'schema' => [ # 'str*', # 'clause', # [ # 'match', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clause' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clause, type, type:str) clause (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 23 - (tags=clause:clause, type, type:str) clause (ok) # { # 'input' => 'a', # 'name' => 'clause (ok) + clause nok = nok', # 'schema' => [ # 'str*', # 'clause', # [ # 'match', # 'a' # ], # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:str) clause (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 24 - (tags=clause:clause, type, type:str) clause (ok) + clause nok = nok # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'clause (nok)', # 'schema' => [ # 'str*', # 'clause', # [ # 'match', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clause' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clause, type, type:str) clause (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 25 - (tags=clause:clause, type, type:str) clause (nok) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clset (dies, unknown clause)', # 'schema' => [ # 'str*', # 'clset', # { # 'foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:str) clset (dies, unknown clause) ok 1 - compile error 1..1 ok 26 - (tags=clause:clset, type, type:str) clset (dies, unknown clause) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'clset (dies, unknown attr)', # 'schema' => [ # 'str*', # 'clset', # { # 'min_len' => 1, # 'min_len.foo' => 1 # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ] # } # Subtest: (tags=clause:clset, type, type:str) clset (dies, unknown attr) ok 1 - compile error 1..1 ok 27 - (tags=clause:clset, type, type:str) clset (dies, unknown attr) # { # 'input' => 'a', # 'name' => 'clset (empty = ok)', # 'schema' => [ # 'str*', # 'clset', # {} # ], # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) clset (empty = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 28 - (tags=type, type:str) clset (empty = ok) # { # 'input' => 'a', # 'name' => 'clset (ignored clause/attr = ok)', # 'schema' => [ # 'str*', # 'clset', # { # '_foo' => 1, # 'foo._bar' => 2 # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:str) clset (ignored clause/attr = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 29 - (tags=clause:clset, type, type:str) clset (ignored clause/attr = ok) # { # 'input' => 'a', # 'name' => 'clset (ok + ok = ok)', # 'schema' => [ # 'str*', # 'clset', # { # 'len' => 1, # 'match' => 'a' # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ], # 'valid' => 1 # } # Subtest: (tags=clause:clset, type, type:str) clset (ok + ok = ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 30 - (tags=clause:clset, type, type:str) clset (ok + ok = ok) # { # 'input' => 'a', # 'name' => 'clset (ok) + clause nok = nok', # 'schema' => [ # 'str*', # 'clset', # { # 'match' => 'a' # }, # 'len', # 2 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:str) clset (ok) + clause nok = nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 31 - (tags=clause:clset, type, type:str) clset (ok) + clause nok = nok # { # 'input' => 'a', # 'name' => 'clset (ok + nok = nok)', # 'schema' => [ # 'str*', # 'clset', # { # 'len' => 2, # 'match' => 'a' # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:str) clset (ok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 32 - (tags=clause:clset, type, type:str) clset (ok + nok = nok) # { # 'input' => 'a', # 'name' => 'clset (nok + ok = nok)', # 'schema' => [ # 'str*', # 'clset', # { # 'len' => 1, # 'match' => 'b' # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:str) clset (nok + ok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 33 - (tags=clause:clset, type, type:str) clset (nok + ok = nok) # { # 'input' => 'a', # 'name' => 'clset (nok + nok = nok)', # 'schema' => [ # 'str*', # 'clset', # { # 'len' => 2, # 'match' => 'b' # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:clset' # ], # 'valid' => 0 # } # Subtest: (tags=clause:clset, type, type:str) clset (nok + nok = nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 34 - (tags=clause:clset, type, type:str) clset (nok + nok = nok) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'str', # { # 'ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:ok' # ], # 'valid' => 1 # } # Subtest: (tags=clause:ok, type, type:str) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 35 - (tags=clause:ok, type, type:str) ok # { # 'input' => undef, # 'name' => 'ok + op not (nok)', # 'schema' => [ # 'str', # { # '!ok' => 1 # } # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:ok', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:ok, op, op:not, type, type:str) ok + op not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 36 - (tags=clause:ok, op, op:not, type, type:str) ok + op not (nok) # { # 'input' => 'a', # 'name' => '.err_level=error (clause=is, ok)', # 'schema' => [ # 'str', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:str) .err_level=error (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 37 - (tags=attr, attr:err_level, type, type:str) .err_level=error (clause=is, ok) # { # 'input' => 'a # ', # 'name' => '.err_level=error (clause=is, nok)', # 'schema' => [ # 'str', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'attr', # 'attr:err_level' # ], # 'valid' => 0 # } # Subtest: (tags=attr, attr:err_level, type, type:str) .err_level=error (clause=is, nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 38 - (tags=attr, attr:err_level, type, type:str) .err_level=error (clause=is, nok) # { # 'input' => 'a', # 'name' => '.err_level=warn (clause=is, ok)', # 'schema' => [ # 'str', # 'is', # 'a', # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:str', # 'attr', # 'attr:err_level' # ], # 'valid' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:str) .err_level=warn (clause=is, ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 39 - (tags=attr, attr:err_level, type, type:str) .err_level=warn (clause=is, ok) # { # 'input' => 'a # ', # 'name' => '.err_level=warn (clause=is, nok)', # 'schema' => [ # 'str*', # 'is', # 'a', # 'is.err_level', # 'warn' # ], # 'tags' => [ # 'type', # 'type:str', # 'attr', # 'attr:err_level' # ], # 'valid' => 1, # 'warnings' => 1 # } # Subtest: (tags=attr, attr:err_level, type, type:str) .err_level=warn (clause=is, nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 40 - (tags=attr, attr:err_level, type, type:str) .err_level=warn (clause=is, nok) # { # 'input' => 'a', # 'name' => 'is: must accept same value', # 'schema' => [ # 'str', # 'is', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, type, type:str) is: must accept same value ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 41 - (tags=clause:is, type, type:str) is: must accept same value # { # 'input' => 'a', # 'name' => 'is: must reject different value', # 'schema' => [ # 'str', # 'is', # 'b' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, type, type:str) is: must reject different value ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 42 - (tags=clause:is, type, type:str) is: must reject different value # { # 'input' => 'a', # 'name' => '!is (nok)', # 'schema' => [ # 'str', # '!is', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:str) !is (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 43 - (tags=clause:is, op, op:not, opshortcut, type, type:str) !is (nok) # { # 'input' => 'a', # 'name' => '!is (ok)', # 'schema' => [ # 'str', # '!is', # 'b' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, opshortcut, type, type:str) !is (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 44 - (tags=clause:is, op, op:not, opshortcut, type, type:str) !is (ok) # { # 'input' => 'a', # 'name' => 'is.op=not (nok)', # 'schema' => [ # 'str', # 'is', # 'a', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:not, type, type:str) is.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 45 - (tags=clause:is, op, op:not, type, type:str) is.op=not (nok) # { # 'input' => 'a', # 'name' => 'is.op=not (ok)', # 'schema' => [ # 'str', # 'is', # 'b', # 'is.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:not, type, type:str) is.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 46 - (tags=clause:is, op, op:not, type, type:str) is.op=not (ok) # { # 'input' => 'a', # 'name' => 'is& (no items)', # 'schema' => [ # 'str', # 'is&', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 47 - (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (no items) # { # 'input' => 'a', # 'name' => 'is& (ok)', # 'schema' => [ # 'str', # 'is&', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 48 - (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (nok + ok)', # 'schema' => [ # 'str', # 'is&', # [ # 'b', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 49 - (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (ok + nok)', # 'schema' => [ # 'str', # 'is&', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 50 - (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is& (nok + nok)', # 'schema' => [ # 'str', # 'is&', # [ # 'b', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 51 - (tags=clause:is, op, op:and, opshortcut, type, type:str) is& (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=and (no items)', # 'schema' => [ # 'str', # 'is', # [], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) is.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 52 - (tags=type, type:str) is.op=and (no items) # { # 'input' => 'a', # 'name' => 'is.op=and (ok)', # 'schema' => [ # 'str', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:and, type, type:str) is.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 53 - (tags=clause:is, op, op:and, type, type:str) is.op=and (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (nok + ok)', # 'schema' => [ # 'str', # 'is', # [ # 'b', # 'a' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:str) is.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 54 - (tags=clause:is, op, op:and, type, type:str) is.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (ok + nok)', # 'schema' => [ # 'str', # 'is', # [ # 'a', # 'b' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:str) is.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 55 - (tags=clause:is, op, op:and, type, type:str) is.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=and (nok + nok)', # 'schema' => [ # 'str', # 'is', # [ # 'b', # 'b' # ], # 'is.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:and, type, type:str) is.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 56 - (tags=clause:is, op, op:and, type, type:str) is.op=and (nok + nok) # { # 'input' => 'a', # 'name' => 'is| (no items)', # 'schema' => [ # 'str', # 'is|', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 57 - (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (no items) # { # 'input' => 'a', # 'name' => 'is| (ok)', # 'schema' => [ # 'str', # 'is|', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 58 - (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (ok) # { # 'input' => 'a', # 'name' => 'is| (nok + ok)', # 'schema' => [ # 'str', # 'is|', # [ # 'b', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 59 - (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (nok + ok) # { # 'input' => 'a', # 'name' => 'is| (ok + nok)', # 'schema' => [ # 'str', # 'is|', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 60 - (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is| (nok + nok)', # 'schema' => [ # 'str', # 'is|', # [ # 'b', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 61 - (tags=clause:is, op, op:or, opshortcut, type, type:str) is| (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=or (no items)', # 'schema' => [ # 'str', # 'is', # [], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:str) is.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 62 - (tags=clause:is, op, op:or, type, type:str) is.op=or (no items) # { # 'input' => 'a', # 'name' => 'is.op=or (ok)', # 'schema' => [ # 'str', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:str) is.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 63 - (tags=clause:is, op, op:or, type, type:str) is.op=or (ok) # { # 'input' => 'a', # 'name' => 'is.op=or (nok + ok)', # 'schema' => [ # 'str', # 'is', # [ # 'b', # 'a' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:str) is.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 64 - (tags=clause:is, op, op:or, type, type:str) is.op=or (nok + ok) # { # 'input' => 'a', # 'name' => 'is.op=or (ok + nok)', # 'schema' => [ # 'str', # 'is', # [ # 'a', # 'b' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:or, type, type:str) is.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 65 - (tags=clause:is, op, op:or, type, type:str) is.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=or (nok + nok)', # 'schema' => [ # 'str', # 'is', # [ # 'b', # 'b' # ], # 'is.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:or, type, type:str) is.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 66 - (tags=clause:is, op, op:or, type, type:str) is.op=or (nok + nok) # { # 'input' => 'a', # 'name' => 'is.op=none (empty items)', # 'schema' => [ # 'str', # 'is', # [], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:str) is.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 67 - (tags=clause:is, op, op:none, type, type:str) is.op=none (empty items) # { # 'input' => 'a', # 'name' => 'is.op=none (nok + nok)', # 'schema' => [ # 'str', # 'is', # [ # 'b', # 'b' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is, op, op:none, type, type:str) is.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 68 - (tags=clause:is, op, op:none, type, type:str) is.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (nok + ok)', # 'schema' => [ # 'str', # 'is', # [ # 'b', # 'a' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:str) is.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 69 - (tags=clause:is, op, op:none, type, type:str) is.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (ok + nok)', # 'schema' => [ # 'str', # 'is', # [ # 'a', # 'b' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:str) is.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 70 - (tags=clause:is, op, op:none, type, type:str) is.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'is.op=none (ok + ok)', # 'schema' => [ # 'str', # 'is', # [ # 'a', # 'a' # ], # 'is.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is, op, op:none, type, type:str) is.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 71 - (tags=clause:is, op, op:none, type, type:str) is.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'in: must accept valid choices', # 'schema' => [ # 'str', # 'in', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, type, type:str) in: must accept valid choices ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 72 - (tags=clause:in, type, type:str) in: must accept valid choices # { # 'input' => 'a', # 'name' => 'in: must reject empty choices', # 'schema' => [ # 'str', # 'in', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, type, type:str) in: must reject empty choices ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 73 - (tags=clause:in, type, type:str) in: must reject empty choices # { # 'input' => 'a', # 'name' => '!in (nok)', # 'schema' => [ # 'str', # '!in', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:str) !in (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 74 - (tags=clause:in, op, op:not, opshortcut, type, type:str) !in (nok) # { # 'input' => 'a', # 'name' => '!in (ok)', # 'schema' => [ # 'str', # '!in', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, opshortcut, type, type:str) !in (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 75 - (tags=clause:in, op, op:not, opshortcut, type, type:str) !in (ok) # { # 'input' => 'a', # 'name' => 'in.op=not (nok)', # 'schema' => [ # 'str', # 'in', # [ # 'a', # 'b' # ], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:not, type, type:str) in.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 76 - (tags=clause:in, op, op:not, type, type:str) in.op=not (nok) # { # 'input' => 'a', # 'name' => 'in.op=not (ok)', # 'schema' => [ # 'str', # 'in', # [], # 'in.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:not, type, type:str) in.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 77 - (tags=clause:in, op, op:not, type, type:str) in.op=not (ok) # { # 'input' => 'a', # 'name' => 'in& (no items)', # 'schema' => [ # 'str', # 'in&', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 78 - (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (no items) # { # 'input' => 'a', # 'name' => 'in& (ok)', # 'schema' => [ # 'str', # 'in&', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 79 - (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (nok + ok)', # 'schema' => [ # 'str', # 'in&', # [ # [], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 80 - (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (ok + nok)', # 'schema' => [ # 'str', # 'in&', # [ # [ # 'a', # 'b' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 81 - (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in& (nok + nok)', # 'schema' => [ # 'str', # 'in&', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 82 - (tags=clause:in, op, op:and, opshortcut, type, type:str) in& (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=and (no items)', # 'schema' => [ # 'str', # 'in', # [], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) in.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 83 - (tags=type, type:str) in.op=and (no items) # { # 'input' => 'a', # 'name' => 'in.op=and (ok)', # 'schema' => [ # 'str', # 'in', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:and, type, type:str) in.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 84 - (tags=clause:in, op, op:and, type, type:str) in.op=and (ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (nok + ok)', # 'schema' => [ # 'str', # 'in', # [ # [], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:str) in.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 85 - (tags=clause:in, op, op:and, type, type:str) in.op=and (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (ok + nok)', # 'schema' => [ # 'str', # 'in', # [ # [ # 'a', # 'b' # ], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:str) in.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 86 - (tags=clause:in, op, op:and, type, type:str) in.op=and (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=and (nok + nok)', # 'schema' => [ # 'str', # 'in', # [ # [], # [] # ], # 'in.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:and, type, type:str) in.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 87 - (tags=clause:in, op, op:and, type, type:str) in.op=and (nok + nok) # { # 'input' => 'a', # 'name' => 'in| (no items)', # 'schema' => [ # 'str', # 'in|', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 88 - (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (no items) # { # 'input' => 'a', # 'name' => 'in| (ok)', # 'schema' => [ # 'str', # 'in|', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 89 - (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (ok) # { # 'input' => 'a', # 'name' => 'in| (nok + ok)', # 'schema' => [ # 'str', # 'in|', # [ # [], # [ # 'a', # 'b' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 90 - (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (nok + ok) # { # 'input' => 'a', # 'name' => 'in| (ok + nok)', # 'schema' => [ # 'str', # 'in|', # [ # [ # 'a', # 'b' # ], # [] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 91 - (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in| (nok + nok)', # 'schema' => [ # 'str', # 'in|', # [ # [], # [] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 92 - (tags=clause:in, op, op:or, opshortcut, type, type:str) in| (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=or (no items)', # 'schema' => [ # 'str', # 'in', # [], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:str) in.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 93 - (tags=clause:in, op, op:or, type, type:str) in.op=or (no items) # { # 'input' => 'a', # 'name' => 'in.op=or (ok)', # 'schema' => [ # 'str', # 'in', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:str) in.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 94 - (tags=clause:in, op, op:or, type, type:str) in.op=or (ok) # { # 'input' => 'a', # 'name' => 'in.op=or (nok + ok)', # 'schema' => [ # 'str', # 'in', # [ # [], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:str) in.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 95 - (tags=clause:in, op, op:or, type, type:str) in.op=or (nok + ok) # { # 'input' => 'a', # 'name' => 'in.op=or (ok + nok)', # 'schema' => [ # 'str', # 'in', # [ # [ # 'a', # 'b' # ], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:or, type, type:str) in.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 96 - (tags=clause:in, op, op:or, type, type:str) in.op=or (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=or (nok + nok)', # 'schema' => [ # 'str', # 'in', # [ # [], # [] # ], # 'in.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:or, type, type:str) in.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 97 - (tags=clause:in, op, op:or, type, type:str) in.op=or (nok + nok) # { # 'input' => 'a', # 'name' => 'in.op=none (empty items)', # 'schema' => [ # 'str', # 'in', # [], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:str) in.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 98 - (tags=clause:in, op, op:none, type, type:str) in.op=none (empty items) # { # 'input' => 'a', # 'name' => 'in.op=none (nok + nok)', # 'schema' => [ # 'str', # 'in', # [ # [], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:in, op, op:none, type, type:str) in.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 99 - (tags=clause:in, op, op:none, type, type:str) in.op=none (nok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (nok + ok)', # 'schema' => [ # 'str', # 'in', # [ # [], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:str) in.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 100 - (tags=clause:in, op, op:none, type, type:str) in.op=none (nok + ok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (ok + nok)', # 'schema' => [ # 'str', # 'in', # [ # [ # 'a', # 'b' # ], # [] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:str) in.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 101 - (tags=clause:in, op, op:none, type, type:str) in.op=none (ok + nok) # { # 'errors' => 1, # 'input' => 'a', # 'name' => 'in.op=none (ok + ok)', # 'schema' => [ # 'str', # 'in', # [ # [ # 'a', # 'b' # ], # [ # 'a', # 'b' # ] # ], # 'in.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:in', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:in, op, op:none, type, type:str) in.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 102 - (tags=clause:in, op, op:none, type, type:str) in.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'min: a ', # 'schema' => [ # 'str', # 'min', # '' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:str) min: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 103 - (tags=clause:min, type, type:str) min: a # { # 'input' => 'a', # 'name' => 'min: a a', # 'schema' => [ # 'str', # 'min', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:min' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min, type, type:str) min: a a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 104 - (tags=clause:min, type, type:str) min: a a # { # 'input' => '', # 'name' => 'min: a -> fail', # 'schema' => [ # 'str', # 'min', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:min' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min, type, type:str) min: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 105 - (tags=clause:min, type, type:str) min: a -> fail # { # 'input' => 'a', # 'name' => 'xmin: a ', # 'schema' => [ # 'str', # 'xmin', # '' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xmin' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmin, type, type:str) xmin: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 106 - (tags=clause:xmin, type, type:str) xmin: a # { # 'input' => 'a', # 'name' => 'xmin: a a -> fail', # 'schema' => [ # 'str', # 'xmin', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:str) xmin: a a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 107 - (tags=clause:xmin, type, type:str) xmin: a a -> fail # { # 'input' => '', # 'name' => 'xmin: a -> fail', # 'schema' => [ # 'str', # 'xmin', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xmin' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmin, type, type:str) xmin: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 108 - (tags=clause:xmin, type, type:str) xmin: a -> fail # { # 'input' => 'a', # 'name' => 'max: a -> fail', # 'schema' => [ # 'str', # 'max', # '' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:max' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max, type, type:str) max: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 109 - (tags=clause:max, type, type:str) max: a -> fail # { # 'input' => 'a', # 'name' => 'max: a a', # 'schema' => [ # 'str', # 'max', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:str) max: a a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 110 - (tags=clause:max, type, type:str) max: a a # { # 'input' => '', # 'name' => 'max: a', # 'schema' => [ # 'str', # 'max', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:max' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max, type, type:str) max: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 111 - (tags=clause:max, type, type:str) max: a # { # 'input' => 'a', # 'name' => 'xmax: a -> fail', # 'schema' => [ # 'str', # 'xmax', # '' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:str) xmax: a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 112 - (tags=clause:xmax, type, type:str) xmax: a -> fail # { # 'input' => 'a', # 'name' => 'xmax: a a -> fail', # 'schema' => [ # 'str', # 'xmax', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xmax' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xmax, type, type:str) xmax: a a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 113 - (tags=clause:xmax, type, type:str) xmax: a a -> fail # { # 'input' => '', # 'name' => 'xmax: a', # 'schema' => [ # 'str', # 'xmax', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xmax' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xmax, type, type:str) xmax: a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 114 - (tags=clause:xmax, type, type:str) xmax: a # { # 'input' => 'a', # 'name' => 'between: a & ab', # 'schema' => [ # 'str', # 'between', # [ # '', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:str) between: a & ab ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 115 - (tags=clause:between, type, type:str) between: a & ab # { # 'input' => 'a', # 'name' => 'between: a & a', # 'schema' => [ # 'str', # 'between', # [ # '', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:str) between: a & a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 116 - (tags=clause:between, type, type:str) between: a & a # { # 'input' => 'a', # 'name' => 'between: a a & a', # 'schema' => [ # 'str', # 'between', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, type, type:str) between: a a & a ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 117 - (tags=clause:between, type, type:str) between: a a & a # { # 'input' => '', # 'name' => 'between: a & ab -> fail', # 'schema' => [ # 'str', # 'between', # [ # 'a', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, type, type:str) between: a & ab -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 118 - (tags=clause:between, type, type:str) between: a & ab -> fail # { # 'input' => 'a', # 'name' => 'xbetween: a & ab', # 'schema' => [ # 'str', # 'xbetween', # [ # '', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xbetween' # ], # 'valid' => 1 # } # Subtest: (tags=clause:xbetween, type, type:str) xbetween: a & ab ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 119 - (tags=clause:xbetween, type, type:str) xbetween: a & ab # { # 'input' => 'a', # 'name' => 'xbetween: a & a -> fail', # 'schema' => [ # 'str', # 'xbetween', # [ # '', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:str) xbetween: a & a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 120 - (tags=clause:xbetween, type, type:str) xbetween: a & a -> fail # { # 'input' => 'a', # 'name' => 'xbetween: a a & a -> fail', # 'schema' => [ # 'str', # 'xbetween', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:str) xbetween: a a & a -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 121 - (tags=clause:xbetween, type, type:str) xbetween: a a & a -> fail # { # 'input' => '', # 'name' => 'xbetween: a & ab -> fail', # 'schema' => [ # 'str', # 'xbetween', # [ # 'a', # 'ab' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:xbetween' # ], # 'valid' => 0 # } # Subtest: (tags=clause:xbetween, type, type:str) xbetween: a & ab -> fail ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 122 - (tags=clause:xbetween, type, type:str) xbetween: a & ab -> fail # { # 'input' => '', # 'name' => '!between (nok)', # 'schema' => [ # 'str', # '!between', # [ # '', # '' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:str) !between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 123 - (tags=clause:between, op, op:not, opshortcut, type, type:str) !between (nok) # { # 'input' => '', # 'name' => '!between (ok)', # 'schema' => [ # 'str', # '!between', # [ # 'a', # 'a' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, opshortcut, type, type:str) !between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 124 - (tags=clause:between, op, op:not, opshortcut, type, type:str) !between (ok) # { # 'input' => '', # 'name' => 'between.op=not (nok)', # 'schema' => [ # 'str', # 'between', # [ # '', # '' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:not, type, type:str) between.op=not (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 125 - (tags=clause:between, op, op:not, type, type:str) between.op=not (nok) # { # 'input' => '', # 'name' => 'between.op=not (ok)', # 'schema' => [ # 'str', # 'between', # [ # 'a', # 'a' # ], # 'between.op', # 'not' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:not' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:not, type, type:str) between.op=not (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 126 - (tags=clause:between, op, op:not, type, type:str) between.op=not (ok) # { # 'input' => '', # 'name' => 'between& (no items)', # 'schema' => [ # 'str', # 'between&', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 127 - (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (no items) # { # 'input' => '', # 'name' => 'between& (ok)', # 'schema' => [ # 'str', # 'between&', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 128 - (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (nok + ok)', # 'schema' => [ # 'str', # 'between&', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 129 - (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (ok + nok)', # 'schema' => [ # 'str', # 'between&', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 130 - (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between& (nok + nok)', # 'schema' => [ # 'str', # 'between&', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 131 - (tags=clause:between, op, op:and, opshortcut, type, type:str) between& (nok + nok) # { # 'input' => '', # 'name' => 'between.op=and (no items)', # 'schema' => [ # 'str', # 'between', # [], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:str) between.op=and (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 132 - (tags=type, type:str) between.op=and (no items) # { # 'input' => '', # 'name' => 'between.op=and (ok)', # 'schema' => [ # 'str', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:and, type, type:str) between.op=and (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 133 - (tags=clause:between, op, op:and, type, type:str) between.op=and (ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (nok + ok)', # 'schema' => [ # 'str', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:str) between.op=and (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 134 - (tags=clause:between, op, op:and, type, type:str) between.op=and (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (ok + nok)', # 'schema' => [ # 'str', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:str) between.op=and (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 135 - (tags=clause:between, op, op:and, type, type:str) between.op=and (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=and (nok + nok)', # 'schema' => [ # 'str', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'and' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:and' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:and, type, type:str) between.op=and (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 136 - (tags=clause:between, op, op:and, type, type:str) between.op=and (nok + nok) # { # 'input' => '', # 'name' => 'between| (no items)', # 'schema' => [ # 'str', # 'between|', # [] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 137 - (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (no items) # { # 'input' => '', # 'name' => 'between| (ok)', # 'schema' => [ # 'str', # 'between|', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 138 - (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (ok) # { # 'input' => '', # 'name' => 'between| (nok + ok)', # 'schema' => [ # 'str', # 'between|', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 139 - (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (nok + ok) # { # 'input' => '', # 'name' => 'between| (ok + nok)', # 'schema' => [ # 'str', # 'between|', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 140 - (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between| (nok + nok)', # 'schema' => [ # 'str', # 'between|', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 141 - (tags=clause:between, op, op:or, opshortcut, type, type:str) between| (nok + nok) # { # 'input' => '', # 'name' => 'between.op=or (no items)', # 'schema' => [ # 'str', # 'between', # [], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:str) between.op=or (no items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 142 - (tags=clause:between, op, op:or, type, type:str) between.op=or (no items) # { # 'input' => '', # 'name' => 'between.op=or (ok)', # 'schema' => [ # 'str', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:str) between.op=or (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 143 - (tags=clause:between, op, op:or, type, type:str) between.op=or (ok) # { # 'input' => '', # 'name' => 'between.op=or (nok + ok)', # 'schema' => [ # 'str', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:str) between.op=or (nok + ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 144 - (tags=clause:between, op, op:or, type, type:str) between.op=or (nok + ok) # { # 'input' => '', # 'name' => 'between.op=or (ok + nok)', # 'schema' => [ # 'str', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:or, type, type:str) between.op=or (ok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 145 - (tags=clause:between, op, op:or, type, type:str) between.op=or (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=or (nok + nok)', # 'schema' => [ # 'str', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'or' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:or' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:or, type, type:str) between.op=or (nok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 146 - (tags=clause:between, op, op:or, type, type:str) between.op=or (nok + nok) # { # 'input' => '', # 'name' => 'between.op=none (empty items)', # 'schema' => [ # 'str', # 'between', # [], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:str) between.op=none (empty items) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 147 - (tags=clause:between, op, op:none, type, type:str) between.op=none (empty items) # { # 'input' => '', # 'name' => 'between.op=none (nok + nok)', # 'schema' => [ # 'str', # 'between', # [ # [ # 'a', # 'a' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 1 # } # Subtest: (tags=clause:between, op, op:none, type, type:str) between.op=none (nok + nok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 148 - (tags=clause:between, op, op:none, type, type:str) between.op=none (nok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (nok + ok)', # 'schema' => [ # 'str', # 'between', # [ # [ # 'a', # 'a' # ], # [ # '', # '' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:str) between.op=none (nok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 149 - (tags=clause:between, op, op:none, type, type:str) between.op=none (nok + ok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (ok + nok)', # 'schema' => [ # 'str', # 'between', # [ # [ # '', # '' # ], # [ # 'a', # 'a' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:str) between.op=none (ok + nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 150 - (tags=clause:between, op, op:none, type, type:str) between.op=none (ok + nok) # { # 'errors' => 1, # 'input' => '', # 'name' => 'between.op=none (ok + ok)', # 'schema' => [ # 'str', # 'between', # [ # [ # '', # '' # ], # [ # '', # '' # ] # ], # 'between.op', # 'none' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:between', # 'op', # 'op:none' # ], # 'valid' => 0 # } # Subtest: (tags=clause:between, op, op:none, type, type:str) between.op=none (ok + ok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 151 - (tags=clause:between, op, op:none, type, type:str) between.op=none (ok + ok) # { # 'input' => 'a', # 'name' => 'len (ok)', # 'schema' => [ # 'str', # 'len', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len, type, type:str) len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 152 - (tags=clause:len, type, type:str) len (ok) # { # 'input' => 'a', # 'name' => 'len (nok)', # 'schema' => [ # 'str', # 'len', # 3 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len, type, type:str) len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 153 - (tags=clause:len, type, type:str) len (nok) # { # 'input' => 'a', # 'name' => 'min_len (ok)', # 'schema' => [ # 'str', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:min_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:min_len, type, type:str) min_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 154 - (tags=clause:min_len, type, type:str) min_len (ok) # { # 'input' => 'a', # 'name' => 'min_len (nok)', # 'schema' => [ # 'str', # 'min_len', # 3 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:min_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:min_len, type, type:str) min_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 155 - (tags=clause:min_len, type, type:str) min_len (nok) # { # 'input' => 'a', # 'name' => 'max_len (ok)', # 'schema' => [ # 'str', # 'min_len', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:max_len' # ], # 'valid' => 1 # } # Subtest: (tags=clause:max_len, type, type:str) max_len (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 156 - (tags=clause:max_len, type, type:str) max_len (ok) # { # 'input' => 'abc', # 'name' => 'max_len (nok)', # 'schema' => [ # 'str', # 'max_len', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:max_len' # ], # 'valid' => 0 # } # Subtest: (tags=clause:max_len, type, type:str) max_len (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 157 - (tags=clause:max_len, type, type:str) max_len (nok) # { # 'input' => 'a', # 'name' => 'len_between (ok)', # 'schema' => [ # 'str', # 'len_between', # [ # 1, # 3 # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:len_between' # ], # 'valid' => 1 # } # Subtest: (tags=clause:len_between, type, type:str) len_between (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 158 - (tags=clause:len_between, type, type:str) len_between (ok) # { # 'input' => 'abc', # 'name' => 'len_between (nok)', # 'schema' => [ # 'str', # 'len_between', # [ # 1, # 1 # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:len_between' # ], # 'valid' => 0 # } # Subtest: (tags=clause:len_between, type, type:str) len_between (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 159 - (tags=clause:len_between, type, type:str) len_between (nok) # { # 'input' => 'abc', # 'name' => 'each_index (ok)', # 'schema' => [ # 'str', # 'each_index', # [ # 'int', # 'max', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:each_index' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_index, type, type:str) each_index (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 160 - (tags=clause:each_index, type, type:str) each_index (ok) # { # 'input' => 'abc', # 'name' => 'each_index (nok)', # 'schema' => [ # 'str', # 'each_index', # [ # 'int', # 'xmax', # 2 # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:each_index' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_index, type, type:str) each_index (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 161 - (tags=clause:each_index, type, type:str) each_index (nok) # { # 'input' => 'abc', # 'name' => 'each_elem (ok)', # 'schema' => [ # 'str', # 'each_elem', # 'str' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:each_elem' # ], # 'valid' => 1 # } # Subtest: (tags=clause:each_elem, type, type:str) each_elem (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 162 - (tags=clause:each_elem, type, type:str) each_elem (ok) # { # 'input' => 'abc', # 'name' => 'each_elem (nok)', # 'schema' => [ # 'str', # 'each_elem', # 'float' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:each_elem' # ], # 'valid' => 0 # } # Subtest: (tags=clause:each_elem, type, type:str) each_elem (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 163 - (tags=clause:each_elem, type, type:str) each_elem (nok) # { # 'invalid_inputs' => [ # '', # 'A', # 'c' # ], # 'name' => 'has', # 'schema' => [ # 'str', # 'has', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:has' # ], # 'valid_inputs' => [ # 'abc', # 'ac' # ] # } # Subtest: (tags=clause:has, type, type:str) has ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - invalid input [2] ok 7 - validator (rt=full) returns hash 1..7 ok 164 - (tags=clause:has, type, type:str) has # { # 'invalid_inputs' => [ # 'abc', # 'ac' # ], # 'name' => 'has + op.not', # 'schema' => [ # 'str', # '!has', # 'a' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:has', # 'op', # 'op:not', # 'opshortcut' # ], # 'valid_inputs' => [ # '', # 'A', # 'c' # ] # } # Subtest: (tags=clause:has, op, op:not, opshortcut, type, type:str) has + op.not ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - valid input [2] ok 5 - invalid input [0] ok 6 - invalid input [1] ok 7 - validator (rt=full) returns hash 1..7 ok 165 - (tags=clause:has, op, op:not, opshortcut, type, type:str) has + op.not # { # 'invalid_inputs' => [ # '', # 'A', # 'c' # ], # 'name' => 'has + op.or', # 'schema' => [ # 'str', # 'has|', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:has', # 'op', # 'op:or', # 'opshortcut' # ], # 'valid_inputs' => [ # 'abc', # 'ac' # ] # } # Subtest: (tags=clause:has, op, op:or, opshortcut, type, type:str) has + op.or ok 1 - compile success ok 2 - valid input [0] ok 3 - valid input [1] ok 4 - invalid input [0] ok 5 - invalid input [1] ok 6 - invalid input [2] ok 7 - validator (rt=full) returns hash 1..7 ok 166 - (tags=clause:has, op, op:or, opshortcut, type, type:str) has + op.or # { # 'invalid_inputs' => [ # 'ac', # '', # 'A', # 'c' # ], # 'name' => 'has + op.and', # 'schema' => [ # 'str', # 'has&', # [ # 'a', # 'b' # ] # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:has', # 'op', # 'op:and', # 'opshortcut' # ], # 'valid_inputs' => [ # 'abc' # ] # } # Subtest: (tags=clause:has, op, op:and, opshortcut, type, type:str) has + op.and ok 1 - compile success ok 2 - valid input [0] ok 3 - invalid input [0] ok 4 - invalid input [1] ok 5 - invalid input [2] ok 6 - invalid input [3] ok 7 - validator (rt=full) returns hash 1..7 ok 167 - (tags=clause:has, op, op:and, opshortcut, type, type:str) has + op.and # { # 'input' => 'a', # 'name' => 'match: (ok)', # 'schema' => [ # 'str', # 'match', # '[abc]' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:match' # ], # 'valid' => 1 # } # Subtest: (tags=clause:match, type, type:str) match: (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 168 - (tags=clause:match, type, type:str) match: (ok) # { # 'input' => 'A', # 'name' => 'match: (nok)', # 'schema' => [ # 'str', # 'match', # '[abc]' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:match' # ], # 'valid' => 0 # } # Subtest: (tags=clause:match, type, type:str) match: (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 169 - (tags=clause:match, type, type:str) match: (nok) # { # 'dies' => 1, # 'input' => 'a', # 'name' => 'match: (dies, invalid regex)', # 'schema' => [ # 'str', # 'match', # '(' # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:match' # ] # } # Subtest: (tags=clause:match, type, type:str) match: (dies, invalid regex) ok 1 - compile error 1..1 ok 170 - (tags=clause:match, type, type:str) match: (dies, invalid regex) # { # 'input' => 'a', # 'name' => 'is_re: 1 (ok)', # 'schema' => [ # 'str', # 'is_re', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_re, type, type:str) is_re: 1 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 171 - (tags=clause:is_re, type, type:str) is_re: 1 (ok) # { # 'input' => 'a(', # 'name' => 'is_re: 1 (nok)', # 'schema' => [ # 'str', # 'is_re', # 1 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_re, type, type:str) is_re: 1 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 172 - (tags=clause:is_re, type, type:str) is_re: 1 (nok) # { # 'input' => 'a(', # 'name' => 'is_re: 0 (ok)', # 'schema' => [ # 'str', # 'is_re', # 0 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is_re' # ], # 'valid' => 1 # } # Subtest: (tags=clause:is_re, type, type:str) is_re: 0 (ok) ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 173 - (tags=clause:is_re, type, type:str) is_re: 0 (ok) # { # 'input' => 'a', # 'name' => 'is_re: 0 (nok)', # 'schema' => [ # 'str', # 'is_re', # 0 # ], # 'tags' => [ # 'type', # 'type:str', # 'clause:is_re' # ], # 'valid' => 0 # } # Subtest: (tags=clause:is_re, type, type:str) is_re: 0 (nok) ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 174 - (tags=clause:is_re, type, type:str) is_re: 0 (nok) ok 175 1..175 ok 14 - 10-type-str.json # Subtest: 10-type-undef.json # Test version: v0.9.29 (generated by devscripts/gen-type-spectest on Mon Nov 25 15:43:40 2013) # { # 'input' => undef, # 'name' => 'ok', # 'schema' => [ # 'undef' # ], # 'tags' => [ # 'type', # 'type:undef' # ], # 'valid' => 1 # } # Subtest: (tags=type, type:undef) ok ok 1 - compile success ok 2 - valid (rt=bool) ok 3 - valid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 1 - (tags=type, type:undef) ok # { # 'input' => 0, # 'name' => 'nok', # 'schema' => [ # 'undef' # ], # 'tags' => [ # 'type', # 'type:undef' # ], # 'valid' => 0 # } # Subtest: (tags=type, type:undef) nok ok 1 - compile success ok 2 - invalid (rt=bool) ok 3 - invalid (rt=str) ok 4 - validator (rt=full) returns hash ok 5 - errors (rt=full) ok 6 - warnings (rt=full) 1..6 ok 2 - (tags=type, type:undef) nok ok 3 1..3 ok 15 - 10-type-undef.json 1..15 ok t/util-type.t ............. # Subtest: coerce_date ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 1..8 ok 1 - coerce_date 1..1 ok Test Summary Report ------------------- t/perl-type-float.t (Wstat: 1280 Tests: 15 Failed: 5) Failed tests: 5, 9-10, 13, 15 Non-zero exit status: 5 Files=19, Tests=183, 51 wallclock secs ( 2.83 usr + 0.13 sys = 2.95 CPU) Result: FAIL Failed 1/19 test programs. 5/183 subtests failed. NMAKE : fatal error U1077: 'C:\Perl64-5.14\bin\perl.exe' : return code '0xff' Stop. SHARYANTO/Data-Sah-0.29.tar.gz nmake test TEST_VERBOSE=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports SHARYANTO/Data-Sah-0.29.tar.gz Running make for S/SH/SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz Prepending C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'get' Has already been unwrapped into directory C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_ Prepending C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'make' CPAN.pm: Building S/SH/SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz Warning: Prerequisite 'Complete::Util => 0.12' for 'SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz' failed when processing 'SHARYANTO/Complete-Util-0.13.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited. Warning: Prerequisite 'Data::Sah => 0.18' for 'SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz' failed when processing 'SHARYANTO/Data-Sah-0.29.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited. >>> nmake Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. cp lib/Perinci/Sub/Complete.pm blib\lib\Perinci\Sub\Complete.pm SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz nmake -- OK Prepending C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib to PERL5LIB for 'test' Running make test >>> nmake test TEST_VERBOSE=1 Microsoft (R) Program Maintenance Utility Version 7.00.8882 Copyright (C) Microsoft Corp 1988-2000. All rights reserved. C:\Perl64-5.14\bin\perl.exe "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib\lib', 'blib\arch')" t/*.t # Failed test 'Perinci/Sub/Complete.pm loaded ok' # at t/00-compile.t line 37. # got: '512' # expected: '0' Can't locate Complete/Util.pm in @INC (@INC contains: C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib C:/cpanfly-5.14/var/megalib C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib C:/cpanfly-5.14/var/megalib C:/Perl64-5.14/site/lib C:/Perl64-5.14/lib .) at C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib/Perinci/Sub/Complete.pm line 11. BEGIN failed--compilation aborted at C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib/Perinci/Sub/Complete.pm line 15. Compilation failed in require at -e line 1. # Looks like you failed 1 test of 1. t/00-compile.t ............ 1..1 not ok 1 - Perinci/Sub/Complete.pm loaded ok Dubious, test returned 1 (wstat 256, 0x100) Failed 1/1 subtests t/complete_arg_elem.t ..... ok 1 1..1 ok t/complete_arg_val.t ...... ok 1 1..1 ok Can't locate Complete/Util.pm in @INC (@INC contains: C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib C:/cpanfly-5.14/var/megalib C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib C:/cpanfly-5.14/var/megalib C:/Perl64-5.14/site/lib C:/Perl64-5.14/lib .) at t/complete_cli_arg.t line 8. BEGIN failed--compilation aborted at t/complete_cli_arg.t line 8. t/complete_cli_arg.t ...... Dubious, test returned 2 (wstat 512, 0x200) No subtests run Can't locate Complete/Util.pm in @INC (@INC contains: C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib C:/cpanfly-5.14/var/megalib C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/arch C:\cpanfly-5.14\var\cpan\build\File-ShareDir-Tarball-0.2.2-bR07py/blib/lib C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/arch C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Util-0.38-3iw9wl/blib/lib C:/cpanfly-5.14/var/megalib C:/Perl64-5.14/site/lib C:/Perl64-5.14/lib .) at C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib/Perinci/Sub/Complete.pm line 11. BEGIN failed--compilation aborted at C:\cpanfly-5.14\var\cpan\build\Perinci-Sub-Complete-0.54-kMA5q_\blib\lib/Perinci/Sub/Complete.pm line 15. Compilation failed in require at t/complete_from_schema.t line 7. BEGIN failed--compilation aborted at t/complete_from_schema.t line 7. t/complete_from_schema.t .. Dubious, test returned 2 (wstat 512, 0x200) No subtests run t/release-pod-coverage.t .. skipped: these tests are for release candidate testing t/release-pod-syntax.t .... skipped: these tests are for release candidate testing t/release-rinci.t ......... skipped: these tests are for release candidate testing Test Summary Report ------------------- t/00-compile.t (Wstat: 256 Tests: 1 Failed: 1) Failed test: 1 Non-zero exit status: 1 t/complete_cli_arg.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output t/complete_from_schema.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output Files=8, Tests=3, 1 wallclock secs ( 0.06 usr + 0.02 sys = 0.08 CPU) Result: FAIL Failed 3/8 test programs. 1/3 subtests failed. NMAKE : fatal error U1077: 'C:\Perl64-5.14\bin\perl.exe' : return code '0xff' Stop. SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz 2 dependencies missing (Data::Sah,Complete::Util); additionally test harness failed nmake test TEST_VERBOSE=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports SHARYANTO/Perinci-Sub-Complete-0.54.tar.gz Finished 2014-07-18T02:16:24