@@ -209,6 +209,237 @@ public void testReverseIndexed() {
209
209
new boolean [] {true , true , false , false }, 1 , 3 , new boolean [] {true , false , true , false });
210
210
}
211
211
212
+ private static void testRotate (boolean [] input , int distance , boolean [] expectedOutput ) {
213
+ input = Arrays .copyOf (input , input .length );
214
+ Booleans .rotate (input , distance );
215
+ assertThat (input ).isEqualTo (expectedOutput );
216
+ }
217
+
218
+ private static void testRotate (
219
+ boolean [] input , int distance , int fromIndex , int toIndex , boolean [] expectedOutput ) {
220
+ input = Arrays .copyOf (input , input .length );
221
+ Booleans .rotate (input , distance , fromIndex , toIndex );
222
+ assertThat (input ).isEqualTo (expectedOutput );
223
+ }
224
+
225
+ public void testRotate () {
226
+ testRotate (new boolean [] {}, -1 , new boolean [] {});
227
+ testRotate (new boolean [] {}, 0 , new boolean [] {});
228
+ testRotate (new boolean [] {}, 1 , new boolean [] {});
229
+
230
+ testRotate (new boolean [] {true }, -2 , new boolean [] {true });
231
+ testRotate (new boolean [] {true }, -1 , new boolean [] {true });
232
+ testRotate (new boolean [] {true }, 0 , new boolean [] {true });
233
+ testRotate (new boolean [] {true }, 1 , new boolean [] {true });
234
+ testRotate (new boolean [] {true }, 2 , new boolean [] {true });
235
+
236
+ testRotate (new boolean [] {true , false }, -3 , new boolean [] {false , true });
237
+ testRotate (new boolean [] {true , false }, -1 , new boolean [] {false , true });
238
+ testRotate (new boolean [] {true , false }, -2 , new boolean [] {true , false });
239
+ testRotate (new boolean [] {true , false }, 0 , new boolean [] {true , false });
240
+ testRotate (new boolean [] {true , false }, 1 , new boolean [] {false , true });
241
+ testRotate (new boolean [] {true , false }, 2 , new boolean [] {true , false });
242
+ testRotate (new boolean [] {true , false }, 3 , new boolean [] {false , true });
243
+
244
+ testRotate (new boolean [] {true , false , true }, -5 , new boolean [] {true , true , false });
245
+ testRotate (new boolean [] {true , false , true }, -4 , new boolean [] {false , true , true });
246
+ testRotate (new boolean [] {true , false , true }, -3 , new boolean [] {true , false , true });
247
+ testRotate (new boolean [] {true , false , true }, -2 , new boolean [] {true , true , false });
248
+ testRotate (new boolean [] {true , false , true }, -1 , new boolean [] {false , true , true });
249
+ testRotate (new boolean [] {true , false , true }, 0 , new boolean [] {true , false , true });
250
+ testRotate (new boolean [] {true , false , true }, 1 , new boolean [] {true , true , false });
251
+ testRotate (new boolean [] {true , false , true }, 2 , new boolean [] {false , true , true });
252
+ testRotate (new boolean [] {true , false , true }, 3 , new boolean [] {true , false , true });
253
+ testRotate (new boolean [] {true , false , true }, 4 , new boolean [] {true , true , false });
254
+ testRotate (new boolean [] {true , false , true }, 5 , new boolean [] {false , true , true });
255
+
256
+ testRotate (
257
+ new boolean [] {true , false , true , false }, -9 , new boolean [] {false , true , false , true });
258
+ testRotate (
259
+ new boolean [] {true , false , true , false }, -5 , new boolean [] {false , true , false , true });
260
+ testRotate (
261
+ new boolean [] {true , false , true , false }, -1 , new boolean [] {false , true , false , true });
262
+ testRotate (
263
+ new boolean [] {true , false , true , false }, 0 , new boolean [] {true , false , true , false });
264
+ testRotate (
265
+ new boolean [] {true , false , true , false }, 1 , new boolean [] {false , true , false , true });
266
+ testRotate (
267
+ new boolean [] {true , false , true , false }, 5 , new boolean [] {false , true , false , true });
268
+ testRotate (
269
+ new boolean [] {true , false , true , false }, 9 , new boolean [] {false , true , false , true });
270
+
271
+ testRotate (
272
+ new boolean [] {true , false , true , false , true },
273
+ -6 ,
274
+ new boolean [] {false , true , false , true , true });
275
+ testRotate (
276
+ new boolean [] {true , false , true , false , true },
277
+ -4 ,
278
+ new boolean [] {true , true , false , true , false });
279
+ testRotate (
280
+ new boolean [] {true , false , true , false , true },
281
+ -3 ,
282
+ new boolean [] {false , true , true , false , true });
283
+ testRotate (
284
+ new boolean [] {true , false , true , false , true },
285
+ -1 ,
286
+ new boolean [] {false , true , false , true , true });
287
+ testRotate (
288
+ new boolean [] {true , false , true , false , true },
289
+ 0 ,
290
+ new boolean [] {true , false , true , false , true });
291
+ testRotate (
292
+ new boolean [] {true , false , true , false , true },
293
+ 1 ,
294
+ new boolean [] {true , true , false , true , false });
295
+ testRotate (
296
+ new boolean [] {true , false , true , false , true },
297
+ 3 ,
298
+ new boolean [] {true , false , true , true , false });
299
+ testRotate (
300
+ new boolean [] {true , false , true , false , true },
301
+ 4 ,
302
+ new boolean [] {false , true , false , true , true });
303
+ testRotate (
304
+ new boolean [] {true , false , true , false , true },
305
+ 6 ,
306
+ new boolean [] {true , true , false , true , false });
307
+ }
308
+
309
+ public void testRotateIndexed () {
310
+ testRotate (new boolean [] {}, 0 , 0 , 0 , new boolean [] {});
311
+
312
+ testRotate (new boolean [] {true }, 0 , 0 , 1 , new boolean [] {true });
313
+ testRotate (new boolean [] {true }, 1 , 0 , 1 , new boolean [] {true });
314
+ testRotate (new boolean [] {true }, 1 , 1 , 1 , new boolean [] {true });
315
+
316
+ // Rotate the central 5 elements, leaving the ends as-is
317
+ testRotate (
318
+ new boolean [] {false , true , false , true , false , true , false },
319
+ -6 ,
320
+ 1 ,
321
+ 6 ,
322
+ new boolean [] {false , false , true , false , true , true , false });
323
+ testRotate (
324
+ new boolean [] {false , true , false , true , false , true , false },
325
+ -1 ,
326
+ 1 ,
327
+ 6 ,
328
+ new boolean [] {false , false , true , false , true , true , false });
329
+ testRotate (
330
+ new boolean [] {false , true , false , true , false , true , false },
331
+ 0 ,
332
+ 1 ,
333
+ 6 ,
334
+ new boolean [] {false , true , false , true , false , true , false });
335
+ testRotate (
336
+ new boolean [] {false , true , false , true , false , true , false },
337
+ 5 ,
338
+ 1 ,
339
+ 6 ,
340
+ new boolean [] {false , true , false , true , false , true , false });
341
+ testRotate (
342
+ new boolean [] {false , true , false , true , false , true , false },
343
+ 14 ,
344
+ 1 ,
345
+ 6 ,
346
+ new boolean [] {false , false , true , false , true , true , false });
347
+
348
+ // Rotate the first three elements
349
+ testRotate (
350
+ new boolean [] {false , true , false , true , false , true , false },
351
+ -2 ,
352
+ 0 ,
353
+ 3 ,
354
+ new boolean [] {false , false , true , true , false , true , false });
355
+ testRotate (
356
+ new boolean [] {false , true , false , true , false , true , false },
357
+ -1 ,
358
+ 0 ,
359
+ 3 ,
360
+ new boolean [] {true , false , false , true , false , true , false });
361
+ testRotate (
362
+ new boolean [] {false , true , false , true , false , true , false },
363
+ 0 ,
364
+ 0 ,
365
+ 3 ,
366
+ new boolean [] {false , true , false , true , false , true , false });
367
+ testRotate (
368
+ new boolean [] {false , true , false , true , false , true , false },
369
+ 1 ,
370
+ 0 ,
371
+ 3 ,
372
+ new boolean [] {false , false , true , true , false , true , false });
373
+ testRotate (
374
+ new boolean [] {false , true , false , true , false , true , false },
375
+ 2 ,
376
+ 0 ,
377
+ 3 ,
378
+ new boolean [] {true , false , false , true , false , true , false });
379
+
380
+ // Rotate the last four elements
381
+ testRotate (
382
+ new boolean [] {false , true , false , true , false , true , false },
383
+ -6 ,
384
+ 3 ,
385
+ 7 ,
386
+ new boolean [] {false , true , false , true , false , true , false });
387
+ testRotate (
388
+ new boolean [] {false , true , false , true , false , true , false },
389
+ -5 ,
390
+ 3 ,
391
+ 7 ,
392
+ new boolean [] {false , true , false , false , true , false , true });
393
+ testRotate (
394
+ new boolean [] {false , true , false , true , false , true , false },
395
+ -4 ,
396
+ 3 ,
397
+ 7 ,
398
+ new boolean [] {false , true , false , true , false , true , false });
399
+ testRotate (
400
+ new boolean [] {false , true , false , true , false , true , false },
401
+ -3 ,
402
+ 3 ,
403
+ 7 ,
404
+ new boolean [] {false , true , false , false , true , false , true });
405
+ testRotate (
406
+ new boolean [] {false , true , false , true , false , true , false },
407
+ -2 ,
408
+ 3 ,
409
+ 7 ,
410
+ new boolean [] {false , true , false , true , false , true , false });
411
+ testRotate (
412
+ new boolean [] {false , true , false , true , false , true , false },
413
+ -1 ,
414
+ 3 ,
415
+ 7 ,
416
+ new boolean [] {false , true , false , false , true , false , true });
417
+ testRotate (
418
+ new boolean [] {false , true , false , true , false , true , false },
419
+ 0 ,
420
+ 3 ,
421
+ 7 ,
422
+ new boolean [] {false , true , false , true , false , true , false });
423
+ testRotate (
424
+ new boolean [] {false , true , false , true , false , true , false },
425
+ 1 ,
426
+ 3 ,
427
+ 7 ,
428
+ new boolean [] {false , true , false , false , true , false , true });
429
+ testRotate (
430
+ new boolean [] {false , true , false , true , false , true , false },
431
+ 2 ,
432
+ 3 ,
433
+ 7 ,
434
+ new boolean [] {false , true , false , true , false , true , false });
435
+ testRotate (
436
+ new boolean [] {false , true , false , true , false , true , false },
437
+ 3 ,
438
+ 3 ,
439
+ 7 ,
440
+ new boolean [] {false , true , false , false , true , false , true });
441
+ }
442
+
212
443
public void testToArray () {
213
444
// need explicit type parameter to avoid javac warning!?
214
445
List <Boolean > none = Arrays .<Boolean >asList ();
0 commit comments