@Test public void minMaxWrappedId() { assertThat(ItemIdComposer.MIN_WRAPPED_ID, is(signedLongMin(ItemIdComposer.BIT_WIDTH_GROUP_ID + ItemIdComposer.BIT_WIDTH_CHILD_ID))); assertThat(ItemIdComposer.MAX_WRAPPED_ID, is(signedLongMax(ItemIdComposer.BIT_WIDTH_GROUP_ID + ItemIdComposer.BIT_WIDTH_CHILD_ID))); }
@Test public void bitMasks() { assertThat( ItemIdComposer.BIT_MASK_RESERVED_SIGN_FLAG, is(genBitMask(ItemIdComposer.BIT_WIDTH_RESERVED_SIGN_FLAG, ItemIdComposer.BIT_OFFSET_RESERVED_SIGN_FLAG))); assertThat( ItemIdComposer.BIT_MASK_SEGMENT, is(genBitMask(ItemIdComposer.BIT_WIDTH_SEGMENT, ItemIdComposer.BIT_OFFSET_SEGMENT))); assertThat( ItemIdComposer.BIT_MASK_GROUP_ID, is(genBitMask(ItemIdComposer.BIT_WIDTH_GROUP_ID, ItemIdComposer.BIT_OFFSET_GROUP_ID))); assertThat( ItemIdComposer.BIT_MASK_CHILD_ID, is(genBitMask(ItemIdComposer.BIT_WIDTH_CHILD_ID, ItemIdComposer.BIT_OFFSET_CHILD_ID))); }
private static long signedLongMin(int bitWidth) { return (-1L & ~signedLongMax(bitWidth)); } }
@Test public void minMaxSegment() { assertThat(ItemIdComposer.MIN_SEGMENT, is(0)); assertThat(ItemIdComposer.MAX_SEGMENT, is(unsignedIntMax(ItemIdComposer.BIT_WIDTH_SEGMENT))); }
@Test public void composeExpandableChildId() throws Exception { // zero assertThat(ItemIdComposer.composeExpandableChildId(0L, 0L), is(0L)); // one assertThat(ItemIdComposer.composeExpandableChildId(1L, 0L), is(1L << ItemIdComposer.BIT_OFFSET_GROUP_ID)); assertThat(ItemIdComposer.composeExpandableChildId(0L, 1L), is(1L << ItemIdComposer.BIT_OFFSET_CHILD_ID)); // minus one assertThat(ItemIdComposer.composeExpandableChildId(-1L, 0L), is(ItemIdComposer.BIT_MASK_GROUP_ID)); assertThat(ItemIdComposer.composeExpandableChildId(0L, -1L), is(ItemIdComposer.BIT_MASK_CHILD_ID)); // min assertThat(ItemIdComposer.composeExpandableChildId(ItemIdComposer.MIN_GROUP_ID, 0L), is(genBitMask(1, (ItemIdComposer.BIT_WIDTH_GROUP_ID - 1) + ItemIdComposer.BIT_OFFSET_GROUP_ID))); assertThat(ItemIdComposer.composeExpandableChildId(0L, ItemIdComposer.MIN_CHILD_ID), is(genBitMask(1, (ItemIdComposer.BIT_WIDTH_CHILD_ID - 1) + ItemIdComposer.BIT_OFFSET_CHILD_ID))); // max assertThat(ItemIdComposer.composeExpandableChildId(ItemIdComposer.MAX_GROUP_ID, 0L), is(genBitMask(ItemIdComposer.BIT_WIDTH_GROUP_ID - 1, ItemIdComposer.BIT_OFFSET_GROUP_ID))); assertThat(ItemIdComposer.composeExpandableChildId(0L, ItemIdComposer.MAX_CHILD_ID), is(genBitMask(ItemIdComposer.BIT_WIDTH_CHILD_ID - 1, ItemIdComposer.BIT_OFFSET_CHILD_ID))); }
@Test public void minMaxGroupId() { assertThat(ItemIdComposer.MIN_GROUP_ID, is(signedLongMin(ItemIdComposer.BIT_WIDTH_GROUP_ID))); assertThat(ItemIdComposer.MAX_GROUP_ID, is(signedLongMax(ItemIdComposer.BIT_WIDTH_GROUP_ID))); }
@Test public void composeExpandableGroupId() throws Exception { // zero //noinspection PointlessBitwiseExpression assertThat(ItemIdComposer.composeExpandableGroupId(0L), is((0L << ItemIdComposer.BIT_OFFSET_GROUP_ID) | ItemIdComposer.BIT_MASK_CHILD_ID)); // one assertThat(ItemIdComposer.composeExpandableGroupId(1L), is((1L << ItemIdComposer.BIT_OFFSET_GROUP_ID) | ItemIdComposer.BIT_MASK_CHILD_ID)); // minus one assertThat(ItemIdComposer.composeExpandableGroupId(-1L), is(ItemIdComposer.BIT_MASK_GROUP_ID | ItemIdComposer.BIT_MASK_CHILD_ID)); // min assertThat( ItemIdComposer.composeExpandableGroupId(ItemIdComposer.MIN_GROUP_ID), is(genBitMask(1, (ItemIdComposer.BIT_WIDTH_GROUP_ID - 1) + ItemIdComposer.BIT_OFFSET_GROUP_ID) | ItemIdComposer.BIT_MASK_CHILD_ID)); // max assertThat( ItemIdComposer.composeExpandableGroupId(ItemIdComposer.MAX_GROUP_ID), is(genBitMask(ItemIdComposer.BIT_WIDTH_GROUP_ID - 1, ItemIdComposer.BIT_OFFSET_GROUP_ID) | ItemIdComposer.BIT_MASK_CHILD_ID)); }
@Test public void minMaxChildId() { assertThat(ItemIdComposer.MIN_CHILD_ID, is(signedLongMin(ItemIdComposer.BIT_WIDTH_CHILD_ID))); assertThat(ItemIdComposer.MAX_CHILD_ID, is(signedLongMax(ItemIdComposer.BIT_WIDTH_CHILD_ID))); }