| 170 | } |
| 171 | |
| 172 | TEST(EnvYamlTest, ParseVariableConfigWithTypeParams) { |
| 173 | ASSERT_OK_AND_ASSIGN(Config config, EnvConfigFromYaml(R"yaml( |
| 174 | variables: |
| 175 | - name: "dict" |
| 176 | type_name: "map" |
| 177 | params: |
| 178 | - type_name: "string" |
| 179 | - type_name: "A" |
| 180 | is_type_param: true |
| 181 | )yaml")); |
| 182 | |
| 183 | const Config::VariableConfig& variable_config = |
| 184 | config.GetVariableConfigs()[0]; |
| 185 | EXPECT_EQ(variable_config.name, "dict"); |
| 186 | const auto& type_info = variable_config.type_info; |
| 187 | EXPECT_EQ(type_info.name, "map"); |
| 188 | EXPECT_FALSE(type_info.is_type_param); |
| 189 | EXPECT_THAT(type_info.params, SizeIs(2)); |
| 190 | EXPECT_EQ(type_info.params[0].name, "string"); |
| 191 | EXPECT_FALSE(type_info.params[0].is_type_param); |
| 192 | EXPECT_THAT(type_info.params[0].params, IsEmpty()); |
| 193 | EXPECT_EQ(type_info.params[1].name, "A"); |
| 194 | EXPECT_TRUE(type_info.params[1].is_type_param); |
| 195 | EXPECT_THAT(type_info.params[1].params, IsEmpty()); |
| 196 | } |
| 197 | |
| 198 | struct ParseConstantTestCase { |
| 199 | std::string type_name; |
| 200 | std::string value; |
| 201 | std::string expected_error; // Empty if no error. |
| 202 | Constant expected_constant; |
| 203 | }; |
| 204 | |
| 205 | class EnvYamlParseConstantTest |
| 206 | : public testing::TestWithParam<ParseConstantTestCase> {}; |
| 207 | |
| 208 | TEST_P(EnvYamlParseConstantTest, EnvYamlParseConstant) { |
| 209 | const ParseConstantTestCase& param = GetParam(); |
| 210 | const std::string yaml = absl::StrFormat( |
| 211 | R"yaml( |
| 212 | variables: |
| 213 | - name: "const" |
| 214 | type_name: "%s" |
| 215 | value: %s |
| 216 | )yaml", |
| 217 | param.type_name, param.value); |
| 218 | absl::StatusOr<Config> status_or_config = EnvConfigFromYaml(yaml); |
| 219 | if (!param.expected_error.empty()) { |
| 220 | EXPECT_THAT(status_or_config, StatusIs(absl::StatusCode::kInvalidArgument, |
| 221 | HasSubstr(param.expected_error))); |
| 222 | return; |
| 223 | } |
| 224 | ASSERT_OK_AND_ASSIGN(Config config, status_or_config); |
| 225 | |
| 226 | const Config::VariableConfig& variable_config = |
| 227 | config.GetVariableConfigs()[0]; |
| 228 | EXPECT_EQ(variable_config.name, "const"); |
| 229 | EXPECT_EQ(variable_config.type_info.name, param.type_name) |
no test coverage detected