4545
4646using ::testing::Eq;
4747using ::testing::Gt;
48+ using ::testing::HasSubstr;
4849using namespace std ::string_literals;
4950
5051namespace
@@ -148,6 +149,24 @@ TEST(ASimpleVariant, ReturnsTheSimpleValueWhenAsked)
148149 ASSERT_THAT (variant.get <int >(), Eq (value));
149150}
150151
152+ #ifndef SDBUS_basu // Dumping message or variant to a string is not supported on basu backend
153+ TEST (ASimpleVariant, CanBeDumpedToAString)
154+ {
155+ const int value = 5 ;
156+ const sdbus::Variant variant (value);
157+
158+ // This should produce something like:
159+ // VARIANT "i" {
160+ // INT32 5;
161+ // };
162+ const auto str = variant.dumpToString ();
163+
164+ EXPECT_THAT (str, ::HasSubstr (" VARIANT \" i\" " ));
165+ EXPECT_THAT (str, ::HasSubstr (" INT32" ));
166+ EXPECT_THAT (str, ::HasSubstr (" 5" ));
167+ }
168+ #endif // SDBUS_basu
169+
151170TEST (AComplexVariant, ReturnsTheComplexValueWhenAsked)
152171{
153172 using ComplexType = std::map<uint64_t , std::vector<sdbus::Struct<std::string, double >>>;
@@ -158,6 +177,39 @@ TEST(AComplexVariant, ReturnsTheComplexValueWhenAsked)
158177 ASSERT_THAT (variant.get <ComplexType>(), Eq (value));
159178}
160179
180+ #ifndef SDBUS_basu // Dumping message or variant to a string is not supported on basu backend
181+ TEST (AComplexVariant, CanBeDumpedToAString)
182+ {
183+ using ComplexType = std::map<uint64_t , std::vector<sdbus::Struct<std::string, double >>>;
184+ const ComplexType value{ {ANY_UINT64, ComplexType::mapped_type{{" hello" s, ANY_DOUBLE}, {" world" s, ANY_DOUBLE}}} };
185+ const sdbus::Variant variant (value);
186+
187+ // This should produce something like:
188+ // VARIANT "a{ta(sd)}" {
189+ // ARRAY "{ta(sd)}" {
190+ // DICT_ENTRY "ta(sd)" {
191+ // UINT64 84578348354;
192+ // ARRAY "(sd)" {
193+ // STRUCT "sd" {
194+ // STRING "hello";
195+ // DOUBLE 3.14;
196+ // };
197+ // STRUCT "sd" {
198+ // STRING "world";
199+ // DOUBLE 3.14;
200+ // };
201+ // };
202+ // };
203+ // };
204+ // };
205+ const auto str = variant.dumpToString ();
206+
207+ EXPECT_THAT (str, ::HasSubstr (" VARIANT \" a{ta(sd)}\" " ));
208+ EXPECT_THAT (str, ::HasSubstr (" hello" ));
209+ EXPECT_THAT (str, ::HasSubstr (" world" ));
210+ }
211+ #endif // SDBUS_basu
212+
161213TEST (AVariant, HasConceptuallyNonmutableGetMethodWhichCanBeCalledXTimes)
162214{
163215 const std::string value{" I am a string" };
0 commit comments