//
// 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.
//

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

java_defaults {
    name: "NetworkStackTestsDefaults",
    platform_apis: true,
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],
    resource_dirs: ["res"],
    static_libs: [
        "androidx.test.ext.junit",
        "androidx.test.rules",
        "kotlin-reflect",
        "mockito-target-extended-minus-junit4",
        "net-tests-utils",
        //"net-utils-framework-common",
        "testables",
    ],
    libs: [
        "android.test.runner",
        "android.test.base",
        "android.test.mock",
    ],
    defaults: [
        "framework-connectivity-test-defaults",
        "libnetworkstackutilsjni_deps",
    ],
    jni_libs: [
        // For mockito extended
        "libdexmakerjvmtiagent",
        "libstaticjvmtiagent",
        "libnetworkstackutilsjni",
    ],
    jni_uses_sdk_apis: true,
    exclude_kotlinc_generated_files: false,
}

// Tests for NetworkStackNext.
android_test {
    name: "NetworkStackNextTests",
    target_sdk_version: "current",
    min_sdk_version: "30",
    srcs: [], // TODO: tests that only apply to the current, non-stable API can be added here
    test_suites: ["general-tests"],
    defaults: [
        "NetworkStackTestsDefaults",
        "ConnectivityNextEnableDefaults",
        "connectivity-mainline-presubmit-java-defaults",
    ],
    static_libs: ["NetworkStackApiCurrentLib"],
    compile_multilib: "both", // Workaround for b/147785146 for mainline-presubmit
    jarjar_rules: ":NetworkStackJarJarRules",
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// Library containing the unit tests. This is used by the coverage test target to pull in the
// unit test code. It is not currently used by the tests themselves because all the build
// configuration needed by the tests is in the NetworkStackTestsDefaults rule.
android_library {
    name: "NetworkStackTestsLib",
    min_sdk_version: "30",
    defaults: ["NetworkStackTestsDefaults"],
    static_libs: ["NetworkStackApiStableLib"],
    lint: {
        test: true,
        baseline_filename: "lint-baseline.xml",
    },
    visibility: [
        "//packages/modules/NetworkStack/tests/integration",
        "//packages/modules/Connectivity/tests:__subpackages__",
        "//packages/modules/Connectivity/Tethering/tests:__subpackages__",
    ],
}

android_test {
    name: "NetworkStackTests",
    min_sdk_version: "30",
    test_suites: [
        "general-tests",
        "mts",
    ],
    defaults: [
        "NetworkStackTestsDefaults",
        "connectivity-mainline-presubmit-java-defaults",
    ],
    static_libs: ["NetworkStackApiStableLib"],
    compile_multilib: "both",
    jarjar_rules: ":NetworkStackJarJarRules",
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}

// Additional dependencies of libnetworkstackutilsjni that are not provided by the system when
// running as a test application.
// Using java_defaults as jni_libs does not support filegroups.
java_defaults {
    name: "libnetworkstackutilsjni_deps",
    jni_libs: [
        "libnativehelper_compat_libc++",
        "libnetworkstacktestsjni",
    ],
}
