// Copyright 2015 The Bazel Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.devtools.build.lib.util; import static com.google.common.truth.Truth.assertThat; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * Tests for {@link LongArrayList}. */ @RunWith(JUnit4.class) public class LongArrayListTest { private LongArrayList list; @Before public final void createList() throws Exception { list = new LongArrayList(); } @Test public void testAdds() throws Exception { for (int i = 0; i < 50; i++) { list.add(i); } for (int i = 0; i < 50; i++) { assertThat(i).isEqualTo(list.get(i)); } list.add(25, 42); assertThat(list.get(25)).isEqualTo(42); assertThat(list.get(26)).isEqualTo(25); assertThat(list.get(list.size() - 1)).isEqualTo(49); assertThat(list.size()).isEqualTo(51); assertThat(list.indexOf(23)).isEqualTo(23); assertThat(list.indexOf(28)).isEqualTo(29); } @Test public void testAddAlls() throws Exception { list.addAll(new long[] {1, 2, 3, 4, 5}, 1, 3); assertThat(list.get(0)).isEqualTo(2); assertThat(list.get(1)).isEqualTo(3); assertThat(list.get(2)).isEqualTo(4); assertThat(list.size()).isEqualTo(3); list.addAll(new long[] {42, 41}, 0, 2, 1); assertThat(list.get(1)).isEqualTo(42); assertThat(list.get(2)).isEqualTo(41); assertThat(list.get(3)).isEqualTo(3); assertThat(list.get(4)).isEqualTo(4); assertThat(list.size()).isEqualTo(5); LongArrayList other = new LongArrayList(new long[] {5, 6, 7}); list.addAll(other, list.size()); assertThat(list.get(1)).isEqualTo(42); assertThat(list.get(4)).isEqualTo(4); assertThat(list.get(5)).isEqualTo(5); assertThat(list.get(6)).isEqualTo(6); assertThat(list.get(7)).isEqualTo(7); assertThat(list.size()).isEqualTo(8); list.addAll(new LongArrayList()); assertThat(list.size()).isEqualTo(8); list.addAll(new long[] {}); assertThat(list.size()).isEqualTo(8); } @Test public void testSet() throws Exception { list.addAll(new long[] {1, 2, 3}); list.set(1, 42); assertThat(list.get(1)).isEqualTo(42); assertThat(list.size()).isEqualTo(3); } @Test public void testSort() throws Exception { list = new LongArrayList(new long[] {3, 2, 1}); list.sort(); assertThat(list.get(0)).isEqualTo(1); assertThat(list.get(1)).isEqualTo(2); assertThat(list.get(2)).isEqualTo(3); list.addAll(new long[] {-5, -2}); list.sort(2, 5); assertThat(list.get(2)).isEqualTo(-5); assertThat(list.get(3)).isEqualTo(-2); assertThat(list.get(4)).isEqualTo(3); } @Test public void testRemoveByIndex() throws Exception { int last = 32; for (int i = 0; i <= last; i++) { list.add(i); } long removed = list.remove(last); assertThat(removed).isEqualTo(last); assertThat(list.size()).isEqualTo(last); removed = list.remove(0); assertThat(removed).isEqualTo(0); assertThat(list.get(0)).isEqualTo(1); assertThat(list.get(last - 2)).isEqualTo(last - 1); assertThat(list.size()).isEqualTo(last - 1); } @Test public void testRemoveByValue() throws Exception { int last = 19; for (int i = 0; i <= last; i++) { list.add(i); } boolean removed = list.remove((long) last); assertThat(removed).isTrue(); assertThat(list.size()).isEqualTo(last); assertThat(list.get(last - 1)).isEqualTo(last - 1); removed = list.remove(3L); assertThat(removed).isTrue(); assertThat(list.get(0)).isEqualTo(0); assertThat(list.get(last - 2)).isEqualTo(last - 1); assertThat(list.size()).isEqualTo(last - 1); removed = list.remove(42L); assertThat(removed).isFalse(); assertThat(list.size()).isEqualTo(last - 1); } @Test public void testEnsureCapacity() throws Exception { int last = 65; for (int i = 0; i <= last; i++) { list.add(i); } list.ensureCapacity(512); assertThat(list.size()).isEqualTo(last + 1); assertThat(list.get(0)).isEqualTo(0); assertThat(list.get(last)).isEqualTo(last); } @Test(expected = IndexOutOfBoundsException.class) public void testRemoveExceptionEmpty() throws Exception { list.remove(0); } @Test(expected = IndexOutOfBoundsException.class) public void testRemoveExceptionFilled() throws Exception { for (int i = 0; i < 15; i++) { list.add(i); } list.remove(15); } @Test(expected = IndexOutOfBoundsException.class) public void testGetException() throws Exception { for (int i = 0; i < 15; i++) { list.add(i); } list.get(15); } }