| // 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 org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| 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++) { |
| assertEquals(list.get(i), i); |
| } |
| list.add(25, 42); |
| assertEquals(42, list.get(25)); |
| assertEquals(25, list.get(26)); |
| assertEquals(49, list.get(list.size() - 1)); |
| assertEquals(51, list.size()); |
| assertEquals(23, list.indexOf(23)); |
| assertEquals(29, list.indexOf(28)); |
| } |
| |
| @Test |
| public void testAddAlls() throws Exception { |
| list.addAll(new long[] {1, 2, 3, 4, 5}, 1, 3); |
| assertEquals(2, list.get(0)); |
| assertEquals(3, list.get(1)); |
| assertEquals(4, list.get(2)); |
| assertEquals(3, list.size()); |
| list.addAll(new long[] {42, 41}, 0, 2, 1); |
| assertEquals(42, list.get(1)); |
| assertEquals(41, list.get(2)); |
| assertEquals(3, list.get(3)); |
| assertEquals(4, list.get(4)); |
| assertEquals(5, list.size()); |
| LongArrayList other = new LongArrayList(new long[] {5, 6, 7}); |
| list.addAll(other, list.size()); |
| assertEquals(42, list.get(1)); |
| assertEquals(4, list.get(4)); |
| assertEquals(5, list.get(5)); |
| assertEquals(6, list.get(6)); |
| assertEquals(7, list.get(7)); |
| assertEquals(8, list.size()); |
| list.addAll(new LongArrayList()); |
| assertEquals(8, list.size()); |
| list.addAll(new long[] {}); |
| assertEquals(8, list.size()); |
| } |
| |
| @Test |
| public void testSet() throws Exception { |
| list.addAll(new long[] {1, 2, 3}); |
| list.set(1, 42); |
| assertEquals(42, list.get(1)); |
| assertEquals(3, list.size()); |
| } |
| |
| @Test |
| public void testSort() throws Exception { |
| list = new LongArrayList(new long[] {3, 2, 1}); |
| list.sort(); |
| assertEquals(1, list.get(0)); |
| assertEquals(2, list.get(1)); |
| assertEquals(3, list.get(2)); |
| list.addAll(new long[] {-5, -2}); |
| list.sort(2, 5); |
| assertEquals(-5, list.get(2)); |
| assertEquals(-2, list.get(3)); |
| assertEquals(3, list.get(4)); |
| } |
| |
| @Test |
| public void testRemoveByIndex() throws Exception { |
| int last = 32; |
| for (int i = 0; i <= last; i++) { |
| list.add(i); |
| } |
| long removed = list.remove(last); |
| assertEquals(last, removed); |
| assertEquals(last, list.size()); |
| removed = list.remove(0); |
| assertEquals(0, removed); |
| assertEquals(1, list.get(0)); |
| assertEquals(last - 1, list.get(last - 2)); |
| assertEquals(last - 1, list.size()); |
| } |
| |
| @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); |
| assertTrue(removed); |
| assertEquals(last, list.size()); |
| assertEquals(last - 1, list.get(last - 1)); |
| removed = list.remove(3L); |
| assertTrue(removed); |
| assertEquals(0, list.get(0)); |
| assertEquals(last - 1, list.get(last - 2)); |
| assertEquals(last - 1, list.size()); |
| removed = list.remove(42L); |
| assertFalse(removed); |
| assertEquals(last - 1, list.size()); |
| } |
| |
| @Test |
| public void testEnsureCapacity() throws Exception { |
| int last = 65; |
| for (int i = 0; i <= last; i++) { |
| list.add(i); |
| } |
| list.ensureCapacity(512); |
| assertEquals(last + 1, list.size()); |
| assertEquals(0, list.get(0)); |
| assertEquals(last, list.get(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); |
| } |
| } |