SparseRectFArrayTest.java revision c2ddd6023688db5ecf6c586e05f55e262b4a802e
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (C) 2014 The Android Open Source Project 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * you may not use this file except in compliance with the License. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * You may obtain a copy of the License at 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Unless required by applicable law or agreed to in writing, software 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * See the License for the specific language governing permissions and 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * limitations under the License. 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpackage android.os; 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgimport android.graphics.RectF; 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgimport android.test.InstrumentationTestCase; 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgimport android.test.suitebuilder.annotation.SmallTest; 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgimport android.view.inputmethod.SparseRectFArray; 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgimport android.view.inputmethod.SparseRectFArray.SparseRectFArrayBuilder; 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgimport java.util.Objects; 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic class SparseRectFArrayTest extends InstrumentationTestCase { 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // A test data for {@link SparseRectFArray}. null represents the gap of indices. 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private static final RectF[] MANY_RECTS = new RectF[] { 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org null, 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(102.0f, 202.0f, 302.0f, 402.0f), 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(103.0f, 203.0f, 303.0f, 403.0f), 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(104.0f, 204.0f, 304.0f, 404.0f), 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(105.0f, 205.0f, 305.0f, 405.0f), 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(106.0f, 206.0f, 306.0f, 406.0f), 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org null, 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(108.0f, 208.0f, 308.0f, 408.0f), 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(109.0f, 209.0f, 309.0f, 409.0f), 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(110.0f, 210.0f, 310.0f, 410.0f), 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(111.0f, 211.0f, 311.0f, 411.0f), 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(112.0f, 212.0f, 312.0f, 412.0f), 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(113.0f, 213.0f, 313.0f, 413.0f), 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(114.0f, 214.0f, 314.0f, 414.0f), 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(115.0f, 215.0f, 315.0f, 415.0f), 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(116.0f, 216.0f, 316.0f, 416.0f), 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(117.0f, 217.0f, 317.0f, 417.0f), 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org null, 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org null, 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new RectF(118.0f, 218.0f, 318.0f, 418.0f), 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org @SmallTest 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org public void testBuilder() throws Exception { 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final RectF TEMP_RECT = new RectF(10.0f, 20.0f, 30.0f, 40.0f); 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final SparseRectFArrayBuilder builder = new SparseRectFArrayBuilder(); 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org builder.append(100, TEMP_RECT.left, TEMP_RECT.top, TEMP_RECT.right, TEMP_RECT.bottom); 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNull(builder.build().get(-1)); 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNull(builder.build().get(0)); 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNull(builder.build().get(99)); 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEquals(TEMP_RECT, builder.build().get(100)); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNull(builder.build().get(101)); 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Test if {@link SparseRectFArrayBuilder#reset} resets its internal state. 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org builder.reset(); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNull(builder.build().get(100)); 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org builder.reset(); 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int i = 0; i < MANY_RECTS.length; i++) { 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final RectF rect = MANY_RECTS[i]; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (rect != null) { 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org builder.append(i, rect.left, rect.top, rect.right, rect.bottom); 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final SparseRectFArray array = builder.build(); 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int i = 0; i < MANY_RECTS.length; i++) { 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final RectF rect = MANY_RECTS[i]; 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEquals(rect, array.get(i)); 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Make sure the builder reproduces an equivalent object. 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final SparseRectFArray array2 = builder.build(); 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int i = 0; i < MANY_RECTS.length; i++) { 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final RectF rect = MANY_RECTS[i]; 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEquals(rect, array2.get(i)); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEqualRects(array, array2); 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Make sure the instance can be marshaled via {@link Parcel}. 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final SparseRectFArray array3 = cloneViaParcel(array); 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (int i = 0; i < MANY_RECTS.length; i++) { 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org final RectF rect = MANY_RECTS[i]; 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEquals(rect, array3.get(i)); 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEqualRects(array, array3); 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Make sure the builder can be reset. 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org builder.reset(); 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNull(builder.build().get(0)); 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org @SmallTest 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org public void testEquality() throws Exception { 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Empty array should be equal. 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEqualRects(new SparseRectFArrayBuilder().build(), 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().build()); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEqualRects( 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(100, 1.0f, 2.0f, 3.0f, 4.0f).build(), 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(100, 1.0f, 2.0f, 3.0f, 4.0f).build()); 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(100, 1.0f, 2.0f, 3.0f, 4.0f).build(), 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(100, 2.0f, 2.0f, 3.0f, 4.0f).build()); 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(100, 1.0f, 2.0f, 3.0f, 4.0f).build(), 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(101, 1.0f, 2.0f, 3.0f, 4.0f).build()); 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEqualRects( 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build(), 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build()); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f).build(), 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build()); 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build(), 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f).build()); 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build(), 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 1.0f, 0.0f, 0.0f, 0.0f).build()); 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 1.0f, 0.0f, 0.0f, 0.0f).build(), 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build()); 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(101, 0.0f, 0.0f, 0.0f, 0.0f).build(), 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100, 1.0f, 2.0f, 3.0f, 4.0f) 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(102, 0.0f, 0.0f, 0.0f, 0.0f).build()); 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEqualRects( 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1, 1.0f, 2.0f, 3.0f, 4.0f) 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1000, 0.0f, 0.0f, 0.0f, 0.0f) 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100000000, 0.0f, 0.0f, 0.0f, 0.0f) 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .build(), 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1, 1.0f, 2.0f, 3.0f, 4.0f) 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1000, 0.0f, 0.0f, 0.0f, 0.0f) 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100000000, 0.0f, 0.0f, 0.0f, 0.0f) 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .build()); 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1, 1.0f, 2.0f, 3.0f, 4.0f) 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1000, 0.0f, 0.0f, 0.0f, 0.0f) 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100000000, 0.0f, 0.0f, 0.0f, 0.0f) 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .build(), 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1, 1.0f, 2.0f, 3.0f, 4.0f) 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .build()); 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertNotEqualRects( 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1, 1.0f, 2.0f, 3.0f, 4.0f) 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1000, 0.0f, 0.0f, 0.0f, 0.0f) 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100000000, 0.0f, 0.0f, 0.0f, 0.0f) 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .build(), 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder() 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1, 1.0f, 2.0f, 3.0f, 4.0f) 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(1000, 1.0f, 0.0f, 0.0f, 0.0f) 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .append(100000000, 0.0f, 0.0f, 0.0f, 0.0f) 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org .build()); 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org @SmallTest 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org public void testBuilderAppend() throws Exception { 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Key should be appended in ascending order. 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org try { 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(10, 0, 0, 0, 0).append(0, 1, 2, 3, 4); 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } catch (IllegalArgumentException ex) { 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertTrue(true); 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org try { 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org new SparseRectFArrayBuilder().append(10, 0, 0, 0, 0).append(10, 1, 2, 3, 4); 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } catch (IllegalArgumentException ex) { 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertTrue(true); 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private static void assertEqualRects(SparseRectFArray a, SparseRectFArray b) { 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEquals(a, b); 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (a != null && b != null) { 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertEquals(a.hashCode(), b.hashCode()); 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private static void assertNotEqualRects(SparseRectFArray a, SparseRectFArray b) { 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org assertFalse(Objects.equals(a, b)); 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private static SparseRectFArray cloneViaParcel(final SparseRectFArray src) { 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Parcel parcel = null; 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org try { 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org parcel = Parcel.obtain(); 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org src.writeToParcel(parcel, 0); 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org parcel.setDataPosition(0); 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return new SparseRectFArray(parcel); 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } finally { 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (parcel != null) { 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org parcel.recycle(); 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org