12ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka/* 22ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * Copyright (C) 2012 The Android Open Source Project 32ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * 42ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); you may not 52ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * use this file except in compliance with the License. You may obtain a copy of 62ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * the License at 72ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * 82ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 92ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * 102ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 112ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 122ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 132ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * License for the specific language governing permissions and limitations under 142ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka * the License. 152ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka */ 162ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 172ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaokapackage com.android.inputmethod.latin; 182ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 192ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaokaimport android.test.AndroidTestCase; 202ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 2164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaokaimport java.util.Arrays; 2264a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka 232ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaokapublic class InputPointersTests extends AndroidTestCase { 2457f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka private static final int DEFAULT_CAPACITY = 48; 2557f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka 262ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testNewInstance() { 2757f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 28f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("new instance size", 0, src.getPointerSize()); 292ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertNotNull("new instance xCoordinates", src.getXCoordinates()); 302ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertNotNull("new instance yCoordinates", src.getYCoordinates()); 312ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertNotNull("new instance pointerIds", src.getPointerIds()); 322ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertNotNull("new instance times", src.getTimes()); 332ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 342ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 352ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testReset() { 3657f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 372ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int[] xCoordinates = src.getXCoordinates(); 382ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int[] yCoordinates = src.getXCoordinates(); 392ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int[] pointerIds = src.getXCoordinates(); 402ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int[] times = src.getXCoordinates(); 412ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 422ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka src.reset(); 43f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after reset", 0, src.getPointerSize()); 44f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("xCoordinates after reset", xCoordinates, src.getXCoordinates()); 45f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("yCoordinates after reset", yCoordinates, src.getYCoordinates()); 46f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("pointerIds after reset", pointerIds, src.getPointerIds()); 47f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("times after reset", times, src.getTimes()); 482ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 492ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 502ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testAdd() { 5157f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 522ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int limit = src.getXCoordinates().length * 2 + 10; 532ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < limit; i++) { 542ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka src.addPointer(i, i * 2, i * 3, i * 4); 55f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after add " + i, i + 1, src.getPointerSize()); 562ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 572ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < limit; i++) { 582ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("xCoordinates at " + i, i, src.getXCoordinates()[i]); 592ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("yCoordinates at " + i, i * 2, src.getYCoordinates()[i]); 602ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("pointerIds at " + i, i * 3, src.getPointerIds()[i]); 612ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("times at " + i, i * 4, src.getTimes()[i]); 622ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 632ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 642ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 652ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testAddAt() { 6657f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 672ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int limit = 1000, step = 100; 682ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < limit; i += step) { 692ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka src.addPointer(i, i, i * 2, i * 3, i * 4); 70f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after add at " + i, i + 1, src.getPointerSize()); 712ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 722ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < limit; i += step) { 732ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("xCoordinates at " + i, i, src.getXCoordinates()[i]); 742ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("yCoordinates at " + i, i * 2, src.getYCoordinates()[i]); 752ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("pointerIds at " + i, i * 3, src.getPointerIds()[i]); 762ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals("times at " + i, i * 4, src.getTimes()[i]); 772ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 782ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 792ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 802ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testSet() { 8157f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 822ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int limit = src.getXCoordinates().length * 2 + 10; 832ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < limit; i++) { 842ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka src.addPointer(i, i * 2, i * 3, i * 4); 852ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 8657f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers dst = new InputPointers(DEFAULT_CAPACITY); 872ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.set(src); 88f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after set", dst.getPointerSize(), src.getPointerSize()); 89f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertSame("xCoordinates after set", dst.getXCoordinates(), src.getXCoordinates()); 90f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertSame("yCoordinates after set", dst.getYCoordinates(), src.getYCoordinates()); 91f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertSame("pointerIds after set", dst.getPointerIds(), src.getPointerIds()); 92f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertSame("times after set", dst.getTimes(), src.getTimes()); 932ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 942ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 952ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testCopy() { 9657f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 972ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int limit = 100; 982ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < limit; i++) { 992ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka src.addPointer(i, i * 2, i * 3, i * 4); 1002ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 10157f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers dst = new InputPointers(DEFAULT_CAPACITY); 1022ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.copy(src); 103f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after copy", dst.getPointerSize(), src.getPointerSize()); 104f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("xCoordinates after copy", dst.getXCoordinates(), src.getXCoordinates()); 105f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("yCoordinates after copy", dst.getYCoordinates(), src.getYCoordinates()); 106f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("pointerIds after copy", dst.getPointerIds(), src.getPointerIds()); 107f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertNotSame("times after copy", dst.getTimes(), src.getTimes()); 1082ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka final int size = dst.getPointerSize(); 109f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("xCoordinates values after copy", 1102ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.getXCoordinates(), 0, src.getXCoordinates(), 0, size); 111f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("yCoordinates values after copy", 1122ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.getYCoordinates(), 0, src.getYCoordinates(), 0, size); 113f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("pointerIds values after copy", 1142ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.getPointerIds(), 0, src.getPointerIds(), 0, size); 115f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("times values after copy", 1162ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.getTimes(), 0, src.getTimes(), 0, size); 1172ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 1182ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 1192ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka public void testAppend() { 12057f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers src = new InputPointers(DEFAULT_CAPACITY); 1217247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka final int srcLen = 100; 1227247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka for (int i = 0; i < srcLen; i++) { 1232ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka src.addPointer(i, i * 2, i * 3, i * 4); 1242ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 1257247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka final int dstLen = 50; 12657f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers dst = new InputPointers(DEFAULT_CAPACITY); 1277247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka for (int i = 0; i < dstLen; i++) { 1287247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka final int value = -i - 1; 1292ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.addPointer(value * 4, value * 3, value * 2, value); 1302ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 13157f7de0ba664187e13bcea5adff7f5f65eddd823Tadashi G. Takaoka final InputPointers dstCopy = new InputPointers(DEFAULT_CAPACITY); 1322ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dstCopy.copy(dst); 1332ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 1342ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka dst.append(src, 0, 0); 135f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after append zero", dstLen, dst.getPointerSize()); 136f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("xCoordinates after append zero", 137f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen); 138f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("yCoordinates after append zero", 139f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen); 140f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("pointerIds after append zero", 141f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen); 142f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("times after append zero", 143f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen); 1442ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 1457247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka dst.append(src, 0, srcLen); 146f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertEquals("size after append", dstLen + srcLen, dst.getPointerSize()); 147f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertTrue("primitive length after append", 1487247bff6d6d488640ac752127148e7746c43469dTadashi G. Takaoka dst.getPointerIds().length >= dstLen + srcLen); 149f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("original xCoordinates values after append", 150f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen); 151f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("original yCoordinates values after append", 152f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen); 153f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("original pointerIds values after append", 154f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen); 155f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("original times values after append", 156f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen); 157f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("appended xCoordinates values after append", 158f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka src.getXCoordinates(), 0, dst.getXCoordinates(), dstLen, srcLen); 159f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("appended yCoordinates values after append", 160f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka src.getYCoordinates(), 0, dst.getYCoordinates(), dstLen, srcLen); 161f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("appended pointerIds values after append", 162f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka src.getPointerIds(), 0, dst.getPointerIds(), dstLen, srcLen); 163f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka assertArrayEquals("appended times values after append", 164f5830988878e8b8fba1916fa4c8e8c2d589f2500Tadashi G. Takaoka src.getTimes(), 0, dst.getTimes(), dstLen, srcLen); 1652ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 1662ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka 16764a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka public void testAppendResizableIntArray() { 16864a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final int srcLen = 100; 16964a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final int srcPointerId = 1; 17064a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final int[] srcPointerIds = new int[srcLen]; 17164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka Arrays.fill(srcPointerIds, srcPointerId); 17264a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final ResizableIntArray srcTimes = new ResizableIntArray(DEFAULT_CAPACITY); 17364a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final ResizableIntArray srcXCoords = new ResizableIntArray(DEFAULT_CAPACITY); 17464a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final ResizableIntArray srcYCoords= new ResizableIntArray(DEFAULT_CAPACITY); 17564a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka for (int i = 0; i < srcLen; i++) { 17664a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcTimes.add(i * 2); 17764a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcXCoords.add(i * 3); 17864a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcYCoords.add(i * 4); 17964a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka } 18064a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final int dstLen = 50; 18164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final InputPointers dst = new InputPointers(DEFAULT_CAPACITY); 18264a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka for (int i = 0; i < dstLen; i++) { 18364a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final int value = -i - 1; 18464a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dst.addPointer(value * 4, value * 3, value * 2, value); 18564a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka } 18664a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka final InputPointers dstCopy = new InputPointers(DEFAULT_CAPACITY); 18764a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.copy(dst); 18864a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka 18964a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords, 0, 0); 19064a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertEquals("size after append zero", dstLen, dst.getPointerSize()); 19164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("xCoordinates after append zero", 19264a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen); 19364a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("yCoordinates after append zero", 19464a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen); 19564a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("pointerIds after append zero", 19664a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen); 19764a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("times after append zero", 19864a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen); 19964a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka 20064a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords, 0, srcLen); 20164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertEquals("size after append", dstLen + srcLen, dst.getPointerSize()); 20264a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertTrue("primitive length after append", 20364a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dst.getPointerIds().length >= dstLen + srcLen); 20464a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("original xCoordinates values after append", 20564a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen); 20664a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("original yCoordinates values after append", 20764a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen); 20864a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("original pointerIds values after append", 20964a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen); 21064a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("original times values after append", 21164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen); 21264a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("appended xCoordinates values after append", 21364a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcXCoords.getPrimitiveArray(), 0, dst.getXCoordinates(), dstLen, srcLen); 21464a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("appended yCoordinates values after append", 21564a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcYCoords.getPrimitiveArray(), 0, dst.getYCoordinates(), dstLen, srcLen); 21664a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("appended pointerIds values after append", 21764a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcPointerIds, 0, dst.getPointerIds(), dstLen, srcLen); 21864a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka assertArrayEquals("appended times values after append", 21964a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka srcTimes.getPrimitiveArray(), 0, dst.getTimes(), dstLen, srcLen); 22064a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka } 22164a26b4389abb273afff7699a8c86596defd85bfTadashi G. Takaoka 2222ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka private static void assertArrayEquals(String message, int[] expecteds, int expectedPos, 2232ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka int[] actuals, int actualPos, int length) { 2242ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka if (expecteds == null && actuals == null) { 2252ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka return; 2262ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 2272ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka if (expecteds == null || actuals == null) { 2282ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka fail(message + ": expecteds=" + expecteds + " actuals=" + actuals); 2292ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 2302ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka for (int i = 0; i < length; i++) { 2312ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka assertEquals(message + ": element at " + i, 2322ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka expecteds[i + expectedPos], actuals[i + actualPos]); 2332ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 2342ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka } 2352ad6d12a30cc9f8189936431651dc543db726cfeTadashi G. Takaoka} 236