sublist.t (4759B) - 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 Sublist qw<compare_lists>; 10 11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; }; 12 13 imported_ok qw<compare_lists> or bail_out; 14 15 for my $case (@test_cases) { 16 is( compare_lists( $case->{input} ), 17 $case->{expected}, $case->{description}, ); 18 } 19 20 done_testing; 21 22 __DATA__ 23 [ 24 { 25 "description": "empty lists", 26 "expected": "equal", 27 "input": { 28 "listOne": [], 29 "listTwo": [] 30 }, 31 "property": "sublist" 32 }, 33 { 34 "description": "empty list within non empty list", 35 "expected": "sublist", 36 "input": { 37 "listOne": [], 38 "listTwo": [ 39 1, 40 2, 41 3 42 ] 43 }, 44 "property": "sublist" 45 }, 46 { 47 "description": "non empty list contains empty list", 48 "expected": "superlist", 49 "input": { 50 "listOne": [ 51 1, 52 2, 53 3 54 ], 55 "listTwo": [] 56 }, 57 "property": "sublist" 58 }, 59 { 60 "description": "list equals itself", 61 "expected": "equal", 62 "input": { 63 "listOne": [ 64 1, 65 2, 66 3 67 ], 68 "listTwo": [ 69 1, 70 2, 71 3 72 ] 73 }, 74 "property": "sublist" 75 }, 76 { 77 "description": "different lists", 78 "expected": "unequal", 79 "input": { 80 "listOne": [ 81 1, 82 2, 83 3 84 ], 85 "listTwo": [ 86 2, 87 3, 88 4 89 ] 90 }, 91 "property": "sublist" 92 }, 93 { 94 "description": "false start", 95 "expected": "sublist", 96 "input": { 97 "listOne": [ 98 1, 99 2, 100 5 101 ], 102 "listTwo": [ 103 0, 104 1, 105 2, 106 3, 107 1, 108 2, 109 5, 110 6 111 ] 112 }, 113 "property": "sublist" 114 }, 115 { 116 "description": "consecutive", 117 "expected": "sublist", 118 "input": { 119 "listOne": [ 120 1, 121 1, 122 2 123 ], 124 "listTwo": [ 125 0, 126 1, 127 1, 128 1, 129 2, 130 1, 131 2 132 ] 133 }, 134 "property": "sublist" 135 }, 136 { 137 "description": "sublist at start", 138 "expected": "sublist", 139 "input": { 140 "listOne": [ 141 0, 142 1, 143 2 144 ], 145 "listTwo": [ 146 0, 147 1, 148 2, 149 3, 150 4, 151 5 152 ] 153 }, 154 "property": "sublist" 155 }, 156 { 157 "description": "sublist in middle", 158 "expected": "sublist", 159 "input": { 160 "listOne": [ 161 2, 162 3, 163 4 164 ], 165 "listTwo": [ 166 0, 167 1, 168 2, 169 3, 170 4, 171 5 172 ] 173 }, 174 "property": "sublist" 175 }, 176 { 177 "description": "sublist at end", 178 "expected": "sublist", 179 "input": { 180 "listOne": [ 181 3, 182 4, 183 5 184 ], 185 "listTwo": [ 186 0, 187 1, 188 2, 189 3, 190 4, 191 5 192 ] 193 }, 194 "property": "sublist" 195 }, 196 { 197 "description": "at start of superlist", 198 "expected": "superlist", 199 "input": { 200 "listOne": [ 201 0, 202 1, 203 2, 204 3, 205 4, 206 5 207 ], 208 "listTwo": [ 209 0, 210 1, 211 2 212 ] 213 }, 214 "property": "sublist" 215 }, 216 { 217 "description": "in middle of superlist", 218 "expected": "superlist", 219 "input": { 220 "listOne": [ 221 0, 222 1, 223 2, 224 3, 225 4, 226 5 227 ], 228 "listTwo": [ 229 2, 230 3 231 ] 232 }, 233 "property": "sublist" 234 }, 235 { 236 "description": "at end of superlist", 237 "expected": "superlist", 238 "input": { 239 "listOne": [ 240 0, 241 1, 242 2, 243 3, 244 4, 245 5 246 ], 247 "listTwo": [ 248 3, 249 4, 250 5 251 ] 252 }, 253 "property": "sublist" 254 }, 255 { 256 "description": "first list missing element from second list", 257 "expected": "unequal", 258 "input": { 259 "listOne": [ 260 1, 261 3 262 ], 263 "listTwo": [ 264 1, 265 2, 266 3 267 ] 268 }, 269 "property": "sublist" 270 }, 271 { 272 "description": "second list missing element from first list", 273 "expected": "unequal", 274 "input": { 275 "listOne": [ 276 1, 277 2, 278 3 279 ], 280 "listTwo": [ 281 1, 282 3 283 ] 284 }, 285 "property": "sublist" 286 }, 287 { 288 "description": "order matters to a list", 289 "expected": "unequal", 290 "input": { 291 "listOne": [ 292 1, 293 2, 294 3 295 ], 296 "listTwo": [ 297 3, 298 2, 299 1 300 ] 301 }, 302 "property": "sublist" 303 }, 304 { 305 "description": "same digits but different numbers", 306 "expected": "unequal", 307 "input": { 308 "listOne": [ 309 1, 310 0, 311 1 312 ], 313 "listTwo": [ 314 10, 315 1 316 ] 317 }, 318 "property": "sublist" 319 } 320 ]