# Copyright (c) 2024 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("//build/test.gni")
import("//foundation/multimedia/image_effect/config.gni")

module_output_path = "image_effect/image_effect_unittest"

base_include_dirs = [
  "$image_effect_root_dir/interfaces/inner_api/native/memory",
  "$image_effect_root_dir/frameworks/native/effect/base",
  "$image_effect_root_dir/frameworks/native/capi",
  "$image_effect_root_dir/frameworks/native/effect/pipeline/include/core",
  "$image_effect_root_dir/frameworks/native/efilter/filterimpl/crop",
  "$image_effect_root_dir/frameworks/native/utils/common",
  "$image_effect_root_dir/frameworks/native/utils/dfx",
]

base_sources = [
  "$image_effect_root_dir/frameworks/native/capi/native_common_utils.cpp",
  "$image_effect_root_dir/frameworks/native/effect/base/external_loader.cpp",
  "$image_effect_root_dir/frameworks/native/effect/manager/memory_manager/effect_memory.cpp",
  "$image_effect_root_dir/frameworks/native/effect/manager/memory_manager/effect_memory_manager.cpp",
  "$image_effect_root_dir/frameworks/native/effect/pipeline/core/pipeline_core.cpp",
  "$image_effect_root_dir/frameworks/native/effect/pipeline/core/port.cpp",
  "$image_effect_root_dir/frameworks/native/efilter/filterimpl/crop/crop_efilter.cpp",
  "$image_effect_root_dir/frameworks/native/utils/common/common_utils.cpp",
  "$image_effect_root_dir/frameworks/native/utils/common/json_helper.cpp",
  "$image_effect_root_dir/frameworks/native/utils/dfx/error_code.cpp",
]

ohos_unittest("image_effect_unittest") {
  module_out_path = module_output_path
  resource_config_file = "$image_effect_root_dir/test/resource/ohos_test.xml"

  include_dirs = base_include_dirs

  include_dirs += [
    "$image_effect_root_dir/frameworks/native/effect/render_environment/gpu_render",
    "$image_effect_root_dir/frameworks/native/effect/render_environment/utils",
    "$image_effect_root_dir/frameworks/native/efilter/filterimpl/brightness",
    "$image_effect_root_dir/frameworks/native/efilter/filterimpl/contrast",
    "$image_effect_root_dir/frameworks/native/efilter/filterimpl/crop",
    "$image_effect_root_dir/frameworks/native/capi",
    "$image_effect_root_dir/test/unittest/mock/include",
    "$image_effect_root_dir/test/unittest/common",
    "$image_effect_root_dir/test/unittest/utils",
  ]

  sources = base_sources

  sources += [
    "$image_effect_root_dir/test/unittest/TestEffectMemoryManager.cpp",
    "$image_effect_root_dir/test/unittest/TestEffectPipeline.cpp",
    "$image_effect_root_dir/test/unittest/TestImageEffect.cpp",
    "$image_effect_root_dir/test/unittest/TestJsonHelper.cpp",
    "$image_effect_root_dir/test/unittest/TestPort.cpp",
    "$image_effect_root_dir/test/unittest/TestRenderEnvironment.cpp",
    "$image_effect_root_dir/test/unittest/TestUtils.cpp",
    "$image_effect_root_dir/test/unittest/image_effect_capi_unittest.cpp",
    "$image_effect_root_dir/test/unittest/image_effect_inner_unittest.cpp",
    "$image_effect_root_dir/test/unittest/mock/src/mock_picture.cpp",
    "$image_effect_root_dir/test/unittest/mock/src/mock_pixel_map.cpp",
    "$image_effect_root_dir/test/unittest/mock/src/mock_producer_surface.cpp",
    "$image_effect_root_dir/test/unittest/native_image_effect_unittest.cpp",
    "$image_effect_root_dir/test/unittest/utils/test_native_buffer_utils.cpp",
    "$image_effect_root_dir/test/unittest/utils/test_pixel_map_utils.cpp",
  ]

  deps = [
    "$image_effect_root_dir/frameworks/native:image_effect",
    "$image_effect_root_dir/frameworks/native:image_effect_impl",
    "//third_party/googletest:gmock_main",
    "//third_party/googletest:gtest_main",
  ]

  external_deps = [
    "cJSON:cjson",
    "c_utils:utils",
    "drivers_interface_display:libdisplay_commontype_proxy_1.0",
    "graphic_2d:EGL",
    "graphic_2d:GLESv3",
    "graphic_surface:surface",
    "graphic_surface:sync_fence",
    "hilog:libhilog",
    "hitrace:hitrace_meter",
    "image_framework:image_native",
    "image_framework:picture",
    "image_framework:pixelmap",
    "ipc:ipc_single",
    "libexif:libexif",
    "napi:ace_napi",
  ]

  use_exceptions = true

  cflags = [
    "-fPIC",
    "-Werror=unused",
    "-fno-access-control",  # Ignore Private Member Access Control
  ]

  cflags_cc = cflags
}