diff --git a/plist-cil.test/BinaryPropertyListWriterTests.cs b/plist-cil.test/BinaryPropertyListWriterTests.cs
index 3433949..22d54ac 100644
--- a/plist-cil.test/BinaryPropertyListWriterTests.cs
+++ b/plist-cil.test/BinaryPropertyListWriterTests.cs
@@ -37,5 +37,37 @@ namespace plistcil.test
writer.Write(root);
}
}
+
+ [Fact]
+ public void Roundtrip3Test()
+ {
+ byte[] data = File.ReadAllBytes("test-files/plist3.bin");
+ NSObject root = PropertyListParser.Parse(data);
+
+ using (MemoryStream actualOutput = new MemoryStream())
+ using (Stream expectedOutput = File.OpenRead("test-files/plist3.bin"))
+ using (ValidatingStream validatingStream = new ValidatingStream(actualOutput, expectedOutput))
+ {
+ BinaryPropertyListWriter writer = new BinaryPropertyListWriter(validatingStream);
+ writer.ReuseObjectIds = false;
+ writer.Write(root);
+ }
+ }
+
+ [Fact]
+ public void Roundtrip4Test()
+ {
+ byte[] data = File.ReadAllBytes("test-files/plist4.bin");
+ NSObject root = PropertyListParser.Parse(data);
+
+ using (MemoryStream actualOutput = new MemoryStream())
+ using (Stream expectedOutput = File.OpenRead("test-files/plist4.bin"))
+ using (ValidatingStream validatingStream = new ValidatingStream(actualOutput, expectedOutput))
+ {
+ BinaryPropertyListWriter writer = new BinaryPropertyListWriter(validatingStream);
+ writer.ReuseObjectIds = false;
+ writer.Write(root);
+ }
+ }
}
}
diff --git a/plist-cil.test/plist-cil.test.csproj b/plist-cil.test/plist-cil.test.csproj
index c7698c2..cb0a71d 100644
--- a/plist-cil.test/plist-cil.test.csproj
+++ b/plist-cil.test/plist-cil.test.csproj
@@ -119,6 +119,12 @@
PreserveNewest
+
+ PreserveNewest
+
+
+ PreserveNewest
+
PreserveNewest
diff --git a/plist-cil.test/test-files/plist3.bin b/plist-cil.test/test-files/plist3.bin
new file mode 100644
index 0000000..1a7f751
Binary files /dev/null and b/plist-cil.test/test-files/plist3.bin differ
diff --git a/plist-cil.test/test-files/plist4.bin b/plist-cil.test/test-files/plist4.bin
new file mode 100644
index 0000000..0c1a127
Binary files /dev/null and b/plist-cil.test/test-files/plist4.bin differ
diff --git a/plist-cil/BinaryPropertyListWriter.cs b/plist-cil/BinaryPropertyListWriter.cs
index 1c7641d..4f14952 100644
--- a/plist-cil/BinaryPropertyListWriter.cs
+++ b/plist-cil/BinaryPropertyListWriter.cs
@@ -422,13 +422,18 @@ namespace Claunia.PropertyList
|| content == "$classname"
|| content == "NS.objects"
|| content == "NS.keys"
+ || content == "NS.base"
+ || content == "NS.relative"
+ || content == "NS.string"
|| content == "NSURL"
|| content == "NSDictionary"
|| content == "NSObject"
|| content == "NSMutableDictionary"
|| content == "NSMutableArray"
|| content == "NSArray"
- || content == "NSUUID";
+ || content == "NSUUID"
+ || content == "NSKeyedArchiver"
+ || content == "NSMutableString";
}
internal static bool IsSerializationPrimitive(NSNumber n)