12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright (c) 2015-2016 The Khronos Group Inc.
- //
- // 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.
- #include <string>
- #include <vector>
- #include "test/test_fixture.h"
- #include "test/unit_spirv.h"
- namespace spvtools {
- namespace {
- using NamedIdTest = spvtest::TextToBinaryTest;
- TEST_F(NamedIdTest, Default) {
- const std::string input = R"(
- OpCapability Shader
- OpMemoryModel Logical Simple
- OpEntryPoint Vertex %main "foo"
- %void = OpTypeVoid
- %fnMain = OpTypeFunction %void
- %main = OpFunction %void None %fnMain
- %lbMain = OpLabel
- OpReturn
- OpFunctionEnd)";
- const std::string output =
- "OpCapability Shader\n"
- "OpMemoryModel Logical Simple\n"
- "OpEntryPoint Vertex %1 \"foo\"\n"
- "%2 = OpTypeVoid\n"
- "%3 = OpTypeFunction %2\n"
- "%1 = OpFunction %2 None %3\n"
- "%4 = OpLabel\n"
- "OpReturn\n"
- "OpFunctionEnd\n";
- EXPECT_EQ(output, EncodeAndDecodeSuccessfully(input));
- }
- struct IdCheckCase {
- std::string id;
- bool valid;
- };
- using IdValidityTest =
- spvtest::TextToBinaryTestBase<::testing::TestWithParam<IdCheckCase>>;
- TEST_P(IdValidityTest, IdTypes) {
- const std::string input = GetParam().id + " = OpTypeVoid";
- SetText(input);
- if (GetParam().valid) {
- CompileSuccessfully(input);
- } else {
- CompileFailure(input);
- }
- }
- INSTANTIATE_TEST_SUITE_P(
- ValidAndInvalidIds, IdValidityTest,
- ::testing::ValuesIn(std::vector<IdCheckCase>(
- {{"%1", true}, {"%2abc", true}, {"%3Def", true},
- {"%4GHI", true}, {"%5_j_k", true}, {"%6J_M", true},
- {"%n", true}, {"%O", true}, {"%p7", true},
- {"%Q8", true}, {"%R_S", true}, {"%T_10_U", true},
- {"%V_11", true}, {"%W_X_13", true}, {"%_A", true},
- {"%_", true}, {"%__", true}, {"%A_", true},
- {"%_A_", true},
- {"%@", false}, {"%!", false}, {"%ABC!", false},
- {"%__A__@", false}, {"%%", false}, {"%-", false},
- {"%foo_@_bar", false}, {"%", false},
- {"5", false}, {"32", false}, {"foo", false},
- {"a%bar", false}})));
- } // namespace
- } // namespace spvtools
|