ID { abstract ID[] split();    }
@Test public void testSplit_Leaf() { ID[] zeroSplit = zero.split(); assertEquals(zero, zeroSplit[0]); assertEquals(zero, zeroSplit[1]); ID[] oneSplit = one.split(); assertEquals(oneZero, oneSplit[0]); assertEquals(zeroOne, oneSplit[1]); }
@Test public void testSplit_ZeroOne() { ID[] splitOne = one.split(); ID[] expected = new ID[] { IDs.with(zero, splitOne[0]), IDs.with(zero, splitOne[1]) }; assertArrayEquals(expected, zeroOne.split()); }
@Test public void testSplit_OneZero() { ID[] splitOne = one.split(); ID[] expected = new ID[] { IDs.with(splitOne[0], zero), IDs.with(splitOne[1], zero) }; assertArrayEquals(expected, oneZero.split()); }
@Test public void testSplit_OneOne() { ID[] expected = new ID[] { oneZero, zeroOne }; assertArrayEquals(expected, oneOne.split()); }