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)