// 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 {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["Android-Apache-2.0"],
}

// Source code used for test
filegroup {
    name: "launcher-tests-src",
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
        "multivalentTests/src/**/*.java",
        "multivalentTests/src/**/*.kt",
    ],
    exclude_srcs: [
        ":launcher-non-quickstep-tests-src",
    ],
}

filegroup {
    name: "launcher3-robo-src",
    // multivalentTests directory is a shared folder for not only robolectric converted test
    // classes but also shared helper classes.
    srcs: [
        "multivalentTests/src/**/*.java",
        "multivalentTests/src/**/*.kt",
        "src_deviceless/**/*.java",
        "src_deviceless/**/*.kt",
    ],
}

// Source code used for non-quickstep tests
filegroup {
    name: "launcher-non-quickstep-tests-src",
    srcs: [
        "src/com/android/launcher3/nonquickstep/**/*.java",
        "src/com/android/launcher3/nonquickstep/**/*.kt",
    ],
}

// Source code used for oop test helpers
filegroup {
    name: "launcher-oop-tests-src",
    srcs: [
        ":launcher-testing-helpers",
        "src/com/android/launcher3/allapps/TaplOpenCloseAllAppsTest.java",
        "src/com/android/launcher3/allapps/TaplAllAppsIconsWorkingTest.java",
        "src/com/android/launcher3/appiconmenu/TaplAppIconMenuTest.java",
        "src/com/android/launcher3/dragging/TaplDragTest.java",
        "src/com/android/launcher3/dragging/TaplUninstallRemoveTest.java",
        "src/com/android/launcher3/ui/TaplTestsLauncher3Test.java",
        "src/com/android/launcher3/ui/widget/TaplWidgetPickerTest.java",
        "src/com/android/launcher3/ui/workspace/TaplWorkspaceTest.java",
    ],
}

// Library with all the dependencies for building quickstep
android_library {
    name: "Launcher3TestLib",
    srcs: [],
    asset_dirs: ["assets"],
    resource_dirs: ["res"],
    static_libs: [
        "flag-junit-base",
        "launcher-aosp-tapl",
        "androidx.test.core",
        "androidx.test.runner",
        "androidx.test.rules",
        "androidx.test.ext.junit",
        "androidx.test.espresso.core",
        "androidx.test.espresso.contrib",
        "androidx.test.espresso.intents",
        "androidx.test.uiautomator_uiautomator",
        "mockito-kotlin2",
        "mockito-target-extended-minus-junit4",
        "launcher_log_protos_lite",
        "truth",
        "kotlinx_coroutines_test",
        "platform-test-rules",
        "testables",
        "com_android_launcher3_flags_lib",
        "com_android_wm_shell_flags_lib",
        "android.appwidget.flags-aconfig-java",
    ],
    manifest: "AndroidManifest-common.xml",
    platform_apis: true,
    // TODO(b/319712088): re-enable use_resource_processor
    use_resource_processor: false,
}

android_library {
    name: "Launcher3TestResources",
    resource_dirs: ["res"],
    asset_dirs: ["assets"],
    // TODO(b/319712088): re-enable use_resource_processor
    use_resource_processor: false,
}

android_test {
    name: "Launcher3Tests",
    srcs: [
        ":launcher-tests-src",
        ":launcher-non-quickstep-tests-src",
    ],
    static_libs: [
        "Launcher3TestLib",
        "com_android_launcher3_flags_lib",
    ],
    libs: [
        "android.test.base.stubs.system",
        "android.test.runner.stubs.system",
        "android.test.mock.stubs.system",
    ],
    // Libraries used by mockito inline extended
    jni_libs: [
        "libdexmakerjvmtiagent",
        "libstaticjvmtiagent",
    ],
    use_embedded_native_libs: false,
    compile_multilib: "both",
    instrumentation_for: "Launcher3",
    manifest: "AndroidManifest.xml",
    platform_apis: true,
    test_config: "Launcher3Tests.xml",
    data: [":Launcher3"],
    test_suites: ["general-tests"],
}

// Shared between tests and launcher
android_library {
    name: "launcher-testing-shared",
    srcs: [
        "multivalentTests/shared/com/android/launcher3/testing/shared/**/*.java",
        "multivalentTests/shared/com/android/launcher3/testing/shared/**/*.kt",
    ],
    resource_dirs: [],
    manifest: "multivalentTests/shared/AndroidManifest.xml",
    sdk_version: "current",
    min_sdk_version: min_launcher3_sdk_version,
}

filegroup {
    name: "launcher-testing-helpers",
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
        "multivalentTests/src/**/*.java",
        "multivalentTests/src/**/*.kt",
        "src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
        "tapl/com/android/launcher3/tapl/*.java",
        "tapl/com/android/launcher3/tapl/*.kt",
    ],
    exclude_srcs: [
        // Test classes
        "src/**/*Test.java",
        "src/**/*Test.kt",
        "multivalentTests/src/**/*Test.java",
        "multivalentTests/src/**/*Test.kt",
    ],
}

android_robolectric_test {
    enabled: true,
    name: "Launcher3RoboTests",
    srcs: [
        ":launcher3-robo-src",

        // Test util classes
        ":launcher-testing-helpers",
        ":launcher-testing-shared",
    ],
    exclude_srcs: [
        //"src/com/android/launcher3/util/CellContentDimensionsTest.kt", // Failing - b/316553889

        // requires modification to work with inline mock maker
        "src/com/android/launcher3/util/rule/StaticMockitoRule.java",
    ],
    java_resource_dirs: ["config"],
    static_libs: [
        "flag-junit-base",
        "flag-junit",
        "com_android_launcher3_flags_lib",
        "com_android_wm_shell_flags_lib",
        "androidx.test.uiautomator_uiautomator",
        "androidx.core_core-animation-testing",
        "androidx.test.ext.junit",
        "androidx.test.espresso.core",
        "androidx.test.espresso.contrib",
        "androidx.test.espresso.intents",
        "androidx.test.rules",
        "uiautomator-helpers",
        "inline-mockito-robolectric-prebuilt",
        "mockito-kotlin-nodeps",
        "platform-parametric-runner-lib",
        "platform-test-rules-deviceless",
        "testables",
        "Launcher3TestResources",
        "SystemUISharedLib",
        "launcher-testing-shared",
        "android.appwidget.flags-aconfig-java",
    ],
    libs: [
        "android.test.runner.stubs.system",
        "android.test.base.stubs.system",
        "android.test.mock.stubs.system",
        "truth",
    ],
    instrumentation_for: "Launcher3",
    upstream: true,
    strict_mode: false,
}
