xref: /openbmc/sdbusplus/test/gen/test_property_names.cpp (revision d2571922bfdb4f6b41ba4fbc45b8a4272793fd40)
1*d2571922SAlexander Hansen #include "server/Test/common.hpp"
2*d2571922SAlexander Hansen #include "server/Test2/common.hpp"
3*d2571922SAlexander Hansen 
4*d2571922SAlexander Hansen #include <print>
5*d2571922SAlexander Hansen 
6*d2571922SAlexander Hansen #include <gtest/gtest.h>
7*d2571922SAlexander Hansen 
main()8*d2571922SAlexander Hansen int main()
9*d2571922SAlexander Hansen {
10*d2571922SAlexander Hansen     // We can access the property name as a symbol.
11*d2571922SAlexander Hansen     // The property name is constexpr.
12*d2571922SAlexander Hansen 
13*d2571922SAlexander Hansen     constexpr auto propName =
14*d2571922SAlexander Hansen         sdbusplus::common::server::Test::property_names::some_value;
15*d2571922SAlexander Hansen 
16*d2571922SAlexander Hansen     // The property name can be used as part of error logs.
17*d2571922SAlexander Hansen 
18*d2571922SAlexander Hansen     std::println("property {} not found \n", propName);
19*d2571922SAlexander Hansen 
20*d2571922SAlexander Hansen     // If the property is removed from the interface definition, it will cause a
21*d2571922SAlexander Hansen     // build failure in applications still using that property. That can work
22*d2571922SAlexander Hansen     // even if the application is not (yet) using PDI-generated bindings for
23*d2571922SAlexander Hansen     // it's DBus interactions.
24*d2571922SAlexander Hansen 
25*d2571922SAlexander Hansen     std::println("using property {} \n",
26*d2571922SAlexander Hansen                  sdbusplus::common::server::Test2::property_names::new_value);
27*d2571922SAlexander Hansen 
28*d2571922SAlexander Hansen     EXPECT_EQ(sdbusplus::common::server::Test2::property_names::new_value,
29*d2571922SAlexander Hansen               "NewValue");
30*d2571922SAlexander Hansen 
31*d2571922SAlexander Hansen     return 0;
32*d2571922SAlexander Hansen }
33