1112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi/*
2112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * Copyright (C) 2017 The Android Open Source Project
3112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi *
4112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * Licensed under the Apache License, Version 2.0 (the "License");
5112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * you may not use this file except in compliance with the License.
6112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * You may obtain a copy of the License at
7112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi *
8112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi *      http://www.apache.org/licenses/LICENSE-2.0
9112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi *
10112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * Unless required by applicable law or agreed to in writing, software
11112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * distributed under the License is distributed on an "AS IS" BASIS,
12112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * See the License for the specific language governing permissions and
14112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi * limitations under the License.
15112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi */
16112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
17112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichipackage android.util;
18112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
19112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichiimport static org.junit.Assert.assertArrayEquals;
20112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichiimport static org.junit.Assert.assertEquals;
21112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
22112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichiimport android.support.test.filters.SmallTest;
23112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichiimport android.support.test.runner.AndroidJUnit4;
24112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichiimport org.junit.Test;
25112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichiimport org.junit.runner.RunWith;
26112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
27112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi@RunWith(AndroidJUnit4.class)
28112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi@SmallTest
29112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichipublic class LongArrayTest {
30112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
31112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi    @Test
32112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi    public void testLongArray() {
33112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        LongArray a = new LongArray();
34112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.add(1);
35112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.add(2);
36112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.add(3);
37112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2, 3}, a);
38112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
39112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        LongArray b = LongArray.fromArray(new long[]{4, 5, 6, 7, 8}, 3);
40112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.addAll(b);
41112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2, 3, 4, 5, 6}, a);
42112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
43112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.resize(2);
44112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2}, a);
45112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
46112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.resize(8);
47112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2, 0, 0, 0, 0, 0, 0}, a);
48112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
49112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.set(5, 10);
50112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2, 0, 0, 0, 10, 0, 0}, a);
51112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
52112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.add(5, 20);
53112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(20, a.get(5));
54112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(5, a.indexOf(20));
55112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2, 0, 0, 0, 20, 10, 0, 0}, a);
56112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
57112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(-1, a.indexOf(99));
58112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
59112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.resize(15);
60112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.set(14, 30);
61112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{1, 2, 0, 0, 0, 20, 10, 0, 0, 0, 0, 0, 0, 0, 30}, a);
62112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
63112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        long[] backingArray = new long[]{1, 2, 3, 4};
64112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a = LongArray.wrap(backingArray);
65112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.set(0, 10);
66112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(10, backingArray[0]);
67112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        backingArray[1] = 20;
68112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        backingArray[2] = 30;
69112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(backingArray, a);
70112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(2, a.indexOf(30));
71112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
72112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.resize(2);
73112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(0, backingArray[2]);
74112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(0, backingArray[3]);
75112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
76112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        a.add(50);
77112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        verify(new long[]{10, 20, 50}, a);
78112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi    }
79112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi
80112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi    public void verify(long[] expected, LongArray longArrays) {
81112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertEquals(expected.length, longArrays.size());
82112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi        assertArrayEquals(expected, longArrays.toArray());
83112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi    }
84112962a6b09310c58093b9a8af341cbeaa612a48Hugo Benichi}
85