/**
* Tests {@link ArrayOfBoolean}.
*/
public void testArraysOfBooleans() {
// This is our test subject.
final ArrayOfBoolean array = Collections.arrayOfBoolean();
// These are items to put in him.
final boolean[] items = new boolean[] {true, false, true};
// Let's put the items in him.
for (int i = 0, n = items.length; i < n; ++i) {
array.push(items[i]);
}
// Are the items in the right places?
assertEquals(items.length, array.length());
for (int i = 0, n = items.length; i < n; ++i) {
assertEquals(items[i], array.get(i));
}
// These are some more items to put in him.
final boolean[] newItems = new boolean[] {false, true, false};
// Put all these items in where the others were.
for (int i = 0, n = items.length; i < n; ++i) {
array.set(i, newItems[i]);
assertEquals(newItems[i], array.get(i));
}
// Shift our test subject to squeeze out the first item.
assertEquals(newItems[0], array.shift());
assertEquals(newItems.length - 1, array.length());
// Then Unshift.
array.unshift(newItems[0]);
assertEquals(newItems[0], array.get(0));
assertEquals(newItems.length, array.length());
// Now join them together in harmony.
assertEquals("false$true$false", array.join("$"));
assertEquals(0, array.indexOf(false));
assertTrue(array.contains(false));
assertEquals(1, array.indexOf(true));
assertTrue(array.contains(true));
final ArrayOfBoolean allTrue = Collections.arrayOfBoolean();
allTrue.push(true);
allTrue.push(true);
allTrue.push(true);
assertEquals(-1, allTrue.indexOf(false));
assertFalse(allTrue.contains(false));
final boolean[] itemsA = new boolean[] {true, false};
final boolean[] itemsB = new boolean[] {false, true};
final ArrayOfBoolean a = arrayFrom(itemsA);
final ArrayOfBoolean b = arrayFrom(itemsB);
assertSamelitude(new boolean[] {itemsA[0], itemsA[1], itemsB[0], itemsB[1]}, a.concat(b));
assertSamelitude(itemsA, a);
assertSamelitude(itemsB, b);
}