// Copyright 2022 The Tint 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.

////////////////////////////////////////////////////////////////////////////////
// File generated by tools/src/cmd/gen
// using the template:
//   src/tint/builtin/builtin_test.cc.tmpl
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

#include "src/tint/builtin/builtin.h"

#include <string>

#include "gtest/gtest.h"

#include "src/tint/utils/string.h"

namespace tint::builtin {
namespace {

namespace parse_print_tests {

struct Case {
    const char* string;
    Builtin value;
};

inline std::ostream& operator<<(std::ostream& out, Case c) {
    return out << "'" << std::string(c.string) << "'";
}

static constexpr Case kValidCases[] = {
    {"__packed_vec3", Builtin::kPackedVec3},
    {"array", Builtin::kArray},
    {"atomic", Builtin::kAtomic},
    {"bool", Builtin::kBool},
    {"f16", Builtin::kF16},
    {"f32", Builtin::kF32},
    {"i32", Builtin::kI32},
    {"mat2x2", Builtin::kMat2X2},
    {"mat2x2f", Builtin::kMat2X2F},
    {"mat2x2h", Builtin::kMat2X2H},
    {"mat2x3", Builtin::kMat2X3},
    {"mat2x3f", Builtin::kMat2X3F},
    {"mat2x3h", Builtin::kMat2X3H},
    {"mat2x4", Builtin::kMat2X4},
    {"mat2x4f", Builtin::kMat2X4F},
    {"mat2x4h", Builtin::kMat2X4H},
    {"mat3x2", Builtin::kMat3X2},
    {"mat3x2f", Builtin::kMat3X2F},
    {"mat3x2h", Builtin::kMat3X2H},
    {"mat3x3", Builtin::kMat3X3},
    {"mat3x3f", Builtin::kMat3X3F},
    {"mat3x3h", Builtin::kMat3X3H},
    {"mat3x4", Builtin::kMat3X4},
    {"mat3x4f", Builtin::kMat3X4F},
    {"mat3x4h", Builtin::kMat3X4H},
    {"mat4x2", Builtin::kMat4X2},
    {"mat4x2f", Builtin::kMat4X2F},
    {"mat4x2h", Builtin::kMat4X2H},
    {"mat4x3", Builtin::kMat4X3},
    {"mat4x3f", Builtin::kMat4X3F},
    {"mat4x3h", Builtin::kMat4X3H},
    {"mat4x4", Builtin::kMat4X4},
    {"mat4x4f", Builtin::kMat4X4F},
    {"mat4x4h", Builtin::kMat4X4H},
    {"ptr", Builtin::kPtr},
    {"sampler", Builtin::kSampler},
    {"sampler_comparison", Builtin::kSamplerComparison},
    {"texture_1d", Builtin::kTexture1D},
    {"texture_2d", Builtin::kTexture2D},
    {"texture_2d_array", Builtin::kTexture2DArray},
    {"texture_3d", Builtin::kTexture3D},
    {"texture_cube", Builtin::kTextureCube},
    {"texture_cube_array", Builtin::kTextureCubeArray},
    {"texture_depth_2d", Builtin::kTextureDepth2D},
    {"texture_depth_2d_array", Builtin::kTextureDepth2DArray},
    {"texture_depth_cube", Builtin::kTextureDepthCube},
    {"texture_depth_cube_array", Builtin::kTextureDepthCubeArray},
    {"texture_depth_multisampled_2d", Builtin::kTextureDepthMultisampled2D},
    {"texture_external", Builtin::kTextureExternal},
    {"texture_multisampled_2d", Builtin::kTextureMultisampled2D},
    {"texture_storage_1d", Builtin::kTextureStorage1D},
    {"texture_storage_2d", Builtin::kTextureStorage2D},
    {"texture_storage_2d_array", Builtin::kTextureStorage2DArray},
    {"texture_storage_3d", Builtin::kTextureStorage3D},
    {"u32", Builtin::kU32},
    {"vec2", Builtin::kVec2},
    {"vec2f", Builtin::kVec2F},
    {"vec2h", Builtin::kVec2H},
    {"vec2i", Builtin::kVec2I},
    {"vec2u", Builtin::kVec2U},
    {"vec3", Builtin::kVec3},
    {"vec3f", Builtin::kVec3F},
    {"vec3h", Builtin::kVec3H},
    {"vec3i", Builtin::kVec3I},
    {"vec3u", Builtin::kVec3U},
    {"vec4", Builtin::kVec4},
    {"vec4f", Builtin::kVec4F},
    {"vec4h", Builtin::kVec4H},
    {"vec4i", Builtin::kVec4I},
    {"vec4u", Builtin::kVec4U},
};

static constexpr Case kInvalidCases[] = {
    {"__acked_veccc", Builtin::kUndefined},
    {"_pac3ed_v3", Builtin::kUndefined},
    {"__packeV_vec3", Builtin::kUndefined},
    {"arra1", Builtin::kUndefined},
    {"qqrJy", Builtin::kUndefined},
    {"arrll7y", Builtin::kUndefined},
    {"atppmHHc", Builtin::kUndefined},
    {"cto", Builtin::kUndefined},
    {"abGmi", Builtin::kUndefined},
    {"bovii", Builtin::kUndefined},
    {"boWWl", Builtin::kUndefined},
    {"Mxxl", Builtin::kUndefined},
    {"fgg", Builtin::kUndefined},
    {"X", Builtin::kUndefined},
    {"316", Builtin::kUndefined},
    {"fE2", Builtin::kUndefined},
    {"fPTT", Builtin::kUndefined},
    {"dxx2", Builtin::kUndefined},
    {"4432", Builtin::kUndefined},
    {"iSVV2", Builtin::kUndefined},
    {"RR2", Builtin::kUndefined},
    {"at292", Builtin::kUndefined},
    {"mat2x", Builtin::kUndefined},
    {"Vat2OR2", Builtin::kUndefined},
    {"ma2xyf", Builtin::kUndefined},
    {"llnarr2772f", Builtin::kUndefined},
    {"mat24200", Builtin::kUndefined},
    {"a2ooh", Builtin::kUndefined},
    {"zz2x2h", Builtin::kUndefined},
    {"miitppx1", Builtin::kUndefined},
    {"maXX2x3", Builtin::kUndefined},
    {"55IIt2nn99", Builtin::kUndefined},
    {"aHHrrt2xSS", Builtin::kUndefined},
    {"makkf", Builtin::kUndefined},
    {"jatgRx", Builtin::kUndefined},
    {"mb2x3", Builtin::kUndefined},
    {"mat2xjh", Builtin::kUndefined},
    {"at2x3h", Builtin::kUndefined},
    {"q2x3h", Builtin::kUndefined},
    {"mNN2x4", Builtin::kUndefined},
    {"mavv4", Builtin::kUndefined},
    {"maQQx4", Builtin::kUndefined},
    {"maffxr", Builtin::kUndefined},
    {"mat2xjf", Builtin::kUndefined},
    {"mNNw2x48", Builtin::kUndefined},
    {"matx4h", Builtin::kUndefined},
    {"mrrt2x4h", Builtin::kUndefined},
    {"Gat2x4h", Builtin::kUndefined},
    {"matFFx2", Builtin::kUndefined},
    {"mtx", Builtin::kUndefined},
    {"mrrt3x", Builtin::kUndefined},
    {"t3x2f", Builtin::kUndefined},
    {"Da3xJJf", Builtin::kUndefined},
    {"ma82", Builtin::kUndefined},
    {"m11k2", Builtin::kUndefined},
    {"matx2h", Builtin::kUndefined},
    {"maJx2h", Builtin::kUndefined},
    {"cat3x3", Builtin::kUndefined},
    {"mat3O3", Builtin::kUndefined},
    {"ttKavv3x__", Builtin::kUndefined},
    {"xx83x3f", Builtin::kUndefined},
    {"__qatF3", Builtin::kUndefined},
    {"matqx3f", Builtin::kUndefined},
    {"33atOx3h", Builtin::kUndefined},
    {"mtt63x9oQQ", Builtin::kUndefined},
    {"ma3x66h", Builtin::kUndefined},
    {"66aOzx4", Builtin::kUndefined},
    {"myyt3x4", Builtin::kUndefined},
    {"HHZx4", Builtin::kUndefined},
    {"4WWt3q4f", Builtin::kUndefined},
    {"mOO3x4f", Builtin::kUndefined},
    {"oatY4f", Builtin::kUndefined},
    {"matx", Builtin::kUndefined},
    {"ma3xFh", Builtin::kUndefined},
    {"at3x4w", Builtin::kUndefined},
    {"ma4Gf", Builtin::kUndefined},
    {"qatKKx2", Builtin::kUndefined},
    {"mmmt4x2", Builtin::kUndefined},
    {"at4x2f", Builtin::kUndefined},
    {"mt4x2q", Builtin::kUndefined},
    {"mat4xbb", Builtin::kUndefined},
    {"mi4x2h", Builtin::kUndefined},
    {"maOO4xq", Builtin::kUndefined},
    {"matTvvx2h", Builtin::kUndefined},
    {"mat4FF3", Builtin::kUndefined},
    {"mtQ00P", Builtin::kUndefined},
    {"maP4x3", Builtin::kUndefined},
    {"ma774xss", Builtin::kUndefined},
    {"RRCbb4x3f", Builtin::kUndefined},
    {"mXXt4x3f", Builtin::kUndefined},
    {"qaCC4xOOh", Builtin::kUndefined},
    {"ma4s3L", Builtin::kUndefined},
    {"mXt4x3h", Builtin::kUndefined},
    {"mat4x", Builtin::kUndefined},
    {"qqt4", Builtin::kUndefined},
    {"mat4x22", Builtin::kUndefined},
    {"myzz40XX", Builtin::kUndefined},
    {"matVViP", Builtin::kUndefined},
    {"mannC4f", Builtin::kUndefined},
    {"atx4AHHq", Builtin::kUndefined},
    {"may4x4", Builtin::kUndefined},
    {"aOOOZZh", Builtin::kUndefined},
    {"V", Builtin::kUndefined},
    {"ptf__", Builtin::kUndefined},
    {"4lMT", Builtin::kUndefined},
    {"sNNmplg", Builtin::kUndefined},
    {"uubpXXer", Builtin::kUndefined},
    {"samler", Builtin::kUndefined},
    {"m88ler_cQmparisoK", Builtin::kUndefined},
    {"qa9ler_comparison", Builtin::kUndefined},
    {"sampler_comparis11n", Builtin::kUndefined},
    {"teiiu22eF1d", Builtin::kUndefined},
    {"tex77ur_1d", Builtin::kUndefined},
    {"te2urNN_1d", Builtin::kUndefined},
    {"texturVV_2d", Builtin::kUndefined},
    {"WWFxtu11e_wd", Builtin::kUndefined},
    {"txture_2ww", Builtin::kUndefined},
    {"texture_2d_arrDy", Builtin::kUndefined},
    {"teKtre_2d_array", Builtin::kUndefined},
    {"texhure_2fra11raPP", Builtin::kUndefined},
    {"texture3d", Builtin::kUndefined},
    {"texture_3YY", Builtin::kUndefined},
    {"HHtxtrkk_3d", Builtin::kUndefined},
    {"texrrure_cube", Builtin::kUndefined},
    {"tssxturWW_cue", Builtin::kUndefined},
    {"teYure_cube", Builtin::kUndefined},
    {"txture_Lufe_arraq", Builtin::kUndefined},
    {"te22ture_uuubevvfray", Builtin::kUndefined},
    {"texturecube_aray", Builtin::kUndefined},
    {"texture_Yepth_2", Builtin::kUndefined},
    {"teytYYEe_77epth_2d", Builtin::kUndefined},
    {"teMture_deootd2d", Builtin::kUndefined},
    {"texMMre_depth_2d_array", Builtin::kUndefined},
    {"texture_depth_2d_arra55", Builtin::kUndefined},
    {"texture_deh_2d_aNray", Builtin::kUndefined},
    {"te3ture_dpth_cO3be", Builtin::kUndefined},
    {"texture_depth_cub3", Builtin::kUndefined},
    {"Iexturedepth_cume", Builtin::kUndefined},
    {"texture_depthnncube_Krrry", Builtin::kUndefined},
    {"texture_dth_XXube_rra", Builtin::kUndefined},
    {"textIre_depph_ubeLLarray", Builtin::kUndefined},
    {"txtfre_depthmultisampled_2d", Builtin::kUndefined},
    {"texURuYe_Depthmultisampled_2d", Builtin::kUndefined},
    {"texture_depth_multisamphed_2d", Builtin::kUndefined},
    {"teqtureuIIextnal", Builtin::kUndefined},
    {"texture_externaH", Builtin::kUndefined},
    {"texre_externaQvv", Builtin::kUndefined},
    {"textureemultismp66ed_d", Builtin::kUndefined},
    {"tW7trO_multisampled_2d", Builtin::kUndefined},
    {"texture_mult550ampled_2DD", Builtin::kUndefined},
    {"teHture_storIIge_1d", Builtin::kUndefined},
    {"textue_storage_1d", Builtin::kUndefined},
    {"rexture_storae_1d", Builtin::kUndefined},
    {"texture_stolage_2d", Builtin::kUndefined},
    {"txture_JJtGrgtt_2d", Builtin::kUndefined},
    {"yexture_storage2d", Builtin::kUndefined},
    {"texture_storage_2d_rray", Builtin::kUndefined},
    {"texture_IItorage_2d_BBrray", Builtin::kUndefined},
    {"33exture_TTtorge_Kd_ar88ay", Builtin::kUndefined},
    {"texSnnYUUure_storage_3d", Builtin::kUndefined},
    {"textuxe_5torCCdZ_3d", Builtin::kUndefined},
    {"tkkxture_storaqe_3d", Builtin::kUndefined},
    {"5i00", Builtin::kUndefined},
    {"unII2", Builtin::kUndefined},
    {"cc", Builtin::kUndefined},
    {"KK", Builtin::kUndefined},
    {"66ec2", Builtin::kUndefined},
    {"PPEK", Builtin::kUndefined},
    {"vexxf", Builtin::kUndefined},
    {"qec2f", Builtin::kUndefined},
    {"veSyMMr", Builtin::kUndefined},
    {"v2u", Builtin::kUndefined},
    {"ec", Builtin::kUndefined},
    {"5eFF2h", Builtin::kUndefined},
    {"rrecz44", Builtin::kUndefined},
    {"vWW", Builtin::kUndefined},
    {"XJecCZZ", Builtin::kUndefined},
    {"vePP2", Builtin::kUndefined},
    {"vec2c", Builtin::kUndefined},
    {"ve6ll2u", Builtin::kUndefined},
    {"vey99", Builtin::kUndefined},
    {"vKKc3", Builtin::kUndefined},
    {"x_3", Builtin::kUndefined},
    {"Ky3", Builtin::kUndefined},
    {"zek3f", Builtin::kUndefined},
    {"veKSf", Builtin::kUndefined},
    {"vc3h", Builtin::kUndefined},
    {"ec3VV", Builtin::kUndefined},
    {"IAAc3h", Builtin::kUndefined},
    {"jbR", Builtin::kUndefined},
    {"veY4", Builtin::kUndefined},
    {"ec3i", Builtin::kUndefined},
    {"vc911", Builtin::kUndefined},
    {"mmccu", Builtin::kUndefined},
    {"vJJcu", Builtin::kUndefined},
    {"lDCfcU", Builtin::kUndefined},
    {"veg4", Builtin::kUndefined},
    {"CC", Builtin::kUndefined},
    {"ec4f", Builtin::kUndefined},
    {"vIc__f", Builtin::kUndefined},
    {"ePPtt", Builtin::kUndefined},
    {"v3dc4h", Builtin::kUndefined},
    {"vcyyh", Builtin::kUndefined},
    {"u4", Builtin::kUndefined},
    {"v03nni", Builtin::kUndefined},
    {"Cuuecnv", Builtin::kUndefined},
    {"vX4ll", Builtin::kUndefined},
    {"vocppu", Builtin::kUndefined},
    {"vwwc4", Builtin::kUndefined},
    {"veuug", Builtin::kUndefined},
};

using BuiltinParseTest = testing::TestWithParam<Case>;

TEST_P(BuiltinParseTest, Parse) {
    const char* string = GetParam().string;
    Builtin expect = GetParam().value;
    EXPECT_EQ(expect, ParseBuiltin(string));
}

INSTANTIATE_TEST_SUITE_P(ValidCases, BuiltinParseTest, testing::ValuesIn(kValidCases));
INSTANTIATE_TEST_SUITE_P(InvalidCases, BuiltinParseTest, testing::ValuesIn(kInvalidCases));

using BuiltinPrintTest = testing::TestWithParam<Case>;

TEST_P(BuiltinPrintTest, Print) {
    Builtin value = GetParam().value;
    const char* expect = GetParam().string;
    EXPECT_EQ(expect, utils::ToString(value));
}

INSTANTIATE_TEST_SUITE_P(ValidCases, BuiltinPrintTest, testing::ValuesIn(kValidCases));

}  // namespace parse_print_tests

}  // namespace
}  // namespace tint::builtin
