@@ -185,22 +185,34 @@ TEST_F(ServiceSchemaTest, Struct) {
185
185
186
186
EXPECT_EQ (s.fields ().size (), 2 );
187
187
188
- EXPECT_EQ (s.fields ()[0 ].id (), FieldId{1 });
189
- EXPECT_EQ (
190
- s.fields ()[0 ].presence (), FieldNode::PresenceQualifier::UNQUALIFIED);
191
- EXPECT_EQ (s.fields ()[0 ].type ().asPrimitive (), Primitive::I32);
192
- EXPECT_EQ (s.fields ()[0 ].name (), " field1" );
193
- EXPECT_STREQ (s.fields ()[0 ].name ().data (), " field1" );
194
- EXPECT_EQ (s.fields ()[0 ].customDefault ()->as_i32 (), 10 );
195
-
196
- EXPECT_EQ (s.fields ()[1 ].id (), FieldId{2 });
197
- EXPECT_EQ (s.fields ()[1 ].presence (), FieldNode::PresenceQualifier::OPTIONAL_);
198
- EXPECT_EQ (
199
- &s.fields ()[1 ].type ().asEnum (),
200
- &program.definitionsByName ().at (" TestEnum" )->asEnum ());
201
- EXPECT_EQ (s.fields ()[1 ].name (), " field2" );
202
- EXPECT_STREQ (s.fields ()[1 ].name ().data (), " field2" );
203
- EXPECT_EQ (s.fields ()[1 ].customDefault (), nullptr );
188
+ auto checkField1 = [](const auto & field) {
189
+ EXPECT_EQ (field.id (), FieldId{1 });
190
+ EXPECT_EQ (field.presence (), FieldNode::PresenceQualifier::UNQUALIFIED);
191
+ EXPECT_EQ (field.type ().asPrimitive (), Primitive::I32);
192
+ EXPECT_EQ (field.name (), " field1" );
193
+ EXPECT_STREQ (field.name ().data (), " field1" );
194
+ EXPECT_EQ (field.customDefault ()->as_i32 (), 10 );
195
+ };
196
+
197
+ checkField1 (s.at (FieldId{1 }));
198
+ checkField1 (s.at (" field1" ));
199
+
200
+ auto checkField2 = [&](const auto & field) {
201
+ EXPECT_EQ (field.id (), FieldId{2 });
202
+ EXPECT_EQ (field.presence (), FieldNode::PresenceQualifier::OPTIONAL_);
203
+ EXPECT_EQ (
204
+ &field.type ().asEnum (),
205
+ &program.definitionsByName ().at (" TestEnum" )->asEnum ());
206
+ EXPECT_EQ (field.name (), " field2" );
207
+ EXPECT_STREQ (field.name ().data (), " field2" );
208
+ EXPECT_EQ (field.customDefault (), nullptr );
209
+ };
210
+
211
+ checkField2 (s.at (FieldId{2 }));
212
+ checkField2 (s.at (" field2" ));
213
+
214
+ EXPECT_THROW (s.at (FieldId{3 }), std::out_of_range);
215
+ EXPECT_THROW (s.at (" field3" ), std::out_of_range);
204
216
205
217
EXPECT_EQ (
206
218
s.toDebugString (),
@@ -229,17 +241,33 @@ TEST_F(ServiceSchemaTest, Union) {
229
241
230
242
EXPECT_EQ (u.fields ().size (), 2 );
231
243
232
- EXPECT_EQ (u.fields ()[0 ].id (), FieldId{1 });
233
- EXPECT_EQ (u.fields ()[0 ].name (), " s" );
234
- EXPECT_EQ (
235
- &u.fields ()[0 ].type ().asStruct (),
236
- &program.definitionsByName ().at (" TestStruct" )->asStruct ());
237
-
238
- EXPECT_EQ (u.fields ()[1 ].id (), FieldId{2 });
239
- EXPECT_EQ (u.fields ()[1 ].name (), " e" );
240
- EXPECT_EQ (
241
- &u.fields ()[1 ].type ().asEnum (),
242
- &program.definitionsByName ().at (" TestEnum" )->asEnum ());
244
+ auto checkField1 = [&](const auto & field) {
245
+ EXPECT_EQ (field.id (), FieldId{1 });
246
+ EXPECT_EQ (field.presence (), FieldNode::PresenceQualifier::UNQUALIFIED);
247
+ EXPECT_EQ (
248
+ &field.type ().asStruct (),
249
+ &program.definitionsByName ().at (" TestStruct" )->asStruct ());
250
+ EXPECT_EQ (field.name (), " s" );
251
+ EXPECT_STREQ (field.name ().data (), " s" );
252
+ };
253
+
254
+ checkField1 (u.at (FieldId{1 }));
255
+ checkField1 (u.at (" s" ));
256
+
257
+ auto checkField2 = [&](const auto & field) {
258
+ EXPECT_EQ (field.id (), FieldId{2 });
259
+ EXPECT_EQ (field.presence (), FieldNode::PresenceQualifier::UNQUALIFIED);
260
+ EXPECT_EQ (
261
+ &field.type ().asEnum (),
262
+ &program.definitionsByName ().at (" TestEnum" )->asEnum ());
263
+ EXPECT_EQ (field.name (), " e" );
264
+ };
265
+
266
+ checkField2 (u.at (FieldId{2 }));
267
+ checkField2 (u.at (" e" ));
268
+
269
+ EXPECT_THROW (u.at (FieldId{3 }), std::out_of_range);
270
+ EXPECT_THROW (u.at (" field3" ), std::out_of_range);
243
271
244
272
EXPECT_EQ (
245
273
u.toDebugString (),
0 commit comments