# Copyright (C) 2022 Huawei Device Co., Ltd.
# 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.

import("//base/location/location/config.gni")
import("//build/test.gni")

module_output_path = "location/location"

ohos_unittest("LocatorServiceAbilityTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./../../cfi_blocklist.txt"
  }
  branch_protector_ret = "pac_ret"
  module_out_path = module_output_path
  sources = [
    "$LOCATION_ROOT_DIR/test/location_locator/source/callback_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/country_code_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/fusion_controller_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/geo_convert_callback_host_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/location_approximately_permission_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/location_config_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/location_without_permission_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/locator_agent_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/locator_background_proxy_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/locator_event_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/locator_impl_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/locator_required_data_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/locator_service_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/permission_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/poi_info_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/report_manager_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/work_record_test.cpp",
    "$LOCATION_ROOT_DIR/test/location_locator/source/beacon_fence_manager_test.cpp",
  ]

  include_dirs = [
    "$LOCATION_ROOT_DIR/interfaces/inner_api/include",
    "$LOCATION_ROOT_DIR/test/location_locator/include",
    "$LOCATION_ROOT_DIR/test/location_locator/mock/include",
    "$LOCATION_ROOT_DIR/test/mock/include",
    "$SUBSYSTEM_DIR/location_locator/callback/include",
    "$SUBSYSTEM_DIR/location_locator/locator/include",
    "$LOCATION_ROOT_DIR/frameworks/js/napi/include",
  ]

  deps = [
    "$LOCATION_ROOT_DIR/frameworks/js/napi:geolocation_static",
    "$LOCATION_ROOT_DIR/frameworks/location_common/common:lbsservice_common_static",
    "$LOCATION_ROOT_DIR/frameworks/native/geofence_sdk:geofence_sdk_static",
    "$LOCATION_ROOT_DIR/frameworks/native/locator_agent:locator_agent",
    "$LOCATION_ROOT_DIR/frameworks/native/locator_sdk:liblocator_interface_proxy",
    "$LOCATION_ROOT_DIR/frameworks/native/locator_sdk:liblocator_interface_stub",
    "$LOCATION_ROOT_DIR/frameworks/native/locator_sdk:locator_sdk_static",
    "$SUBSYSTEM_DIR/location_locator/locator:lbsservice_locator_static",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_connect_callback_stub",
    "ability_runtime:app_manager",
    "access_token:libaccesstoken_sdk",
    "access_token:libnativetoken",
    "access_token:libtoken_setproc",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "common_event_service:cesfwk_innerkits",
    "distributed_notification_service:ans_innerkits",
    "eventhandler:libeventhandler",
    "ffrt:libffrt",
    "googletest:gmock_main",
    "googletest:gtest_main",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "init:libbegetutil",
    "ipc:ipc_core",
    "napi:ace_napi",
    "safwk:system_ability_fwk",
    "samgr:dynamic_cache",
    "samgr:samgr_proxy",
    "selinux_adapter:librestorecon",
  ]

  defines = []
  if (communication_wifi_enable) {
    external_deps += [ "wifi:wifi_sdk" ]
    defines += [ "WIFI_ENABLE" ]
  }

  if (communication_bluetooth_enable) {
    external_deps += [ "bluetooth:btframework" ]
    defines += [ "BLUETOOTH_ENABLE" ]
  }

  if (location_feature_with_geocode) {
    defines += [ "FEATURE_GEOCODE_SUPPORT" ]
  }

  if (location_feature_with_gnss) {
    defines += [ "FEATURE_GNSS_SUPPORT" ]
  }

  if (hdf_drivers_interface_location_geofence_enable) {
    external_deps += [
      "drivers_interface_location_geofence:liblocation_geofence_proxy_2.0",
      "drivers_interface_location_geofence:liblocation_geofence_proxy_3.0",
    ]
    defines += [ "HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE" ]
  }

  if (location_feature_with_network) {
    defines += [ "FEATURE_NETWORK_SUPPORT" ]
  }

  if (location_feature_with_passive) {
    defines += [ "FEATURE_PASSIVE_SUPPORT" ]
  }

  if (is_emulator) {
    defines += [ "EMULATOR_ENABLED" ]
  }
  if (notification_distributed_notification_service_enable) {
    defines += [ "NOTIFICATION_ENABLE" ]
  }
  module_out_path = module_output_path
}

group("unittest") {
  testonly = true
  deps = []

  deps += [ ":LocatorServiceAbilityTest" ]
}