481
481
#endif // GTEST_HAS_PARAM_TEST
483
TEST(EncodedDescriptorDatabaseExtraTest, FindNameOfFileContainingSymbol) {
484
// Create two files, one of which is in two parts.
485
FileDescriptorProto file1, file2a, file2b;
486
file1.set_name("foo.proto");
487
file1.set_package("foo");
488
file1.add_message_type()->set_name("Foo");
489
file2a.set_name("bar.proto");
490
file2b.set_package("bar");
491
file2b.add_message_type()->set_name("Bar");
493
// Normal serialization allows our optimization to kick in.
494
string data1 = file1.SerializeAsString();
496
// Force out-of-order serialization to test slow path.
497
string data2 = file2b.SerializeAsString() + file2a.SerializeAsString();
499
// Create EncodedDescriptorDatabase containing both files.
500
EncodedDescriptorDatabase db;
501
db.Add(data1.data(), data1.size());
502
db.Add(data2.data(), data2.size());
506
EXPECT_TRUE(db.FindNameOfFileContainingSymbol("foo.Foo", &filename));
507
EXPECT_EQ("foo.proto", filename);
508
EXPECT_TRUE(db.FindNameOfFileContainingSymbol("foo.Foo.Blah", &filename));
509
EXPECT_EQ("foo.proto", filename);
510
EXPECT_TRUE(db.FindNameOfFileContainingSymbol("bar.Bar", &filename));
511
EXPECT_EQ("bar.proto", filename);
512
EXPECT_FALSE(db.FindNameOfFileContainingSymbol("foo", &filename));
513
EXPECT_FALSE(db.FindNameOfFileContainingSymbol("bar", &filename));
514
EXPECT_FALSE(db.FindNameOfFileContainingSymbol("baz.Baz", &filename));
483
517
// ===================================================================
485
519
class MergedDescriptorDatabaseTest : public testing::Test {