// Copyright (C) 2021 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.

// ============================================================
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

filegroup {
    name: "service-bluetooth-tests-sources",
    srcs: [
        "src/**/*.java",
    ],
    visibility: [
        "//frameworks/base",
        "//frameworks/base/services",
        "//frameworks/base/services/tests/servicestests",
    ],
}

android_test {
    name: "ServiceBluetoothTests",

    srcs: [
        "src/**/*.java",
    ],

    dxflags: ["--multi-dex"],

    java_version: "1.9",

    static_libs: [
        "androidx.test.rules",
        "collector-device-lib",
        "hamcrest-library",
        "mockito-target-extended-minus-junit4",
        "platform-test-annotations",
        "frameworks-base-testutils",
        "truth-prebuilt",

        // Statically link service-bluetooth-pre-jarjar since we want to test the working copy of
        // service-uwb, not the on-device copy.
        // Use pre-jarjar version so that we can reference symbols before they are renamed.
        // Then, the jarjar_rules here will perform the rename for the entire APK
        // i.e. service-bluetooth + test code
        "service-bluetooth-pre-jarjar",
    ],

    jarjar_rules: ":bluetooth-jarjar-rules",

    libs: [
        "android.test.runner",
        "android.test.base",
        "android.test.mock",
        "framework-bluetooth-pre-jarjar",
    ],

    jni_libs: [
        // these are needed for Extended Mockito
        "libbluetooth_jni",
    ],
    compile_multilib: "both",

    min_sdk_version: "current",

    test_suites: [
        "general-tests",
        "mts-bluetooth",
    ],
}
