// Copyright (C) 2018 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.
java_defaults {
    name: "FrameworkMockingServicesTests-jni-defaults",
    jni_libs: [
        "libmockingservicestestjni",
    ],
}

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_base_license"],
}

android_test {
    name: "FrameworksMockingServicesTests",
    defaults: [
        "FrameworkMockingServicesTests-jni-defaults",
        "modules-utils-testable-device-config-defaults",
    ],

    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
        ":framework-internal-display-sources",
    ],

    static_libs: [
        "androidx.test.core",
        "androidx.test.runner",
        "androidx.test.espresso.core",
        "androidx.test.espresso.contrib",
        "androidx.test.ext.truth",
        "flag-junit",
        "frameworks-base-testutils",
        "hamcrest-library",
        "kotlin-test",
        "mockingservicestests-utils-mockito",
        "mockito-target-extended-minus-junit4",
        "platform-compat-test-rules",
        "platform-test-annotations",
        "PlatformProperties",
        "service-blobstore",
        "service-jobscheduler",
        "service-permission.impl",
        "service-sdksandbox.impl",
        "services.backup",
        "services.companion",
        "services.core",
        "services.devicepolicy",
        "services.net",
        "services.usage",
        "services.wallpapereffectsgeneration",
        "servicestests-core-utils",
        "servicestests-utils-mockito-extended",
        "testables",
        "truth",
        // TODO: remove once Android migrates to JUnit 4.12, which provides assertThrows
        "testng",
        "compatibility-device-util-axt",
        "flag-junit",
        "am_flags_lib",
    ],

    libs: [
        "android.test.mock",
        "android.test.base",
        "android.test.runner",
        "servicestests-core-utils",
    ],

    java_resources: [
        ":apex.test",
        ":test.rebootless_apex_v1",
        ":test.rebootless_apex_v2",
    ],

    jni_libs: [
        "libpsi",
    ],

    certificate: "platform",
    platform_apis: true,
    test_suites: [
        "device-tests",
        "automotive-tests",
    ],

    optimize: {
        enabled: false,
    },
}

java_library {
    name: "mockingservicestests-utils-mockito",
    srcs: [
        "utils-mockito/**/*.kt",
    ],
    static_libs: [
        "junit",
        "mockito-target-extended-minus-junit4",
    ],
    libs: [
        "android.test.runner",
    ],
}

android_ravenwood_test {
    name: "FrameworksMockingServicesTestsRavenwood",
    libs: [
        "android.test.mock",
    ],
    static_libs: [
        "androidx.annotation_annotation",
        "androidx.test.rules",
        "services.core",
    ],
    srcs: [
        "src/com/android/server/am/BroadcastRecordTest.java",
    ],
    auto_gen_config: true,
}
