# Copyright 2012 The Dawn Authors
#
# 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("../../../scripts/dawn_overrides_with_defaults.gni")

import("//testing/test.gni")
import("${dawn_root}/generator/dawn_generator.gni")
import("${dawn_root}/scripts/dawn_features.gni")

group("tests") {
  testonly = true
  deps = [
    ":dawn_end2end_tests",
    ":dawn_perf_tests",
    ":dawn_unittests",
  ]
}

###############################################################################
# Gtest Gmock - Handle building inside and outside of Chromium.
###############################################################################

# When building outside of Chromium we need to define our own targets for GTest
# and GMock. However when compiling inside of Chromium we need to reuse the
# existing targets, both because Chromium has a special harness for swarming
# and because otherwise the "gn check" fails.

if (!build_with_chromium) {
  # When we aren't in Chromium we define out own targets based on the location
  # of the googletest repo.
  googletest_dir = dawn_googletest_dir

  config("gtest_config") {
    include_dirs = [
      "${googletest_dir}/googletest",
      "${googletest_dir}/googletest/include",
    ]
  }

  static_library("gtest") {
    testonly = true
    sources = [ "${googletest_dir}/googletest/src/gtest-all.cc" ]
    public_configs = [ ":gtest_config" ]
  }

  config("gmock_config") {
    include_dirs = [
      "${googletest_dir}/googlemock",
      "${googletest_dir}/googlemock/include",
      "${googletest_dir}/googletest/include",
    ]
  }

  static_library("gmock") {
    testonly = true
    sources = [ "${googletest_dir}/googlemock/src/gmock-all.cc" ]
    public_configs = [ ":gmock_config" ]
  }

  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      ":gmock",
      ":gtest",
    ]
  }
} else {
  # When we are in Chromium we reuse its targets, and also add some deps that
  # are needed to launch the test in swarming mode.
  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      "//base",
      "//base/test:test_support",
      "//testing/gmock",
      "//testing/gtest",
    ]
  }
}

###############################################################################
# Wrapping of Chromium targets
###############################################################################

# These targets are separated because they are Chromium sources files that
# can't use the dawn_internal config, otherwise Dawn's warning flags get
# applied while compiling a bunch of Chromium's //base (via header inclusion)
if (build_with_chromium) {
  source_set("unittests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_unittests_main.cc" ]
  }
  source_set("end2end_tests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_end2end_tests_main.cc" ]
  }
  source_set("perf_tests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_perf_tests_main.cc" ]
  }
}

###############################################################################
# Dawn test template
###############################################################################
template("dawn_test") {
  test(target_name) {
    # Copy all variables except "configs", which has a default value
    forward_variables_from(invoker, "*", [ "configs" ])
    if (defined(invoker.configs)) {
      configs += invoker.configs
    }

    configs += [ "${dawn_root}/src/dawn/common:internal_config" ]
  }
}

###############################################################################
# Dawn unittests
###############################################################################

dawn_json_generator("mock_webgpu_gen") {
  target = "mock_api"
  outputs = [
    "src/dawn/mock_webgpu.h",
    "src/dawn/mock_webgpu.cpp",
  ]
}

# Source code for mocks used for unit testing are separated from the rest of
# sources so that they aren't included in non-test builds.
source_set("native_mocks_sources") {
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn/native:sources",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
  ]

  # Add internal dawn native config for internal unittests.
  configs += [ "${dawn_root}/src/dawn/native:internal" ]

  sources = [
    "unittests/native/mocks/BindGroupLayoutMock.h",
    "unittests/native/mocks/BindGroupMock.h",
    "unittests/native/mocks/CommandBufferMock.h",
    "unittests/native/mocks/ComputePipelineMock.h",
    "unittests/native/mocks/DeviceMock.h",
    "unittests/native/mocks/ExternalTextureMock.h",
    "unittests/native/mocks/PipelineLayoutMock.h",
    "unittests/native/mocks/QuerySetMock.h",
    "unittests/native/mocks/RenderPipelineMock.h",
    "unittests/native/mocks/SamplerMock.h",
    "unittests/native/mocks/ShaderModuleMock.cpp",
    "unittests/native/mocks/ShaderModuleMock.h",
    "unittests/native/mocks/SwapChainMock.h",
    "unittests/native/mocks/TextureMock.h",
  ]
}

dawn_test("dawn_unittests") {
  deps = [
    ":gmock_and_gtest",
    ":mock_webgpu_gen",
    ":native_mocks_sources",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native:sources",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  # Add internal dawn native config for internal unittests.
  configs = [ "${dawn_root}/src/dawn/native:internal" ]

  sources = get_target_outputs(":mock_webgpu_gen")
  sources += [
    "${dawn_root}/src/dawn/wire/client/ClientMemoryTransferService_mock.cpp",
    "${dawn_root}/src/dawn/wire/client/ClientMemoryTransferService_mock.h",
    "${dawn_root}/src/dawn/wire/server/ServerMemoryTransferService_mock.cpp",
    "${dawn_root}/src/dawn/wire/server/ServerMemoryTransferService_mock.h",
    "DawnNativeTest.cpp",
    "DawnNativeTest.h",
    "MockCallback.h",
    "ToggleParser.cpp",
    "ToggleParser.h",
    "unittests/AsyncTaskTests.cpp",
    "unittests/BitSetIteratorTests.cpp",
    "unittests/BuddyAllocatorTests.cpp",
    "unittests/BuddyMemoryAllocatorTests.cpp",
    "unittests/ChainUtilsTests.cpp",
    "unittests/CommandAllocatorTests.cpp",
    "unittests/ConcurrentCacheTests.cpp",
    "unittests/EnumClassBitmasksTests.cpp",
    "unittests/EnumMaskIteratorTests.cpp",
    "unittests/ErrorTests.cpp",
    "unittests/FeatureTests.cpp",
    "unittests/GPUInfoTests.cpp",
    "unittests/GetProcAddressTests.cpp",
    "unittests/ITypArrayTests.cpp",
    "unittests/ITypBitsetTests.cpp",
    "unittests/ITypSpanTests.cpp",
    "unittests/ITypVectorTests.cpp",
    "unittests/LimitsTests.cpp",
    "unittests/LinkedListTests.cpp",
    "unittests/MathTests.cpp",
    "unittests/ObjectBaseTests.cpp",
    "unittests/PerStageTests.cpp",
    "unittests/PerThreadProcTests.cpp",
    "unittests/PlacementAllocatedTests.cpp",
    "unittests/RefBaseTests.cpp",
    "unittests/RefCountedTests.cpp",
    "unittests/ResultTests.cpp",
    "unittests/RingBufferAllocatorTests.cpp",
    "unittests/SerialMapTests.cpp",
    "unittests/SerialQueueTests.cpp",
    "unittests/SlabAllocatorTests.cpp",
    "unittests/StackContainerTests.cpp",
    "unittests/SubresourceStorageTests.cpp",
    "unittests/SystemUtilsTests.cpp",
    "unittests/ToBackendTests.cpp",
    "unittests/TypedIntegerTests.cpp",
    "unittests/native/CommandBufferEncodingTests.cpp",
    "unittests/native/CreatePipelineAsyncTaskTests.cpp",
    "unittests/native/DestroyObjectTests.cpp",
    "unittests/native/DeviceCreationTests.cpp",
    "unittests/validation/BindGroupValidationTests.cpp",
    "unittests/validation/BufferValidationTests.cpp",
    "unittests/validation/CommandBufferValidationTests.cpp",
    "unittests/validation/ComputeIndirectValidationTests.cpp",
    "unittests/validation/ComputeValidationTests.cpp",
    "unittests/validation/CopyCommandsValidationTests.cpp",
    "unittests/validation/CopyTextureForBrowserTests.cpp",
    "unittests/validation/DebugMarkerValidationTests.cpp",
    "unittests/validation/DeviceValidationTests.cpp",
    "unittests/validation/DrawIndirectValidationTests.cpp",
    "unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp",
    "unittests/validation/DynamicStateCommandValidationTests.cpp",
    "unittests/validation/ErrorScopeValidationTests.cpp",
    "unittests/validation/ExternalTextureTests.cpp",
    "unittests/validation/GetBindGroupLayoutValidationTests.cpp",
    "unittests/validation/IndexBufferValidationTests.cpp",
    "unittests/validation/InternalUsageValidationTests.cpp",
    "unittests/validation/LabelTests.cpp",
    "unittests/validation/MinimumBufferSizeValidationTests.cpp",
    "unittests/validation/MultipleDeviceTests.cpp",
    "unittests/validation/OverridableConstantsValidationTests.cpp",
    "unittests/validation/PipelineAndPassCompatibilityTests.cpp",
    "unittests/validation/QueryValidationTests.cpp",
    "unittests/validation/QueueOnSubmittedWorkDoneValidationTests.cpp",
    "unittests/validation/QueueSubmitValidationTests.cpp",
    "unittests/validation/QueueWriteBufferValidationTests.cpp",
    "unittests/validation/QueueWriteTextureValidationTests.cpp",
    "unittests/validation/RenderBundleValidationTests.cpp",
    "unittests/validation/RenderPassDescriptorValidationTests.cpp",
    "unittests/validation/RenderPipelineValidationTests.cpp",
    "unittests/validation/ResourceUsageTrackingTests.cpp",
    "unittests/validation/SamplerValidationTests.cpp",
    "unittests/validation/ShaderModuleValidationTests.cpp",
    "unittests/validation/StorageTextureValidationTests.cpp",
    "unittests/validation/TextureSubresourceTests.cpp",
    "unittests/validation/TextureValidationTests.cpp",
    "unittests/validation/TextureViewValidationTests.cpp",
    "unittests/validation/ToggleValidationTests.cpp",
    "unittests/validation/UnsafeAPIValidationTests.cpp",
    "unittests/validation/ValidationTest.cpp",
    "unittests/validation/ValidationTest.h",
    "unittests/validation/VertexBufferValidationTests.cpp",
    "unittests/validation/VertexStateValidationTests.cpp",
    "unittests/validation/VideoViewsValidationTests.cpp",
    "unittests/validation/WriteBufferTests.cpp",
    "unittests/wire/WireAdapterTests.cpp",
    "unittests/wire/WireArgumentTests.cpp",
    "unittests/wire/WireBasicTests.cpp",
    "unittests/wire/WireBufferMappingTests.cpp",
    "unittests/wire/WireCreatePipelineAsyncTests.cpp",
    "unittests/wire/WireDestroyObjectTests.cpp",
    "unittests/wire/WireDisconnectTests.cpp",
    "unittests/wire/WireErrorCallbackTests.cpp",
    "unittests/wire/WireExtensionTests.cpp",
    "unittests/wire/WireInjectDeviceTests.cpp",
    "unittests/wire/WireInjectInstanceTests.cpp",
    "unittests/wire/WireInjectSwapChainTests.cpp",
    "unittests/wire/WireInjectTextureTests.cpp",
    "unittests/wire/WireInstanceTests.cpp",
    "unittests/wire/WireMemoryTransferServiceTests.cpp",
    "unittests/wire/WireOptionalTests.cpp",
    "unittests/wire/WireQueueTests.cpp",
    "unittests/wire/WireShaderModuleTests.cpp",
    "unittests/wire/WireTest.cpp",
    "unittests/wire/WireTest.h",
    "unittests/wire/WireWGPUDevicePropertiesTests.cpp",
  ]

  if (is_win) {
    sources += [ "unittests/WindowsUtilsTests.cpp" ]
  }

  if (dawn_enable_d3d12) {
    sources += [ "unittests/d3d12/CopySplitTests.cpp" ]
  }

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    deps += [ ":unittests_main" ]
  } else {
    sources += [ "UnittestsMain.cpp" ]
  }
}

###############################################################################
# Dawn end2end tests targets
###############################################################################

source_set("end2end_tests_sources") {
  configs += [ "${dawn_root}/src/dawn/common:internal_config" ]
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",

    # Statically linked because the end2end white_box tests use Dawn internals.
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = [
    "DawnTest.h",
    "MockCallback.h",
    "ParamGenerator.h",
    "ToggleParser.cpp",
    "ToggleParser.h",
    "end2end/AdapterDiscoveryTests.cpp",
    "end2end/BasicTests.cpp",
    "end2end/BindGroupTests.cpp",
    "end2end/BufferTests.cpp",
    "end2end/BufferZeroInitTests.cpp",
    "end2end/ClipSpaceTests.cpp",
    "end2end/ColorStateTests.cpp",
    "end2end/CommandEncoderTests.cpp",
    "end2end/CompressedTextureFormatTests.cpp",
    "end2end/ComputeCopyStorageBufferTests.cpp",
    "end2end/ComputeDispatchTests.cpp",
    "end2end/ComputeLayoutMemoryBufferTests.cpp",
    "end2end/ComputeSharedMemoryTests.cpp",
    "end2end/ComputeStorageBufferBarrierTests.cpp",
    "end2end/CopyTests.cpp",
    "end2end/CopyTextureForBrowserTests.cpp",
    "end2end/CreatePipelineAsyncTests.cpp",
    "end2end/CullingTests.cpp",
    "end2end/DebugMarkerTests.cpp",
    "end2end/DeprecatedAPITests.cpp",
    "end2end/DepthBiasTests.cpp",
    "end2end/DepthStencilCopyTests.cpp",
    "end2end/DepthStencilLoadOpTests.cpp",
    "end2end/DepthStencilSamplingTests.cpp",
    "end2end/DepthStencilStateTests.cpp",
    "end2end/DestroyTests.cpp",
    "end2end/DeviceInitializationTests.cpp",
    "end2end/DeviceLostTests.cpp",
    "end2end/DrawIndexedIndirectTests.cpp",
    "end2end/DrawIndexedTests.cpp",
    "end2end/DrawIndirectTests.cpp",
    "end2end/DrawTests.cpp",
    "end2end/DynamicBufferOffsetTests.cpp",
    "end2end/EntryPointTests.cpp",
    "end2end/ExternalTextureTests.cpp",
    "end2end/FirstIndexOffsetTests.cpp",
    "end2end/GpuMemorySynchronizationTests.cpp",
    "end2end/IndexFormatTests.cpp",
    "end2end/MaxLimitTests.cpp",
    "end2end/MemoryAllocationStressTests.cpp",
    "end2end/MultisampledRenderingTests.cpp",
    "end2end/MultisampledSamplingTests.cpp",
    "end2end/NonzeroBufferCreationTests.cpp",
    "end2end/NonzeroTextureCreationTests.cpp",
    "end2end/ObjectCachingTests.cpp",
    "end2end/OpArrayLengthTests.cpp",
    "end2end/PipelineLayoutTests.cpp",
    "end2end/PrimitiveStateTests.cpp",
    "end2end/PrimitiveTopologyTests.cpp",
    "end2end/QueryTests.cpp",
    "end2end/QueueTests.cpp",
    "end2end/QueueTimelineTests.cpp",
    "end2end/ReadOnlyDepthStencilAttachmentTests.cpp",
    "end2end/RenderAttachmentTests.cpp",
    "end2end/RenderBundleTests.cpp",
    "end2end/RenderPassLoadOpTests.cpp",
    "end2end/RenderPassTests.cpp",
    "end2end/SamplerFilterAnisotropicTests.cpp",
    "end2end/SamplerTests.cpp",
    "end2end/ScissorTests.cpp",
    "end2end/ShaderFloat16Tests.cpp",
    "end2end/ShaderTests.cpp",
    "end2end/StorageTextureTests.cpp",
    "end2end/SubresourceRenderAttachmentTests.cpp",
    "end2end/Texture3DTests.cpp",
    "end2end/TextureFormatTests.cpp",
    "end2end/TextureSubresourceTests.cpp",
    "end2end/TextureViewTests.cpp",
    "end2end/TextureZeroInitTests.cpp",
    "end2end/VertexFormatTests.cpp",
    "end2end/VertexOnlyRenderPipelineTests.cpp",
    "end2end/VertexStateTests.cpp",
    "end2end/ViewportOrientationTests.cpp",
    "end2end/ViewportTests.cpp",
  ]

  # Validation tests that need OS windows live in end2end tests.
  sources += [
    "unittests/validation/ValidationTest.cpp",
    "unittests/validation/ValidationTest.h",
  ]

  libs = []

  if (dawn_enable_d3d12) {
    sources += [
      "end2end/D3D12CachingTests.cpp",
      "end2end/D3D12ResourceWrappingTests.cpp",
      "end2end/VideoViewsTests_win.cpp",
    ]
    libs += [
      "d3d11.lib",
      "dxgi.lib",
    ]
  }

  if (dawn_enable_metal) {
    sources += [ "end2end/IOSurfaceWrappingTests.cpp" ]
    frameworks = [ "IOSurface.framework" ]
  }

  if (dawn_enable_opengl) {
    assert(dawn_supports_glfw_for_windowing)
  }

  if (dawn_supports_glfw_for_windowing) {
    sources += [
      "end2end/SwapChainTests.cpp",
      "end2end/SwapChainValidationTests.cpp",
      "end2end/WindowSurfaceTests.cpp",
    ]
    deps += [ "${dawn_root}/src/dawn/utils:glfw" ]
  }

  if (dawn_enable_d3d12 || (dawn_enable_vulkan && is_chromeos)) {
    sources += [
      "end2end/VideoViewsTests.cpp",
      "end2end/VideoViewsTests.h",
    ]
  }

  if (dawn_enable_vulkan && is_chromeos) {
    sources += [ "end2end/VideoViewsTests_gbm.cpp" ]
  }
}

source_set("white_box_tests_sources") {
  configs += [ "${dawn_root}/src/dawn/native:internal" ]
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native:sources",

    # Statically linked because the end2end white_box tests use Dawn internals.
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = [
    "DawnTest.h",
    "ParamGenerator.h",
    "ToggleParser.h",
  ]

  if (dawn_enable_vulkan) {
    deps += [ "${dawn_root}/third_party/khronos:vulkan_headers" ]

    if (is_chromeos) {
      sources += [
        "white_box/VulkanImageWrappingTests.cpp",
        "white_box/VulkanImageWrappingTests.h",
        "white_box/VulkanImageWrappingTests_DmaBuf.cpp",
      ]
    } else if (is_linux) {
      sources += [
        "white_box/VulkanImageWrappingTests.cpp",
        "white_box/VulkanImageWrappingTests.h",
        "white_box/VulkanImageWrappingTests_OpaqueFD.cpp",
      ]
    }

    if (dawn_enable_error_injection) {
      sources += [ "white_box/VulkanErrorInjectorTests.cpp" ]
    }
  }

  sources += [
    "white_box/BufferAllocatedSizeTests.cpp",
    "white_box/InternalResourceUsageTests.cpp",
    "white_box/InternalStorageBufferBindingTests.cpp",
    "white_box/QueryInternalShaderTests.cpp",
  ]

  if (dawn_enable_d3d12) {
    sources += [
      "white_box/D3D12DescriptorHeapTests.cpp",
      "white_box/D3D12GPUTimestampCalibrationTests.cpp",
      "white_box/D3D12ResidencyTests.cpp",
      "white_box/D3D12ResourceHeapTests.cpp",
    ]
  }

  if (dawn_enable_metal) {
    sources += [ "white_box/MetalAutoreleasePoolTests.mm" ]
  }

  if (dawn_enable_opengl) {
    deps += [ "${dawn_root}/src/dawn/utils:glfw" ]
  }

  if (dawn_enable_opengles) {
    sources += [ "white_box/EGLImageWrappingTests.cpp" ]
    deps += [ "//third_party/angle:libEGL" ]
  }

  libs = []
}

dawn_test("dawn_end2end_tests") {
  deps = [
    ":end2end_tests_sources",
    ":gmock_and_gtest",
    ":white_box_tests_sources",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = [
    "DawnTest.cpp",
    "DawnTest.h",
  ]

  libs = []

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    deps += [ ":end2end_tests_main" ]
  } else {
    sources += [ "End2EndTestsMain.cpp" ]
  }

  if (dawn_enable_opengl) {
    deps += [ "${dawn_root}/src/dawn/utils:glfw" ]
  }

  if (is_chromeos) {
    libs += [ "gbm" ]
  }
}

###############################################################################
# Dawn perf tests
###############################################################################

dawn_test("dawn_perf_tests") {
  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native",
    "${dawn_root}/src/dawn/platform",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = [
    "DawnTest.cpp",
    "DawnTest.h",
    "ParamGenerator.h",
    "ToggleParser.cpp",
    "ToggleParser.h",
    "perf_tests/BufferUploadPerf.cpp",
    "perf_tests/DawnPerfTest.cpp",
    "perf_tests/DawnPerfTest.h",
    "perf_tests/DawnPerfTestPlatform.cpp",
    "perf_tests/DawnPerfTestPlatform.h",
    "perf_tests/DrawCallPerf.cpp",
    "perf_tests/ShaderRobustnessPerf.cpp",
    "perf_tests/SubresourceTrackingPerf.cpp",
  ]

  libs = []

  # When building inside Chromium, use their gtest main function and the
  # other perf test scaffolding in order to run in swarming correctly.
  if (build_with_chromium) {
    deps += [ ":perf_tests_main" ]
    data_deps = [ "//testing:run_perf_test" ]
  } else {
    sources += [ "PerfTestsMain.cpp" ]
  }

  if (dawn_enable_metal) {
    frameworks = [ "IOSurface.framework" ]
  }

  if (dawn_enable_opengl) {
    deps += [ "${dawn_root}/src/dawn/utils:glfw" ]
  }
}
