1*1b3f573fSAndroid Build Coastguard Worker #include <link.h>
2*1b3f573fSAndroid Build Coastguard Worker
3*1b3f573fSAndroid Build Coastguard Worker #include <string>
4*1b3f573fSAndroid Build Coastguard Worker #include <vector>
5*1b3f573fSAndroid Build Coastguard Worker
6*1b3f573fSAndroid Build Coastguard Worker #include <android-base/stringprintf.h>
7*1b3f573fSAndroid Build Coastguard Worker
8*1b3f573fSAndroid Build Coastguard Worker #include <gtest/gtest.h>
9*1b3f573fSAndroid Build Coastguard Worker
10*1b3f573fSAndroid Build Coastguard Worker #include <google/protobuf/message_lite.h>
11*1b3f573fSAndroid Build Coastguard Worker
TEST(vendor_suffix,suffix)12*1b3f573fSAndroid Build Coastguard Worker TEST(vendor_suffix, suffix) {
13*1b3f573fSAndroid Build Coastguard Worker std::vector<std::string> libs;
14*1b3f573fSAndroid Build Coastguard Worker dl_iterate_phdr([](dl_phdr_info* info, size_t, void* data) -> int {
15*1b3f573fSAndroid Build Coastguard Worker auto local_libs = static_cast<decltype(&libs)>(data);
16*1b3f573fSAndroid Build Coastguard Worker std::string name = info->dlpi_name;
17*1b3f573fSAndroid Build Coastguard Worker size_t libprotobuf = name.find("libprotobuf-cpp");
18*1b3f573fSAndroid Build Coastguard Worker if (libprotobuf != name.npos) {
19*1b3f573fSAndroid Build Coastguard Worker local_libs->push_back(name.substr(libprotobuf, name.size()));
20*1b3f573fSAndroid Build Coastguard Worker }
21*1b3f573fSAndroid Build Coastguard Worker return 0;
22*1b3f573fSAndroid Build Coastguard Worker }, &libs);
23*1b3f573fSAndroid Build Coastguard Worker
24*1b3f573fSAndroid Build Coastguard Worker std::sort(libs.begin(), libs.end());
25*1b3f573fSAndroid Build Coastguard Worker
26*1b3f573fSAndroid Build Coastguard Worker std::string version = android::base::StringPrintf("-%d.%d",
27*1b3f573fSAndroid Build Coastguard Worker GOOGLE_PROTOBUF_VERSION / 1000 % 1000,
28*1b3f573fSAndroid Build Coastguard Worker GOOGLE_PROTOBUF_VERSION % 1000);
29*1b3f573fSAndroid Build Coastguard Worker
30*1b3f573fSAndroid Build Coastguard Worker std::string suffix = GOOGLE_PROTOBUF_VERSION_SUFFIX;
31*1b3f573fSAndroid Build Coastguard Worker if (suffix != "") {
32*1b3f573fSAndroid Build Coastguard Worker version += "-" + suffix;
33*1b3f573fSAndroid Build Coastguard Worker }
34*1b3f573fSAndroid Build Coastguard Worker
35*1b3f573fSAndroid Build Coastguard Worker std::vector<std::string> expect = {
36*1b3f573fSAndroid Build Coastguard Worker "libprotobuf-cpp-full" + version + ".so",
37*1b3f573fSAndroid Build Coastguard Worker "libprotobuf-cpp-lite" + version + ".so",
38*1b3f573fSAndroid Build Coastguard Worker };
39*1b3f573fSAndroid Build Coastguard Worker
40*1b3f573fSAndroid Build Coastguard Worker ASSERT_EQ(expect, libs);
41*1b3f573fSAndroid Build Coastguard Worker }
42