# 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("dawn_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("dawn_unittests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_unittests_main.cc" ]
  }
  source_set("dawn_end2end_tests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_end2end_tests_main.cc" ]
  }
  source_set("dawn_perf_tests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_perf_tests_main.cc" ]
  }
}

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

dawn_json_generator("mock_webgpu_gen") {
  target = "mock_webgpu"
  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("dawn_native_mocks_sources") {
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn_native:dawn_native_sources",
    "${dawn_root}/src/dawn_native:dawn_native_static",
    "${dawn_root}/src/utils:dawn_utils",
  ]

  # Add internal dawn_native config for internal unittests.
  configs += [ "${dawn_root}/src/dawn_native: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",
  ]
}

test("dawn_unittests") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  deps = [
    ":dawn_native_mocks_sources",
    ":gmock_and_gtest",
    ":mock_webgpu_gen",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawn_proc",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn_native:dawn_native_sources",
    "${dawn_root}/src/dawn_native:dawn_native_static",
    "${dawn_root}/src/dawn_wire",
    "${dawn_root}/src/utils:dawn_utils",
  ]

  # Add internal dawn_native config for internal unittests.
  configs += [ "${dawn_root}/src/dawn_native: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/DestroyObjectTests.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/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/RequestDeviceValidationTests.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/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/WireInjectSwapChainTests.cpp",
    "unittests/wire/WireInjectTextureTests.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 += [ ":dawn_unittests_main" ]
  } else {
    sources += [ "UnittestsMain.cpp" ]
  }
}

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

source_set("dawn_end2end_tests_sources") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawn_proc",
    "${dawn_root}/src/dawn:dawncpp",

    # Statically linked because the end2end white_box tests use Dawn internals.
    "${dawn_root}/src/dawn_native:dawn_native_static",
    "${dawn_root}/src/dawn_wire",
    "${dawn_root}/src/utils:dawn_utils",
  ]

  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/D3D12VideoViewsTests.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/utils:dawn_glfw" ]
  }
}

source_set("dawn_white_box_tests_sources") {
  configs += [ "${dawn_root}/src/dawn_native:dawn_native_internal" ]
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawn_proc",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn_native:dawn_native_sources",

    # Statically linked because the end2end white_box tests use Dawn internals.
    "${dawn_root}/src/dawn_native:dawn_native_static",
    "${dawn_root}/src/dawn_wire",
    "${dawn_root}/src/utils:dawn_utils",
  ]

  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/VulkanImageWrappingTestsDmaBuf.cpp" ]
    } else if (is_linux) {
      sources += [ "white_box/VulkanImageWrappingTestsOpaqueFD.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/D3D12ResidencyTests.cpp",
      "white_box/D3D12ResourceHeapTests.cpp",
    ]
  }

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

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

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

  libs = []
}

test("dawn_end2end_tests") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  deps = [
    ":dawn_end2end_tests_sources",
    ":dawn_white_box_tests_sources",
    ":gmock_and_gtest",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawn_proc",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn_native:dawn_native_static",
    "${dawn_root}/src/dawn_wire",
    "${dawn_root}/src/utils:dawn_utils",
  ]

  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 += [ ":dawn_end2end_tests_main" ]
  } else {
    sources += [ "End2EndTestsMain.cpp" ]
  }

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

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

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

test("dawn_perf_tests") {
  configs += [ "${dawn_root}/src/common:dawn_internal" ]

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/common",
    "${dawn_root}/src/dawn:dawn_proc",
    "${dawn_root}/src/dawn:dawncpp",
    "${dawn_root}/src/dawn_native",
    "${dawn_root}/src/dawn_platform",
    "${dawn_root}/src/dawn_wire",
    "${dawn_root}/src/utils:dawn_utils",
  ]

  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 += [ ":dawn_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/utils:dawn_glfw" ]
  }
}
