summaryrefslogtreecommitdiff
path: root/tests/src/com/android/launcher3/model/FactitiousDbController.kt
blob: 711e1d2d65efbfa3242fd3b415385b72473d763b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.android.launcher3.model

import android.content.Context
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import androidx.test.platform.app.InstrumentationRegistry
import java.io.BufferedReader
import java.io.InputStreamReader

private val All_COLUMNS =
    arrayOf(
        "_id",
        "title",
        "intent",
        "container",
        "screen",
        "cellX",
        "cellY",
        "spanX",
        "spanY",
        "itemType",
        "appWidgetId",
        "icon",
        "appWidgetProvider",
        "modified",
        "restored",
        "profileId",
        "rank",
        "options",
        "appWidgetSource"
    )

class FactitiousDbController(context: Context, insertFile: String) : ModelDbController(context) {

    val inMemoryDb: SQLiteDatabase by lazy {
        SQLiteDatabase.createInMemory(SQLiteDatabase.OpenParams.Builder().build()).also { db ->
            BufferedReader(
                    InputStreamReader(
                        InstrumentationRegistry.getInstrumentation().context.assets.open(insertFile)
                    )
                )
                .lines()
                .forEach { sqlStatement -> db.execSQL(sqlStatement) }
        }
    }

    override fun query(
        table: String,
        projection: Array<out String>?,
        selection: String?,
        selectionArgs: Array<out String>?,
        sortOrder: String?
    ): Cursor {
        return inMemoryDb.query(table, All_COLUMNS, selection, selectionArgs, null, null, sortOrder)
    }

    override fun loadDefaultFavoritesIfNecessary() {
        // No-Op
    }
}