/* * Copyright (C) 2023, Google LLC * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.internal.storage.file; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; import org.junit.Assert; import org.junit.Test; public class UInt24ArrayTest { private static final byte[] DATA = { 0x00, 0x00, 0x00, // 0 0x00, 0x00, 0x05, // 5 0x00, 0x00, 0x0a, // 10 0x00, 0x00, 0x0f, // 15 0x00, 0x00, 0x14, // 20 0x00, 0x00, 0x19, // 25 (byte) 0xff, 0x00, 0x00, // Uint with MSB=1 (byte) 0xff, (byte) 0xff, (byte) 0xff, // MAX }; private static final UInt24Array asArray = new UInt24Array(DATA); @Test public void uInt24Array_size() { assertEquals(8, asArray.size()); } @Test public void uInt24Array_get() { assertEquals(0, asArray.get(0)); assertEquals(5, asArray.get(1)); assertEquals(10, asArray.get(2)); assertEquals(15, asArray.get(3)); assertEquals(20, asArray.get(4)); assertEquals(25, asArray.get(5)); assertEquals(0xff0000, asArray.get(6)); assertEquals(0xffffff, asArray.get(7)); assertThrows(IndexOutOfBoundsException.class, () -> asArray.get(9)); } @Test public void uInt24Array_getLastValue() { assertEquals(0xffffff, asArray.getLastValue()); } @Test public void uInt24Array_find() { assertEquals(0, asArray.binarySearch(0)); assertEquals(1, asArray.binarySearch(5)); assertEquals(2, asArray.binarySearch(10)); assertEquals(3, asArray.binarySearch(15)); assertEquals(4, asArray.binarySearch(20)); assertEquals(5, asArray.binarySearch(25)); assertEquals(6, asArray.binarySearch(0xff0000)); assertEquals(7, asArray.binarySearch(0xffffff)); assertThrows(IllegalArgumentException.class, () -> asArray.binarySearch(Integer.MAX_VALUE)); } @Test public void uInt24Array_empty() { Assert.assertTrue(UInt24Array.EMPTY.isEmpty()); assertEquals(0, UInt24Array.EMPTY.size()); assertEquals(-1, UInt24Array.EMPTY.binarySearch(1)); assertThrows(IndexOutOfBoundsException.class, () -> UInt24Array.EMPTY.getLastValue()); assertThrows(IndexOutOfBoundsException.class, () -> UInt24Array.EMPTY.get(0)); } }