| // Copyright 2025 The Dawn & Tint Authors |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are met: |
| // |
| // 1. Redistributions of source code must retain the above copyright notice, this |
| // list of conditions and the following disclaimer. |
| // |
| // 2. 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. |
| // |
| // 3. Neither the name of the copyright holder 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 HOLDER 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. |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // File generated by 'tools/src/cmd/gen' using the template: |
| // src/tint/lang/wgsl/enums_test.cc.tmpl |
| // |
| // To regenerate run: './tools/run gen' |
| // |
| // Do not modify this file directly |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| // clang-format off |
| |
| #include <string> |
| |
| #include "gtest/gtest.h" |
| |
| #include "src/tint/lang/wgsl/enums.h" |
| #include "src/tint/utils/text/string.h" |
| |
| namespace tint::wgsl { |
| namespace { |
| |
| namespace core_diagnostic_rule_tests { |
| namespace parse_print_tests { |
| |
| struct CoreDiagnosticRuleCase { |
| const char* string; |
| CoreDiagnosticRule value; |
| }; |
| |
| inline std::ostream& operator<<(std::ostream& out, CoreDiagnosticRuleCase c) { |
| return out << "'" << std::string(c.string) << "'"; |
| } |
| |
| static constexpr CoreDiagnosticRuleCase kValidCoreDiagnosticRuleCases[] = { |
| {"derivative_uniformity", CoreDiagnosticRule::kDerivativeUniformity}, |
| {"subgroup_uniformity", CoreDiagnosticRule::kSubgroupUniformity}, |
| }; |
| |
| static constexpr CoreDiagnosticRuleCase kInvalidCoreDiagnosticRuleCases[] = { |
| {"deriative_unccformity", CoreDiagnosticRule::kUndefined}, |
| {"dlivative_3iformiy", CoreDiagnosticRule::kUndefined}, |
| {"derivative_uniforVity", CoreDiagnosticRule::kUndefined}, |
| {"s1bgroup_uniformity", CoreDiagnosticRule::kUndefined}, |
| {"subgrouqq_unifJrmty", CoreDiagnosticRule::kUndefined}, |
| {"sub77roup_ulliformity", CoreDiagnosticRule::kUndefined}, |
| }; |
| |
| using CoreDiagnosticRuleParseTest = testing::TestWithParam<CoreDiagnosticRuleCase>; |
| |
| TEST_P(CoreDiagnosticRuleParseTest, Parse) { |
| const char* string = GetParam().string; |
| CoreDiagnosticRule expect = GetParam().value; |
| EXPECT_EQ(expect, ParseCoreDiagnosticRule(string)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidCoreDiagnosticRuleCases, CoreDiagnosticRuleParseTest, testing::ValuesIn(kValidCoreDiagnosticRuleCases)); |
| INSTANTIATE_TEST_SUITE_P(InvalidCoreDiagnosticRuleCases, CoreDiagnosticRuleParseTest, testing::ValuesIn(kInvalidCoreDiagnosticRuleCases)); |
| |
| using CoreDiagnosticRulePrintTest = testing::TestWithParam<CoreDiagnosticRuleCase>; |
| |
| TEST_P(CoreDiagnosticRulePrintTest, Print) { |
| CoreDiagnosticRule value = GetParam().value; |
| const char* expect = GetParam().string; |
| EXPECT_EQ(expect, ToString(value)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidCoreDiagnosticRuleCases, CoreDiagnosticRulePrintTest, testing::ValuesIn(kValidCoreDiagnosticRuleCases)); |
| |
| } // namespace parse_print_tests |
| } // namespace core_diagnostic_rule_tests |
| |
| namespace chromium_diagnostic_rule_tests { |
| namespace parse_print_tests { |
| |
| struct ChromiumDiagnosticRuleCase { |
| const char* string; |
| ChromiumDiagnosticRule value; |
| }; |
| |
| inline std::ostream& operator<<(std::ostream& out, ChromiumDiagnosticRuleCase c) { |
| return out << "'" << std::string(c.string) << "'"; |
| } |
| |
| static constexpr ChromiumDiagnosticRuleCase kValidChromiumDiagnosticRuleCases[] = { |
| {"subgroup_matrix_uniformity", ChromiumDiagnosticRule::kSubgroupMatrixUniformity}, |
| {"unreachable_code", ChromiumDiagnosticRule::kUnreachableCode}, |
| }; |
| |
| static constexpr ChromiumDiagnosticRuleCase kInvalidChromiumDiagnosticRuleCases[] = { |
| {"subgroppHp_matriqq_uiformity", ChromiumDiagnosticRule::kUndefined}, |
| {"subroup_matrcx_niformit", ChromiumDiagnosticRule::kUndefined}, |
| {"subroupGmatrbx_uniformity", ChromiumDiagnosticRule::kUndefined}, |
| {"vnriiachable_code", ChromiumDiagnosticRule::kUndefined}, |
| {"unreac8ablWW_code", ChromiumDiagnosticRule::kUndefined}, |
| {"unreMchablxxcode", ChromiumDiagnosticRule::kUndefined}, |
| }; |
| |
| using ChromiumDiagnosticRuleParseTest = testing::TestWithParam<ChromiumDiagnosticRuleCase>; |
| |
| TEST_P(ChromiumDiagnosticRuleParseTest, Parse) { |
| const char* string = GetParam().string; |
| ChromiumDiagnosticRule expect = GetParam().value; |
| EXPECT_EQ(expect, ParseChromiumDiagnosticRule(string)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidChromiumDiagnosticRuleCases, ChromiumDiagnosticRuleParseTest, testing::ValuesIn(kValidChromiumDiagnosticRuleCases)); |
| INSTANTIATE_TEST_SUITE_P(InvalidChromiumDiagnosticRuleCases, ChromiumDiagnosticRuleParseTest, testing::ValuesIn(kInvalidChromiumDiagnosticRuleCases)); |
| |
| using ChromiumDiagnosticRulePrintTest = testing::TestWithParam<ChromiumDiagnosticRuleCase>; |
| |
| TEST_P(ChromiumDiagnosticRulePrintTest, Print) { |
| ChromiumDiagnosticRule value = GetParam().value; |
| const char* expect = GetParam().string; |
| EXPECT_EQ(expect, ToString(value)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidChromiumDiagnosticRuleCases, ChromiumDiagnosticRulePrintTest, testing::ValuesIn(kValidChromiumDiagnosticRuleCases)); |
| |
| } // namespace parse_print_tests |
| } // namespace chromium_diagnostic_rule_tests |
| |
| namespace diagnostic_severity_tests { |
| namespace parse_print_tests { |
| |
| struct DiagnosticSeverityCase { |
| const char* string; |
| DiagnosticSeverity value; |
| }; |
| |
| inline std::ostream& operator<<(std::ostream& out, DiagnosticSeverityCase c) { |
| return out << "'" << std::string(c.string) << "'"; |
| } |
| |
| static constexpr DiagnosticSeverityCase kValidDiagnosticSeverityCases[] = { |
| {"error", DiagnosticSeverity::kError}, |
| {"info", DiagnosticSeverity::kInfo}, |
| {"off", DiagnosticSeverity::kOff}, |
| {"warning", DiagnosticSeverity::kWarning}, |
| }; |
| |
| static constexpr DiagnosticSeverityCase kInvalidDiagnosticSeverityCases[] = { |
| {"eggor", DiagnosticSeverity::kUndefined}, |
| {"VoX", DiagnosticSeverity::kUndefined}, |
| {"erro3", DiagnosticSeverity::kUndefined}, |
| {"infE", DiagnosticSeverity::kUndefined}, |
| {"TTPfo", DiagnosticSeverity::kUndefined}, |
| {"xxnfo", DiagnosticSeverity::kUndefined}, |
| {"44ff", DiagnosticSeverity::kUndefined}, |
| {"oSVVf", DiagnosticSeverity::kUndefined}, |
| {"RR2", DiagnosticSeverity::kUndefined}, |
| {"wFni9g", DiagnosticSeverity::kUndefined}, |
| {"waring", DiagnosticSeverity::kUndefined}, |
| {"VOORRHng", DiagnosticSeverity::kUndefined}, |
| }; |
| |
| using DiagnosticSeverityParseTest = testing::TestWithParam<DiagnosticSeverityCase>; |
| |
| TEST_P(DiagnosticSeverityParseTest, Parse) { |
| const char* string = GetParam().string; |
| DiagnosticSeverity expect = GetParam().value; |
| EXPECT_EQ(expect, ParseDiagnosticSeverity(string)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidDiagnosticSeverityCases, DiagnosticSeverityParseTest, testing::ValuesIn(kValidDiagnosticSeverityCases)); |
| INSTANTIATE_TEST_SUITE_P(InvalidDiagnosticSeverityCases, DiagnosticSeverityParseTest, testing::ValuesIn(kInvalidDiagnosticSeverityCases)); |
| |
| using DiagnosticSeverityPrintTest = testing::TestWithParam<DiagnosticSeverityCase>; |
| |
| TEST_P(DiagnosticSeverityPrintTest, Print) { |
| DiagnosticSeverity value = GetParam().value; |
| const char* expect = GetParam().string; |
| EXPECT_EQ(expect, ToString(value)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidDiagnosticSeverityCases, DiagnosticSeverityPrintTest, testing::ValuesIn(kValidDiagnosticSeverityCases)); |
| |
| } // namespace parse_print_tests |
| } // namespace diagnostic_severity_tests |
| |
| namespace parse_print_tests { |
| |
| struct ExtensionCase { |
| const char* string; |
| Extension value; |
| }; |
| |
| inline std::ostream& operator<<(std::ostream& out, ExtensionCase c) { |
| return out << "'" << std::string(c.string) << "'"; |
| } |
| |
| static constexpr ExtensionCase kValidExtensionCases[] = { |
| {"atomic_vec2u_min_max", Extension::kAtomicVec2UMinMax}, |
| {"chromium_disable_uniformity_analysis", Extension::kChromiumDisableUniformityAnalysis}, |
| {"chromium_experimental_barycentric_coord", Extension::kChromiumExperimentalBarycentricCoord}, |
| {"chromium_experimental_framebuffer_fetch", Extension::kChromiumExperimentalFramebufferFetch}, |
| {"chromium_experimental_pixel_local", Extension::kChromiumExperimentalPixelLocal}, |
| {"chromium_experimental_resource_table", Extension::kChromiumExperimentalResourceTable}, |
| {"chromium_experimental_subgroup_matrix", Extension::kChromiumExperimentalSubgroupMatrix}, |
| {"chromium_experimental_subgroup_size_control", Extension::kChromiumExperimentalSubgroupSizeControl}, |
| {"chromium_internal_input_attachments", Extension::kChromiumInternalInputAttachments}, |
| {"clip_distances", Extension::kClipDistances}, |
| {"dual_source_blending", Extension::kDualSourceBlending}, |
| {"f16", Extension::kF16}, |
| {"primitive_index", Extension::kPrimitiveIndex}, |
| {"subgroups", Extension::kSubgroups}, |
| }; |
| |
| static constexpr ExtensionCase kInvalidExtensionCases[] = { |
| {"atomic_vyc2u_mi_max", Extension::kUndefined}, |
| {"atomrrlln_vec2u_min_mG77", Extension::kUndefined}, |
| {"atom00c_vec2u_mi4_max", Extension::kUndefined}, |
| {"chromoou_disable_uniority_analysis", Extension::kUndefined}, |
| {"chromium_disableuifzzrmity_analysis", Extension::kUndefined}, |
| {"chromim_dippable_uniiform11ty_aalysis", Extension::kUndefined}, |
| {"chXXomium_experimental_barycentric_coord", Extension::kUndefined}, |
| {"chr99mi55m_experiIIennnal_barycentric_coord", Extension::kUndefined}, |
| {"chromiumSSerrperimenaaal_barHHcentric_cooYd", Extension::kUndefined}, |
| {"chromum_xperimentalframebuffHrkkfetch", Extension::kUndefined}, |
| {"chrojium_xRReimental_frgmebuffer_fetch", Extension::kUndefined}, |
| {"hromium_experimental_ramebbffer_fetch", Extension::kUndefined}, |
| {"chromium_experimentjl_pixel_local", Extension::kUndefined}, |
| {"chroium_experimental_pixel_local", Extension::kUndefined}, |
| {"cromium_qxperimental_pixl_local", Extension::kUndefined}, |
| {"chromium_experimetal_resource_NNable", Extension::kUndefined}, |
| {"chrvvmium_experimentl_resource_tble", Extension::kUndefined}, |
| {"chromium_experiental_resource_taQQle", Extension::kUndefined}, |
| {"hromium_exprimertal_subgroup_ffatrix", Extension::kUndefined}, |
| {"chromium_ejperimental_subgroup_matrix", Extension::kUndefined}, |
| {"chromium_expewim8n2al_subgroupNNmatrix", Extension::kUndefined}, |
| {"chromium_experimental_sbgroup_size_control", Extension::kUndefined}, |
| {"chromium_experimental_subgroup_size_conrrrol", Extension::kUndefined}, |
| {"chromium_expGrimental_subgroup_size_control", Extension::kUndefined}, |
| {"chromium_internal_input_attFFchments", Extension::kUndefined}, |
| {"chromium_iEteral_input_attahment", Extension::kUndefined}, |
| {"chrmium_internal_inprrt_attachments", Extension::kUndefined}, |
| {"lip_distanes", Extension::kUndefined}, |
| {"DXp_diJJtances", Extension::kUndefined}, |
| {"cl8pdistane", Extension::kUndefined}, |
| {"dul_okrc_blen11ing", Extension::kUndefined}, |
| {"dua_source_blending", Extension::kUndefined}, |
| {"duJl_source_blendig", Extension::kUndefined}, |
| {"c16", Extension::kUndefined}, |
| {"fO6", Extension::kUndefined}, |
| {"_KKttvv", Extension::kUndefined}, |
| {"pr8mitive_nxxex", Extension::kUndefined}, |
| {"primitveFqqd__x", Extension::kUndefined}, |
| {"priitive_indeqq", Extension::kUndefined}, |
| {"subgr6u33O", Extension::kUndefined}, |
| {"s96grQttupoo", Extension::kUndefined}, |
| {"sugro66ps", Extension::kUndefined}, |
| }; |
| |
| using ExtensionParseTest = testing::TestWithParam<ExtensionCase>; |
| |
| TEST_P(ExtensionParseTest, Parse) { |
| const char* string = GetParam().string; |
| Extension expect = GetParam().value; |
| EXPECT_EQ(expect, ParseExtension(string)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidExtensionCases, ExtensionParseTest, testing::ValuesIn(kValidExtensionCases)); |
| INSTANTIATE_TEST_SUITE_P(InvalidExtensionCases, ExtensionParseTest, testing::ValuesIn(kInvalidExtensionCases)); |
| |
| using ExtensionPrintTest = testing::TestWithParam<ExtensionCase>; |
| |
| TEST_P(ExtensionPrintTest, Print) { |
| Extension value = GetParam().value; |
| const char* expect = GetParam().string; |
| EXPECT_EQ(expect, ToString(value)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidExtensionCases, ExtensionPrintTest, testing::ValuesIn(kValidExtensionCases)); |
| |
| } // namespace parse_print_tests |
| |
| namespace parse_print_tests { |
| |
| struct LanguageFeatureCase { |
| const char* string; |
| LanguageFeature value; |
| }; |
| |
| inline std::ostream& operator<<(std::ostream& out, LanguageFeatureCase c) { |
| return out << "'" << std::string(c.string) << "'"; |
| } |
| |
| static constexpr LanguageFeatureCase kValidLanguageFeatureCases[] = { |
| {"buffer_view", LanguageFeature::kBufferView}, |
| {"chromium_print", LanguageFeature::kChromiumPrint}, |
| {"chromium_testing_experimental", LanguageFeature::kChromiumTestingExperimental}, |
| {"chromium_testing_shipped", LanguageFeature::kChromiumTestingShipped}, |
| {"chromium_testing_shipped_with_killswitch", LanguageFeature::kChromiumTestingShippedWithKillswitch}, |
| {"chromium_testing_unimplemented", LanguageFeature::kChromiumTestingUnimplemented}, |
| {"chromium_testing_unsafe_experimental", LanguageFeature::kChromiumTestingUnsafeExperimental}, |
| {"filtering_parameters", LanguageFeature::kFilteringParameters}, |
| {"fragment_depth", LanguageFeature::kFragmentDepth}, |
| {"immediate_address_space", LanguageFeature::kImmediateAddressSpace}, |
| {"linear_indexing", LanguageFeature::kLinearIndexing}, |
| {"packed_4x8_integer_dot_product", LanguageFeature::kPacked4X8IntegerDotProduct}, |
| {"pointer_composite_access", LanguageFeature::kPointerCompositeAccess}, |
| {"readonly_and_readwrite_storage_textures", LanguageFeature::kReadonlyAndReadwriteStorageTextures}, |
| {"sized_binding_array", LanguageFeature::kSizedBindingArray}, |
| {"subgroup_id", LanguageFeature::kSubgroupId}, |
| {"subgroup_uniformity", LanguageFeature::kSubgroupUniformity}, |
| {"swizzle_assignment", LanguageFeature::kSwizzleAssignment}, |
| {"texel_buffers", LanguageFeature::kTexelBuffers}, |
| {"texture_and_sampler_let", LanguageFeature::kTextureAndSamplerLet}, |
| {"texture_formats_tier1", LanguageFeature::kTextureFormatsTier1}, |
| {"uniform_buffer_standard_layout", LanguageFeature::kUniformBufferStandardLayout}, |
| {"unrestricted_pointer_parameters", LanguageFeature::kUnrestrictedPointerParameters}, |
| }; |
| |
| static constexpr LanguageFeatureCase kInvalidLanguageFeatureCases[] = { |
| {"bufxr66vieOz", LanguageFeature::kUndefined}, |
| {"yyuffer_view", LanguageFeature::kUndefined}, |
| {"uffeZZHiew", LanguageFeature::kUndefined}, |
| {"cWW4romiuqprint", LanguageFeature::kUndefined}, |
| {"chromium_rOOnt", LanguageFeature::kUndefined}, |
| {"oohomYum_phnt", LanguageFeature::kUndefined}, |
| {"chromium_testin_experienal", LanguageFeature::kUndefined}, |
| {"chromium_tesFig_experimental", LanguageFeature::kUndefined}, |
| {"chromium_testing_expewimentl", LanguageFeature::kUndefined}, |
| {"chromiumtestinGKhippeff", LanguageFeature::kUndefined}, |
| {"chrqKmium_testing_shipped", LanguageFeature::kUndefined}, |
| {"cFromium_test3ng_shmmpped", LanguageFeature::kUndefined}, |
| {"chromium_testing_shipped_wit_killswitch", LanguageFeature::kUndefined}, |
| {"chromum_testing_shipqed_with_killswitch", LanguageFeature::kUndefined}, |
| {"chromium_testing_shipped_with_killbbbtch", LanguageFeature::kUndefined}, |
| {"chromiim_testing_unimplemnted", LanguageFeature::kUndefined}, |
| {"chromiumOOtestqngunimplemented", LanguageFeature::kUndefined}, |
| {"chromium_testivvg_unimplementTTd", LanguageFeature::kUndefined}, |
| {"chroFFium_testing_unsafe_experimental", LanguageFeature::kUndefined}, |
| {"chromiuftesting_uPsaQe_00xperimental", LanguageFeature::kUndefined}, |
| {"chPomium_testing_unsafe_experimental", LanguageFeature::kUndefined}, |
| {"fil77ering_paraseters", LanguageFeature::kUndefined}, |
| {"filterbbng_parameCeRRs", LanguageFeature::kUndefined}, |
| {"filXXering_parameters", LanguageFeature::kUndefined}, |
| {"fragmqntdepCCOOO", LanguageFeature::kUndefined}, |
| {"frasment_eutL", LanguageFeature::kUndefined}, |
| {"fXagment_depth", LanguageFeature::kUndefined}, |
| {"immediate_address_spac", LanguageFeature::kUndefined}, |
| {"immeiaOe_areqqs_space", LanguageFeature::kUndefined}, |
| {"immed22ate_address_space", LanguageFeature::kUndefined}, |
| {"lynea_izzdex0XXg", LanguageFeature::kUndefined}, |
| {"iinearVVndexinP", LanguageFeature::kUndefined}, |
| {"linCar_indexing", LanguageFeature::kUndefined}, |
| {"qqacked_x_integer_AAot_produHHt", LanguageFeature::kUndefined}, |
| {"packed_4x8_iteger_dot_product", LanguageFeature::kUndefined}, |
| {"pafKked_4_integer_dot_product", LanguageFeature::kUndefined}, |
| {"pointer_ggompost_Pcless", LanguageFeature::kUndefined}, |
| {"pointer_comosite_access", LanguageFeature::kUndefined}, |
| {"pointeN_composctTT_a4cess", LanguageFeature::kUndefined}, |
| {"readppnly_and_re77dwrlte_stoage_textures", LanguageFeature::kUndefined}, |
| {"readonly_and_readgzzite_stoag_tNNxtures", LanguageFeature::kUndefined}, |
| {"readonly_anbbuurXXdwrite_strage_textures", LanguageFeature::kUndefined}, |
| {"ized_binding_array", LanguageFeature::kUndefined}, |
| {"szeK_bin88ig_Qrray", LanguageFeature::kUndefined}, |
| {"sized_b9nding_aqry", LanguageFeature::kUndefined}, |
| {"su11group_id", LanguageFeature::kUndefined}, |
| {"siibgr22p_id", LanguageFeature::kUndefined}, |
| {"77bgroup_id", LanguageFeature::kUndefined}, |
| {"subgroup_unifNNrmiy", LanguageFeature::kUndefined}, |
| {"subgroup_uniformiVVy", LanguageFeature::kUndefined}, |
| {"su11gWWoup_unFformwty", LanguageFeature::kUndefined}, |
| {"swizle_assignmenww", LanguageFeature::kUndefined}, |
| {"swizzle_asDignment", LanguageFeature::kUndefined}, |
| {"Kwizzle_assignent", LanguageFeature::kUndefined}, |
| {"texel_bhf11erPP", LanguageFeature::kUndefined}, |
| {"texl_buffers", LanguageFeature::kUndefined}, |
| {"texel_bYYffers", LanguageFeature::kUndefined}, |
| {"textukke_aVd_satpler_lHH", LanguageFeature::kUndefined}, |
| {"texturerrand_sampler_let", LanguageFeature::kUndefined}, |
| {"teture_and_sampleWWs_let", LanguageFeature::kUndefined}, |
| {"teYture_format_tier1", LanguageFeature::kUndefined}, |
| {"tqture_Lormats_tief1", LanguageFeature::kUndefined}, |
| {"texture_fvrmatf_tuu22r1", LanguageFeature::kUndefined}, |
| {"uiorm_buffer_standard_layout", LanguageFeature::kUndefined}, |
| {"unifrm_bufferYYtandard_layout", LanguageFeature::kUndefined}, |
| {"uniformYYbufyer77standard_layoEt", LanguageFeature::kUndefined}, |
| {"unrestrictood_pointe_paMamdters", LanguageFeature::kUndefined}, |
| {"unrestricMMed_pointer_paameters", LanguageFeature::kUndefined}, |
| {"unrestricted_poi55ter_parameters", LanguageFeature::kUndefined}, |
| }; |
| |
| using LanguageFeatureParseTest = testing::TestWithParam<LanguageFeatureCase>; |
| |
| TEST_P(LanguageFeatureParseTest, Parse) { |
| const char* string = GetParam().string; |
| LanguageFeature expect = GetParam().value; |
| EXPECT_EQ(expect, ParseLanguageFeature(string)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidLanguageFeatureCases, LanguageFeatureParseTest, testing::ValuesIn(kValidLanguageFeatureCases)); |
| INSTANTIATE_TEST_SUITE_P(InvalidLanguageFeatureCases, LanguageFeatureParseTest, testing::ValuesIn(kInvalidLanguageFeatureCases)); |
| |
| using LanguageFeaturePrintTest = testing::TestWithParam<LanguageFeatureCase>; |
| |
| TEST_P(LanguageFeaturePrintTest, Print) { |
| LanguageFeature value = GetParam().value; |
| const char* expect = GetParam().string; |
| EXPECT_EQ(expect, ToString(value)); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(ValidLanguageFeatureCases, LanguageFeaturePrintTest, testing::ValuesIn(kValidLanguageFeatureCases)); |
| |
| } // namespace parse_print_tests |
| |
| } // namespace |
| } // namespace tint::wgsl |
| |
| // clang-format on |