//
// Copyright (C) 2016 Google, Inc.
// Copyright (C) 2022-2024 Arm Limited.
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
//    Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//
//    Redistributions in binary form must reproduce the above
//    copyright notice, this list of conditions and the following
//    disclaimer in the documentation and/or other materials provided
//    with the distribution.
//
//    Neither the name of Google Inc. nor the names of its
//    contributors may be used to endorse or promote products derived
//    from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.

#include <gtest/gtest.h>

#include "TestFixture.h"

namespace glslangtest {
namespace {

using CompileToAstTest = GlslangTest<::testing::TestWithParam<std::string>>;

using CompileToAstTestNV = GlslangTest<::testing::TestWithParam<std::string>>;

TEST_P(CompileToAstTest, FromFile)
{
    loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
                            Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
                            Target::AST);
}

// Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled).
TEST_P(CompileToAstTestNV, FromFile)
{
    loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
                            Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
                            Target::AST);
}

// clang-format off
INSTANTIATE_TEST_SUITE_P(
    Glsl, CompileToAstTest,
    ::testing::ValuesIn(std::vector<std::string>({
        "sample.frag",
        "sample.vert",
        "decls.frag",
        "specExamples.frag",
        "specExamples.vert",
        "versionsClean.frag",
        "versionsClean.vert",
        "versionsErrors.frag",
        "versionsErrors.vert",
        "100.frag",
        "100samplerExternal.frag",
        "120.vert",
        "120.frag",
        "130.vert",
        "130.frag",
        "140.vert",
        "140.frag",
        "150.vert",
        "150.geom",
        "150.frag",
        "precision.frag",
        "precision.vert",
        "nonSquare.vert",
        "matrixError.vert",
        "cppSimple.vert",
        "cppIndent.vert",
        "cppIntMinOverNegativeOne.frag",
        "cppMerge.frag",
        "cppNest.vert",
        "cppBad.vert",
        "cppBad2.vert",
        "cppBad3.vert",
        "cppBad4.vert",
        "cppBad5.vert",
        "cppComplexExpr.vert",
        "cppDeepNest.frag",
        "cppPassMacroName.frag",
        "cppRelaxSkipTokensErrors.vert",
        "badChars.frag",
        "pointCoord.frag",
        "array.frag",
        "array100.frag",
        "comment.frag",
        "300.vert",
        "300.frag",
        "300BuiltIns.frag",
        "300layout.vert",
        "300layout.frag",
        "300operations.frag",
        "300block.frag",
        "300samplerExternal.frag",
        "300samplerExternalYUV.frag",
        "310.comp",
        "310.vert",
        "310.geom",
        "310.frag",
        "310.tesc",
        "310.tese",
        "310implicitSizeArrayError.vert",
        "310.inheritMemory.frag",
        "310AofA.vert",
        "310runtimeArray.vert",
        "320.comp",
        "320.vert",
        "320.geom",
        "320.frag",
        "320.tesc",
        "320.tese",
        "330.frag",
        "330comp.frag",
        "constErrors.frag",
        "constFold.frag",
        "constFoldIntMin.frag",
        "errors.frag",
        "forwardRef.frag",
        "uint.frag",
        "switch.frag",
        "tokenLength.vert",
        "100Limits.vert",
        "100scope.vert",
        "110scope.vert",
        "300scope.vert",
        "400.frag",
        "400.vert",
        "410.vert",
        "420.comp",
        "420.frag",
        "420.vert",
        "420.geom",
        "420_size_gl_in.geom",
        "430scope.vert",
        "lineContinuation100.vert",
        "lineContinuation.vert",
        "numeral.frag",
        "400.geom",
        "400.tesc",
        "400.tese",
        "410.tesc",
        "420.tesc",
        "420.tese",
        "410.geom",
        "430.vert",
        "430.comp",
        "430AofA.frag",
        "435.vert",
        "440.vert",
        "440.frag",
        "450.vert",
        "450.geom",
        "450.tesc",
        "450.tese",
        "450.frag",
        "450.comp",
        "460.frag",
        "460.vert",
        "dce.frag",
        "atomic_uint.frag",
        "implicitInnerAtomicUint.frag",
        "aggOps.frag",
        "always-discard.frag",
        "always-discard2.frag",
        "conditionalDiscard.frag",
        "conversion.frag",
        "dataOut.frag",
        "dataOutIndirect.frag",
        "deepRvalue.frag",
        "depthOut.frag",
        "discard-dce.frag",
        "doWhileLoop.frag",
        "earlyReturnDiscard.frag",
        "flowControl.frag",
        "forLoop.frag",
        "functionCall.frag",
        "functionSemantics.frag",
        "length.frag",
        "localAggregates.frag",
        "loops.frag",
        "loopsArtificial.frag",
        "matrix.frag",
        "matrix2.frag",
        "mixedArrayDecls.frag",
        "nonuniform.frag",
        "newTexture.frag",
        "Operations.frag",
        "overlongLiteral.frag",
        "prepost.frag",
        "runtimeArray.vert",
        "simpleFunctionCall.frag",
        "stringToDouble.vert",
        "struct.error.frag",
        "structAssignment.frag",
        "structDeref.frag",
        "structure.frag",
        "swizzle.frag",
        "invalidSwizzle.vert",
        "syntaxError.frag",
        "test.frag",
        "texture.frag",
        "tokenPaste.vert",
        "types.frag",
        "uniformArray.frag",
        "variableArrayIndex.frag",
        "varyingArray.frag",
        "varyingArrayIndirect.frag",
        "voidFunction.frag",
        "whileLoop.frag",
        "nonVulkan.frag",
        "negativeArraySize.comp",
        "precise.tesc",
        "precise_struct_block.vert",
        "maxClipDistances.vert",
        "findFunction.frag",
        "noMatchingFunction.frag",
        "constantUnaryConversion.comp",
        "xfbUnsizedArray.error.vert",
        "xfbUnsizedArray.error.tese",
        "glsl.140.layoutOffset.error.vert",
        "glsl.430.layoutOffset.error.vert",
        "glsl.450.subgroup.frag",
        "glsl.450.subgroup.geom",
        "glsl.450.subgroup.tesc",
        "glsl.450.subgroup.tese",
        "glsl.450.subgroup.vert",
        "glsl.450.subgroupArithmetic.comp",
        "glsl.450.subgroupBasic.comp",
        "glsl.450.subgroupBallot.comp",
        "glsl.450.subgroupBallotNeg.comp",
        "glsl.450.subgroupClustered.comp",
        "glsl.450.subgroupClusteredNeg.comp",
        "glsl.450.subgroupPartitioned.comp",
        "glsl.450.subgroupRotate.comp",
        "glsl.450.subgroupShuffle.comp",
        "glsl.450.subgroupShuffleRelative.comp",
        "glsl.450.subgroupQuad.comp",
        "glsl.450.subgroupVote.comp",
        "glsl.460.subgroup.mesh",
        "glsl.460.subgroup.task",
        "glsl.460.subgroup.rahit",
        "glsl.460.subgroup.rcall",
        "glsl.460.subgroup.rchit",
        "glsl.460.subgroup.rgen",
        "glsl.460.subgroup.rint",
        "glsl.460.subgroup.rmiss",
        "glsl.es300.layoutOffset.error.vert",
        "glsl.es320.subgroup.frag",
        "glsl.es320.subgroup.geom",
        "glsl.es320.subgroup.tesc",
        "glsl.es320.subgroup.tese",
        "glsl.es320.subgroup.vert",
        "glsl.es320.subgroupArithmetic.comp",
        "glsl.es320.subgroupBasic.comp",
        "glsl.es320.subgroupBallot.comp",
        "glsl.es320.subgroupBallotNeg.comp",
        "glsl.es320.subgroupClustered.comp",
        "glsl.es320.subgroupClusteredNeg.comp",
        "glsl.es320.subgroupPartitioned.comp",
        "glsl.es320.subgroupRotate.comp",
        "glsl.es320.subgroupShuffle.comp",
        "glsl.es320.subgroupShuffleRelative.comp",
        "glsl.es320.subgroupQuad.comp",
        "glsl.es320.subgroupVote.comp",
        "glsl.es320.extTextureShadowLod.frag",
        "gl_samplemask_array_size.frag",
        "glsl.ext.textureShadowLod.frag",
        "terminate.frag",
        "terminate.vert",
        "negativeWorkGroupSize.comp",
        "textureoffset_sampler2darrayshadow.vert",
        "atomicAdd.comp",
        "GL_ARB_gpu_shader5.u2i.vert",
        "textureQueryLOD.frag",
        "atomicCounterARBOps.vert",
        "GL_EXT_shader_integer_mix.vert",
        "GL_ARB_draw_instanced.vert",
        "GL_ARB_fragment_coord_conventions.vert",
        "GL_ARB_bindless_texture.frag",
        "GL_ARB_texture_multisample.vert",
        "BestMatchFunction.vert",
        "EndStreamPrimitive.geom",
        "floatBitsToInt.vert",
        "coord_conventions.frag",
        "gl_FragCoord.frag",
        "glsl.interpOp.error.frag",
        "GL_EXT_draw_instanced.vert",
        "overflow_underflow_toinf_0.frag",
        "GL_EXT_texture_array.frag",
    })),
    FileNameAsCustomTestSuffix
);

INSTANTIATE_TEST_SUITE_P(
    Glsl, CompileToAstTestNV,
    ::testing::ValuesIn(std::vector<std::string>({
        "nvShaderNoperspectiveInterpolation.frag",
    })),
    FileNameAsCustomTestSuffix
);

// clang-format on

}  // anonymous namespace
}  // namespace glslangtest
