pascals-triangle.t (3228B) - 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 PascalsTriangle qw<pascal_rows>; 10 11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; }; 12 plan 9; 13 14 imported_ok qw<pascal_rows> or bail_out; 15 16 for my $case (@test_cases) { 17 is pascal_rows( $case->{input}{count} ), 18 join( "\n", map { join ' ', @$_ } @{ $case->{expected} } ), 19 $case->{description}; 20 } 21 22 __DATA__ 23 [ 24 { 25 "description": "zero rows", 26 "expected": [], 27 "input": { 28 "count": 0 29 }, 30 "property": "rows" 31 }, 32 { 33 "description": "single row", 34 "expected": [ 35 [ 36 1 37 ] 38 ], 39 "input": { 40 "count": 1 41 }, 42 "property": "rows" 43 }, 44 { 45 "description": "two rows", 46 "expected": [ 47 [ 48 1 49 ], 50 [ 51 1, 52 1 53 ] 54 ], 55 "input": { 56 "count": 2 57 }, 58 "property": "rows" 59 }, 60 { 61 "description": "three rows", 62 "expected": [ 63 [ 64 1 65 ], 66 [ 67 1, 68 1 69 ], 70 [ 71 1, 72 2, 73 1 74 ] 75 ], 76 "input": { 77 "count": 3 78 }, 79 "property": "rows" 80 }, 81 { 82 "description": "four rows", 83 "expected": [ 84 [ 85 1 86 ], 87 [ 88 1, 89 1 90 ], 91 [ 92 1, 93 2, 94 1 95 ], 96 [ 97 1, 98 3, 99 3, 100 1 101 ] 102 ], 103 "input": { 104 "count": 4 105 }, 106 "property": "rows" 107 }, 108 { 109 "description": "five rows", 110 "expected": [ 111 [ 112 1 113 ], 114 [ 115 1, 116 1 117 ], 118 [ 119 1, 120 2, 121 1 122 ], 123 [ 124 1, 125 3, 126 3, 127 1 128 ], 129 [ 130 1, 131 4, 132 6, 133 4, 134 1 135 ] 136 ], 137 "input": { 138 "count": 5 139 }, 140 "property": "rows" 141 }, 142 { 143 "description": "six rows", 144 "expected": [ 145 [ 146 1 147 ], 148 [ 149 1, 150 1 151 ], 152 [ 153 1, 154 2, 155 1 156 ], 157 [ 158 1, 159 3, 160 3, 161 1 162 ], 163 [ 164 1, 165 4, 166 6, 167 4, 168 1 169 ], 170 [ 171 1, 172 5, 173 10, 174 10, 175 5, 176 1 177 ] 178 ], 179 "input": { 180 "count": 6 181 }, 182 "property": "rows" 183 }, 184 { 185 "description": "ten rows", 186 "expected": [ 187 [ 188 1 189 ], 190 [ 191 1, 192 1 193 ], 194 [ 195 1, 196 2, 197 1 198 ], 199 [ 200 1, 201 3, 202 3, 203 1 204 ], 205 [ 206 1, 207 4, 208 6, 209 4, 210 1 211 ], 212 [ 213 1, 214 5, 215 10, 216 10, 217 5, 218 1 219 ], 220 [ 221 1, 222 6, 223 15, 224 20, 225 15, 226 6, 227 1 228 ], 229 [ 230 1, 231 7, 232 21, 233 35, 234 35, 235 21, 236 7, 237 1 238 ], 239 [ 240 1, 241 8, 242 28, 243 56, 244 70, 245 56, 246 28, 247 8, 248 1 249 ], 250 [ 251 1, 252 9, 253 36, 254 84, 255 126, 256 126, 257 84, 258 36, 259 9, 260 1 261 ] 262 ], 263 "input": { 264 "count": 10 265 }, 266 "property": "rows" 267 } 268 ]