diff --git a/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp b/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp index 4baf9a79330b2e..e87c49f7bc0036 100644 --- a/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp +++ b/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp @@ -393,6 +393,57 @@ TEST(SerializationRountripTest, SerializeDeserializeCString) { EXPECT_STREQ(cstr, deserializer.Deserialize()); } +TEST(SerializationRountripTest, SerializeDeserializeCStringArray) { + const char *foo = "foo"; + const char *bar = "bar"; + const char *baz = "baz"; + const char *arr[4] = {foo, bar, baz, nullptr}; + + std::string str; + llvm::raw_string_ostream os(str); + + Serializer serializer(os); + serializer.SerializeAll(static_cast(arr)); + + llvm::StringRef buffer(os.str()); + Deserializer deserializer(buffer); + + const char **deserialized = deserializer.Deserialize(); + EXPECT_STREQ("foo", deserialized[0]); + EXPECT_STREQ("bar", deserialized[1]); + EXPECT_STREQ("baz", deserialized[2]); +} + +TEST(SerializationRountripTest, SerializeDeserializeCStringArrayNullptrElem) { + const char *arr[1] = {nullptr}; + + std::string str; + llvm::raw_string_ostream os(str); + + Serializer serializer(os); + serializer.SerializeAll(static_cast(arr)); + + llvm::StringRef buffer(os.str()); + Deserializer deserializer(buffer); + + const char **deserialized = deserializer.Deserialize(); + EXPECT_EQ(nullptr, deserialized); +} + +TEST(SerializationRountripTest, SerializeDeserializeCStringArrayNullptr) { + std::string str; + llvm::raw_string_ostream os(str); + + Serializer serializer(os); + serializer.SerializeAll(static_cast(nullptr)); + + llvm::StringRef buffer(os.str()); + Deserializer deserializer(buffer); + + const char **deserialized = deserializer.Deserialize(); + EXPECT_EQ(nullptr, deserialized); +} + TEST(SerializationRountripTest, SerializeDeserializeObjectPointer) { Foo foo; Bar bar;