// Copyright 2023 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/attribute_test.cc.tmpl // // Do not modify this file directly //////////////////////////////////////////////////////////////////////////////// #include "src/tint/builtin/attribute.h" #include #include #include "src/tint/utils/string.h" namespace tint::builtin { namespace { namespace parse_print_tests { struct Case { const char* string; Attribute value; }; inline std::ostream& operator<<(std::ostream& out, Case c) { return out << "'" << std::string(c.string) << "'"; } static constexpr Case kValidCases[] = { {"align", Attribute::kAlign}, {"binding", Attribute::kBinding}, {"builtin", Attribute::kBuiltin}, {"compute", Attribute::kCompute}, {"diagnostic", Attribute::kDiagnostic}, {"fragment", Attribute::kFragment}, {"group", Attribute::kGroup}, {"id", Attribute::kId}, {"interpolate", Attribute::kInterpolate}, {"invariant", Attribute::kInvariant}, {"location", Attribute::kLocation}, {"must_use", Attribute::kMustUse}, {"size", Attribute::kSize}, {"vertex", Attribute::kVertex}, {"workgroup_size", Attribute::kWorkgroupSize}, }; static constexpr Case kInvalidCases[] = { {"alccn", Attribute::kUndefined}, {"3g", Attribute::kUndefined}, {"aVign", Attribute::kUndefined}, {"bind1ng", Attribute::kUndefined}, {"bqnJing", Attribute::kUndefined}, {"bindin7ll", Attribute::kUndefined}, {"ppqqiliHH", Attribute::kUndefined}, {"bucv", Attribute::kUndefined}, {"biltGn", Attribute::kUndefined}, {"compiive", Attribute::kUndefined}, {"8WWmpute", Attribute::kUndefined}, {"cxxpute", Attribute::kUndefined}, {"dXagnosigg", Attribute::kUndefined}, {"dagnXuVc", Attribute::kUndefined}, {"diagnosti3", Attribute::kUndefined}, {"fraEment", Attribute::kUndefined}, {"PPagTTent", Attribute::kUndefined}, {"xxragddnt", Attribute::kUndefined}, {"g44oup", Attribute::kUndefined}, {"grVVSSp", Attribute::kUndefined}, {"22RRp", Attribute::kUndefined}, {"d", Attribute::kUndefined}, {"i", Attribute::kUndefined}, {"OVd", Attribute::kUndefined}, {"inyerpolae", Attribute::kUndefined}, {"rrnterpolll77Ge", Attribute::kUndefined}, {"inte4pol00te", Attribute::kUndefined}, {"inoornt", Attribute::kUndefined}, {"inzzriat", Attribute::kUndefined}, {"n11pariiin", Attribute::kUndefined}, {"XXocation", Attribute::kUndefined}, {"lIIc9955nnon", Attribute::kUndefined}, {"aaoHHatioYSS", Attribute::kUndefined}, {"mkksue", Attribute::kUndefined}, {"gjs_RRs", Attribute::kUndefined}, {"msb_se", Attribute::kUndefined}, {"jize", Attribute::kUndefined}, {"sze", Attribute::kUndefined}, {"qz", Attribute::kUndefined}, {"vNNtex", Attribute::kUndefined}, {"vevvx", Attribute::kUndefined}, {"veQQex", Attribute::kUndefined}, {"workgrrupffie", Attribute::kUndefined}, {"workgroup_sije", Attribute::kUndefined}, {"workgoupNNwsiz8", Attribute::kUndefined}, }; using AttributeParseTest = testing::TestWithParam; TEST_P(AttributeParseTest, Parse) { const char* string = GetParam().string; Attribute expect = GetParam().value; EXPECT_EQ(expect, ParseAttribute(string)); } INSTANTIATE_TEST_SUITE_P(ValidCases, AttributeParseTest, testing::ValuesIn(kValidCases)); INSTANTIATE_TEST_SUITE_P(InvalidCases, AttributeParseTest, testing::ValuesIn(kInvalidCases)); using AttributePrintTest = testing::TestWithParam; TEST_P(AttributePrintTest, Print) { Attribute value = GetParam().value; const char* expect = GetParam().string; EXPECT_EQ(expect, utils::ToString(value)); } INSTANTIATE_TEST_SUITE_P(ValidCases, AttributePrintTest, testing::ValuesIn(kValidCases)); } // namespace parse_print_tests } // namespace } // namespace tint::builtin