secret-handshake.t (2352B) - raw
1 #!/usr/bin/env perl 2 use Test2::V0; 3 use JSON::PP; 4 use constant JSON => JSON::PP->new; 5 6 use FindBin qw<$Bin>; 7 use lib $Bin, "$Bin/local/lib/perl5"; 8 9 use SecretHandshake qw<handshake>; 10 11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; }; 12 13 imported_ok qw<handshake> or bail_out; 14 15 for my $case (@test_cases) { 16 is( handshake( $case->{input}{number} ), 17 $case->{expected}, $case->{description}, ); 18 } 19 20 done_testing; 21 22 __DATA__ 23 [ 24 { 25 "description": "wink for 1", 26 "expected": [ 27 "wink" 28 ], 29 "input": { 30 "number": 1 31 }, 32 "property": "commands" 33 }, 34 { 35 "description": "double blink for 10", 36 "expected": [ 37 "double blink" 38 ], 39 "input": { 40 "number": 2 41 }, 42 "property": "commands" 43 }, 44 { 45 "description": "close your eyes for 100", 46 "expected": [ 47 "close your eyes" 48 ], 49 "input": { 50 "number": 4 51 }, 52 "property": "commands" 53 }, 54 { 55 "description": "jump for 1000", 56 "expected": [ 57 "jump" 58 ], 59 "input": { 60 "number": 8 61 }, 62 "property": "commands" 63 }, 64 { 65 "description": "combine two actions", 66 "expected": [ 67 "wink", 68 "double blink" 69 ], 70 "input": { 71 "number": 3 72 }, 73 "property": "commands" 74 }, 75 { 76 "description": "reverse two actions", 77 "expected": [ 78 "double blink", 79 "wink" 80 ], 81 "input": { 82 "number": 19 83 }, 84 "property": "commands" 85 }, 86 { 87 "description": "reversing one action gives the same action", 88 "expected": [ 89 "jump" 90 ], 91 "input": { 92 "number": 24 93 }, 94 "property": "commands" 95 }, 96 { 97 "description": "reversing no actions still gives no actions", 98 "expected": [], 99 "input": { 100 "number": 16 101 }, 102 "property": "commands" 103 }, 104 { 105 "description": "all possible actions", 106 "expected": [ 107 "wink", 108 "double blink", 109 "close your eyes", 110 "jump" 111 ], 112 "input": { 113 "number": 15 114 }, 115 "property": "commands" 116 }, 117 { 118 "description": "reverse all possible actions", 119 "expected": [ 120 "jump", 121 "close your eyes", 122 "double blink", 123 "wink" 124 ], 125 "input": { 126 "number": 31 127 }, 128 "property": "commands" 129 }, 130 { 131 "description": "do nothing for zero", 132 "expected": [], 133 "input": { 134 "number": 0 135 }, 136 "property": "commands" 137 } 138 ]