//
// 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: ["test_mlts_benchmark_license"],
}

// Added automatically by a large-scale-change
// http://go/android-license-faq
license {
    name: "test_mlts_benchmark_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "LICENSE",
    ],
}

java_library {
    name: "NeuralNetworksApiBenchmark_Lib",
    installable: true,
    sdk_version: "28",
    srcs: [
        "src/com/android/nn/benchmark/core/**/*.java",
        "src/com/android/nn/benchmark/evaluators/**/*.java",
        "src/com/android/nn/benchmark/imageprocessors/**/*.java",
        "src/com/android/nn/benchmark/util/**/*.java",
    ],
    static_libs: [
        "androidx.test.rules",
        "android.test.runner.stubs",
        "android.test.base.stubs",
    ],
}

java_defaults {
    name: "test-mlts-benchmark-defaults",
    static_libs: [
        "androidx.appcompat_appcompat",
        "androidx-constraintlayout_constraintlayout",
        "androidx.test.rules",
        "android-common",
        // Assets settings: test/mlts/models/assets
        "test_mlts_models_assets",
    ],
    libs: [
        "android.test.base.stubs",
        "android.test.runner.stubs",
    ],
    test_suites: ["device-tests"],
    srcs: [
        "src/com/android/nn/benchmark/core/**/*.java",
        "src/com/android/nn/benchmark/evaluators/**/*.java",
        "src/com/android/nn/benchmark/imageprocessors/**/*.java",
        "src/com/android/nn/benchmark/util/**/*.java",
    ],
    jni_libs: [
        "libnnbenchmark_jni",
        "libsupport_library_jni",
    ],
    sdk_version: "31",
    resource_dirs: [
        "res",
    ],
}

android_test {
    name: "NeuralNetworksApiCrashTestApp",
    defaults: [
        "test-mlts-benchmark-defaults",
    ],
    manifest: "crashtest/AndroidManifest.xml",
    srcs: [
        "crashtest/src/**/*.java",
        "src/com/android/nn/crashtest/core/**/*.java",
        "src/com/android/nn/benchmark/app/AcceleratorSpecificTestSupport.java",
    ],
    resource_dirs: [
        "crashtest/res",
    ],
}

android_test {
    name: "NeuralNetworksApiDogfood",
    defaults: [
        "test-mlts-benchmark-defaults",
    ],
    manifest: "dogfood/AndroidManifest.xml",
    srcs: [
        "dogfood/src/**/*.java",
    ],
    jni_libs: [
        "libnnbenchmark_jni",
        "libsupport_library_jni",
    ],
    resource_dirs: [
        "dogfood/res",
    ],
}

android_test {
    name: "NeuralNetworksApiBenchmark",
    test_config: "AndroidTest_Mlts.xml",
    static_libs: [
        "androidx.test.rules",
        "collector-device-lib",
        // Assets settings: test/mlts/models/assets
        "test_mlts_models_assets",
    ],
    libs: [
        "android.test.base.stubs",
        "android.test.runner.stubs",
    ],
    test_suites: ["device-tests"],
    srcs: ["src/com/android/nn/benchmark/**/*.java"],
    jni_libs: [
        "libnnbenchmark_jni",
        "libsupport_library_jni",
    ],
    sdk_version: "31",
    asset_dirs: [
        "sl_prebuilt/assets",
    ],
}

android_test {
    name: "NeuralNetworksApiCrashTest",
    test_config: "AndroidTest_Mlts.xml",
    static_libs: [
        "androidx.test.rules",
        // Assets settings: test/mlts/models/assets
        "test_mlts_models_assets",
    ],
    libs: [
        "android.test.base.stubs",
        "android.test.runner.stubs",
    ],
    test_suites: ["device-tests"],
    srcs: ["src/**/*.java"],
    jni_libs: [
        "libnnbenchmark_jni",
        "libsupport_library_jni",
        "librandom_graph_test_jni",
    ],
    sdk_version: "31",
    asset_dirs: [
        "sl_prebuilt/assets",
    ],
}
