blob: 14befff84d8fd8d5e0bb2d889b82bef89d254254 [file] [log] [blame]
// 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);
}
}