12e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton/* 22e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * Copyright (C) 2018 The Android Open Source Project 32e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * 42e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * Licensed under the Apache License, Version 2.0 (the "License"); 52e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * you may not use this file except in compliance with the License. 62e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * You may obtain a copy of the License at 72e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * 82e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * http://www.apache.org/licenses/LICENSE-2.0 92e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * 102e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * Unless required by applicable law or agreed to in writing, software 112e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * distributed under the License is distributed on an "AS IS" BASIS, 122e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * See the License for the specific language governing permissions and 142e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton * limitations under the License. 152e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton */ 162e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 179c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonpackage androidx.core.database 182e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 192e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonimport android.database.Cursor 202e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonimport android.database.MatrixCursor 212e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonimport org.junit.Assert.assertArrayEquals 222e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonimport org.junit.Assert.assertEquals 232e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonimport org.junit.Assert.assertNull 242e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonimport org.junit.Test 252e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 262e66db433ad3a5e69ae95b606158049b39e082ccJake Whartonclass CursorTest { 272e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun blobByName() { 282e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(byteArrayOf(0x01)) 292e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val blob = cursor.getBlob("data") 302e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertArrayEquals(byteArrayOf(0x01), blob) 312e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 322e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 332e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun doubleByName() { 342e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(1.5) 352e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val double = cursor.getDouble("data") 362e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertEquals(1.5, double, 0.0) 372e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 382e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 392e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun floatByName() { 402e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(1.5f) 412e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val float = cursor.getFloat("data") 422e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertEquals(1.5f, float, 0f) 432e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 442e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 452e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun intByName() { 462e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(1) 472e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val int = cursor.getInt("data") 482e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertEquals(1, int) 492e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 502e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 512e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun longByName() { 522e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(1L) 532e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val long = cursor.getLong("data") 542e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertEquals(1L, long) 552e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 562e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 572e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun shortByName() { 582e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(1.toShort()) 592e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val short = cursor.getShort("data") 602e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertEquals(1.toShort(), short) 612e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 622e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 632e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun stringByName() { 642e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor("hey") 652e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val string = cursor.getString("data") 662e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertEquals("hey", string) 672e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 682e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 692e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun blobOrNullByIndex() { 702e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 712e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val blob = cursor.getBlobOrNull(0) 722e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(blob) 732e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 742e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 752e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun doubleOrNullByIndex() { 762e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 772e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val double = cursor.getDoubleOrNull(0) 782e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(double) 792e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 802e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 812e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun floatOrNullByIndex() { 822e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 832e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val float = cursor.getFloatOrNull(0) 842e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(float) 852e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 862e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 872e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun intOrNullByIndex() { 882e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 892e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val int = cursor.getIntOrNull(0) 902e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(int) 912e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 922e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 932e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun longOrNullByIndex() { 942e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 952e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val long = cursor.getLongOrNull(0) 962e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(long) 972e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 982e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 992e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun shortOrNullByIndex() { 1002e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1012e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val short = cursor.getShortOrNull(0) 1022e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(short) 1032e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1042e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1052e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun stringOrNullByIndex() { 1062e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1072e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val string = cursor.getStringOrNull(0) 1082e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(string) 1092e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1102e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1112e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun blobOrNullByName() { 1122e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1132e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val blob = cursor.getBlobOrNull("data") 1142e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(blob) 1152e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1162e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1172e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun doubleOrNullByName() { 1182e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1192e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val double = cursor.getDoubleOrNull("data") 1202e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(double) 1212e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1222e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1232e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun floatOrNullByName() { 1242e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1252e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val float = cursor.getFloatOrNull("data") 1262e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(float) 1272e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1282e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1292e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun intOrNullByName() { 1302e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1312e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val int = cursor.getIntOrNull("data") 1322e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(int) 1332e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1342e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1352e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun longOrNullByName() { 1362e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1372e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val long = cursor.getLongOrNull("data") 1382e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(long) 1392e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1402e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1412e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun shortOrNullByName() { 1422e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1432e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val short = cursor.getShortOrNull("data") 1442e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(short) 1452e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1462e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1472e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton @Test fun stringOrNullByName() { 1482e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val cursor = scalarCursor(null) 1492e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton val string = cursor.getStringOrNull("data") 1502e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton assertNull(string) 1512e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1522e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton 1532e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton private fun scalarCursor(item: Any?): Cursor = MatrixCursor(arrayOf("data")).apply { 1542e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton addRow(arrayOf(item)) 1552e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton moveToFirst() // Prepare for consumers to read. 1562e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton } 1572e66db433ad3a5e69ae95b606158049b39e082ccJake Wharton} 158