/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("AndroidXPlugin")
    id("com.android.application")
    id("kotlin-android")
    id("kotlin-kapt")
}

dependencies {
    implementation("androidx.arch.core:core-runtime:2.1.0")
    implementation(projectOrArtifact(":room:room-ktx"))
    implementation(projectOrArtifact(":room:room-rxjava2"))
    implementation(projectOrArtifact(":room:room-paging"))

    implementation(project(":paging:paging-common-ktx"))
    implementation(project(":paging:paging-runtime"))
    implementation(project(":paging:paging-rxjava2"))

    kapt(projectOrArtifact(":room:room-compiler"))

    implementation(libs.multidex)
    implementation(projectOrArtifact(":recyclerview:recyclerview"))
    implementation("androidx.fragment:fragment-ktx:1.3.0")
    implementation("androidx.appcompat:appcompat:1.1.0")
    implementation(libs.kotlinStdlib)

    androidTestImplementation(libs.kotlinTest)
    androidTestImplementation(libs.testCore)
    androidTestImplementation(libs.testExtJunit)
    androidTestImplementation(libs.testRunner)
    androidTestImplementation(libs.truth)
}

kapt {
    javacOptions {
        option("-source", "8")
        option("-target", "8")
    }
}

android {
    namespace "androidx.paging.integration.testapp"
}

// Enable parameter names to support Room incremental when its a project() dep.
// See b/198431380
tasks.withType(JavaCompile) {
    options.compilerArgs << "-parameters"
}
