# Copyright 2015 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("../../gni/angle.gni")

angle_unittests_sources = [
  "../../util/test_utils_unittest.cpp",
  "../../util/test_utils_unittest_helper.h",
  "../common/BinaryStream_unittest.cpp",
  "../common/CircularBuffer_unittest.cpp",
  "../common/FastVector_unittest.cpp",
  "../common/FixedQueue_unittest.cpp",
  "../common/FixedVector_unittest.cpp",
  "../common/MemoryBuffer_unittest.cpp",
  "../common/Optional_unittest.cpp",
  "../common/PoolAlloc_unittest.cpp",
  "../common/SimpleMutex_unittest.cpp",
  "../common/WorkerThread_unittest.cpp",
  "../common/aligned_memory_unittest.cpp",
  "../common/angleutils_unittest.cpp",
  "../common/bitset_utils_unittest.cpp",
  "../common/hash_utils_unittest.cpp",
  "../common/mathutil_unittest.cpp",
  "../common/matrix_utils_unittest.cpp",
  "../common/span_unittest.cpp",
  "../common/span_util_unittest.cpp",
  "../common/string_utils_unittest.cpp",
  "../common/system_utils_unittest.cpp",
  "../common/utilities_unittest.cpp",
  "../common/vector_utils_unittest.cpp",
  "../feature_support_util/feature_support_util_unittest.cpp",
  "../gpu_info_util/SystemInfo_unittest.cpp",
  "../image_util/AstcDecompressorTestUtils.h",
  "../image_util/AstcDecompressor_unittest.cpp",
  "../image_util/LoadToNative_unittest.cpp",
  "../libANGLE/BlendStateExt_unittest.cpp",
  "../libANGLE/BlobCache_unittest.cpp",
  "../libANGLE/Config_unittest.cpp",
  "../libANGLE/ContextMutex_unittest.cpp",
  "../libANGLE/Decompress_unittest.cpp",
  "../libANGLE/Fence_unittest.cpp",
  "../libANGLE/GlobalMutex_unittest.cpp",
  "../libANGLE/HandleAllocator_unittest.cpp",
  "../libANGLE/ImageIndexIterator_unittest.cpp",
  "../libANGLE/Image_unittest.cpp",
  "../libANGLE/Observer_unittest.cpp",
  "../libANGLE/Program_unittest.cpp",
  "../libANGLE/ResourceManager_unittest.cpp",
  "../libANGLE/ResourceMap_unittest.cpp",
  "../libANGLE/SizedMRUCache_unittest.cpp",
  "../libANGLE/Surface_unittest.cpp",
  "../libANGLE/TransformFeedback_unittest.cpp",
  "../libANGLE/UnlockedTailCall_unittest.cpp",
  "../libANGLE/VaryingPacking_unittest.cpp",
  "../libANGLE/VertexArray_unittest.cpp",
  "../libANGLE/renderer/BufferImpl_mock.h",
  "../libANGLE/renderer/FramebufferImpl_mock.h",
  "../libANGLE/renderer/ImageImpl_mock.h",
  "../libANGLE/renderer/ProgramImpl_mock.h",
  "../libANGLE/renderer/RenderbufferImpl_mock.h",
  "../libANGLE/renderer/TextureImpl_mock.h",
  "../libANGLE/renderer/TransformFeedbackImpl_mock.h",
  "../libANGLE/renderer/serial_utils_unittest.cpp",
  "angle_unittests_utils.h",
  "preprocessor_tests/MockDiagnostics.h",
  "preprocessor_tests/MockDirectiveHandler.h",
  "preprocessor_tests/PreprocessorTest.cpp",
  "preprocessor_tests/PreprocessorTest.h",
  "preprocessor_tests/char_test.cpp",
  "preprocessor_tests/comment_test.cpp",
  "preprocessor_tests/define_test.cpp",
  "preprocessor_tests/error_test.cpp",
  "preprocessor_tests/extension_test.cpp",
  "preprocessor_tests/identifier_test.cpp",
  "preprocessor_tests/if_test.cpp",
  "preprocessor_tests/input_test.cpp",
  "preprocessor_tests/location_test.cpp",
  "preprocessor_tests/number_test.cpp",
  "preprocessor_tests/operator_test.cpp",
  "preprocessor_tests/pragma_test.cpp",
  "preprocessor_tests/space_test.cpp",
  "preprocessor_tests/token_test.cpp",
  "preprocessor_tests/version_test.cpp",
  "test_expectations/GPUTestExpectationsParser_unittest.cpp",
  "test_utils/angle_test_instantiate.h",
  "test_utils/compiler_test.cpp",
  "test_utils/compiler_test.h",
]

angle_unittests_compiler_tests_sources = [
  "compiler_tests/API_test.cpp",
  "compiler_tests/CollectVariables_test.cpp",
  "compiler_tests/ConstructCompiler_test.cpp",
  "compiler_tests/FloatLex_test.cpp",
  "compiler_tests/GeometryShader_test.cpp",
  "compiler_tests/GlFragDataNotModified_test.cpp",
  "compiler_tests/HashNames_test.cpp",
  "compiler_tests/ImmutableString_test.cpp",
  "compiler_tests/IntermNode_test.cpp",
  "compiler_tests/NV_draw_buffers_test.cpp",
  "compiler_tests/Parse_test.cpp",
  "compiler_tests/PruneEmptyCases_test.cpp",
  "compiler_tests/PruneEmptyDeclarations_test.cpp",
  "compiler_tests/PruneNoOps_test.cpp",
  "compiler_tests/PrunePureLiteralStatements_test.cpp",
  "compiler_tests/PruneUnusedFunctions_test.cpp",
  "compiler_tests/QualificationOrderESSL31_test.cpp",
  "compiler_tests/QualificationOrder_test.cpp",
  "compiler_tests/RecordConstantPrecision_test.cpp",
  "compiler_tests/RemoveUnreferencedVariables_test.cpp",
  "compiler_tests/SamplerMultisample_test.cpp",
  "compiler_tests/ShCompile_test.cpp",
  "compiler_tests/ShaderValidation_test.cpp",
  "compiler_tests/ShaderVariable_test.cpp",
  "compiler_tests/SimplifyLoopConditions_test.cpp",
  "compiler_tests/TextureFunction_test.cpp",
  "compiler_tests/TypeTracking_test.cpp",
  "compiler_tests/Type_test.cpp",
  "compiler_tests/VariablePacker_test.cpp",
  "compiler_tests/WorkGroupSize_test.cpp",
  "test_utils/ShaderCompileTreeTest.cpp",
  "test_utils/ShaderCompileTreeTest.h",
]

angle_unittests_glsl_mac_sources =
    [ "compiler_tests/UnfoldShortCircuitAST_test.cpp" ]

# TODO(jmadill): should probably call this windows sources
angle_unittests_hlsl_sources = [
  "compiler_tests/HLSLOutput_test.cpp",
  "compiler_tests/UnrollFlatten_test.cpp",
]

angle_unittests_gl_sources = [
  "../libANGLE/renderer/gl/DisplayGL_unittest.cpp",
  "../libANGLE/renderer/gl/renderergl_utils_unittest.cpp",
]

angle_unittests_msl_sources = [
  "../common/apple/ObjCPtr_test.mm",
  "../libANGLE/renderer/metal/VertexArrayMtl_unittest.mm",
  "../tests/compiler_tests/MSLOutput_test.cpp",
]

angle_unittests_wgsl_sources = [ "../tests/compiler_tests/WGSLOutput_test.cpp" ]

angle_unittests_sources += [ "compiler_tests/ImmutableString_test_autogen.cpp" ]

if (!is_android && !is_fuchsia && !is_ios) {
  angle_unittests_sources += [ "test_utils/runner/TestSuite_unittest.cpp" ]
}
