diff --git a/SabreTools.Serialization.Test/Deserializers/GZipTests.cs b/SabreTools.Serialization.Test/Deserializers/GZipTests.cs new file mode 100644 index 00000000..54eece86 --- /dev/null +++ b/SabreTools.Serialization.Test/Deserializers/GZipTests.cs @@ -0,0 +1,73 @@ +using System.IO; +using System.Linq; +using SabreTools.Serialization.Deserializers; +using Xunit; + +namespace SabreTools.Serialization.Test.Deserializers +{ + public class GZipTests + { + [Fact] + public void NullArray_Null() + { + byte[]? data = null; + int offset = 0; + var deserializer = new GZip(); + + var actual = deserializer.Deserialize(data, offset); + Assert.Null(actual); + } + + [Fact] + public void EmptyArray_Null() + { + byte[]? data = []; + int offset = 0; + var deserializer = new GZip(); + + var actual = deserializer.Deserialize(data, offset); + Assert.Null(actual); + } + + [Fact] + public void InvalidArray_Null() + { + byte[]? data = [.. Enumerable.Repeat(0xFF, 1024)]; + int offset = 0; + var deserializer = new GZip(); + + var actual = deserializer.Deserialize(data, offset); + Assert.Null(actual); + } + + [Fact] + public void NullStream_Null() + { + Stream? data = null; + var deserializer = new GZip(); + + var actual = deserializer.Deserialize(data); + Assert.Null(actual); + } + + [Fact] + public void EmptyStream_Null() + { + Stream? data = new MemoryStream([]); + var deserializer = new GZip(); + + var actual = deserializer.Deserialize(data); + Assert.Null(actual); + } + + [Fact] + public void InvalidStream_Null() + { + Stream? data = new MemoryStream([.. Enumerable.Repeat(0xFF, 1024)]); + var deserializer = new GZip(); + + var actual = deserializer.Deserialize(data); + Assert.Null(actual); + } + } +} \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/TapeArchiveTests.cs b/SabreTools.Serialization.Test/Deserializers/TapeArchiveTests.cs new file mode 100644 index 00000000..487367d8 --- /dev/null +++ b/SabreTools.Serialization.Test/Deserializers/TapeArchiveTests.cs @@ -0,0 +1,73 @@ +using System.IO; +using System.Linq; +using SabreTools.Serialization.Deserializers; +using Xunit; + +namespace SabreTools.Serialization.Test.Deserializers +{ + public class TapeArchiveTests + { + [Fact] + public void NullArray_Null() + { + byte[]? data = null; + int offset = 0; + var deserializer = new TapeArchive(); + + var actual = deserializer.Deserialize(data, offset); + Assert.Null(actual); + } + + [Fact] + public void EmptyArray_Null() + { + byte[]? data = []; + int offset = 0; + var deserializer = new TapeArchive(); + + var actual = deserializer.Deserialize(data, offset); + Assert.Null(actual); + } + + [Fact] + public void InvalidArray_Null() + { + byte[]? data = [.. Enumerable.Repeat(0xFF, 1024)]; + int offset = 0; + var deserializer = new TapeArchive(); + + var actual = deserializer.Deserialize(data, offset); + Assert.Null(actual); + } + + [Fact] + public void NullStream_Null() + { + Stream? data = null; + var deserializer = new TapeArchive(); + + var actual = deserializer.Deserialize(data); + Assert.Null(actual); + } + + [Fact] + public void EmptyStream_Null() + { + Stream? data = new MemoryStream([]); + var deserializer = new TapeArchive(); + + var actual = deserializer.Deserialize(data); + Assert.Null(actual); + } + + [Fact] + public void InvalidStream_Null() + { + Stream? data = new MemoryStream([.. Enumerable.Repeat(0xFF, 1024)]); + var deserializer = new TapeArchive(); + + var actual = deserializer.Deserialize(data); + Assert.Null(actual); + } + } +} \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Wrappers/GZipTests.cs b/SabreTools.Serialization.Test/Wrappers/GZipTests.cs index d674bb12..3e0843a1 100644 --- a/SabreTools.Serialization.Test/Wrappers/GZipTests.cs +++ b/SabreTools.Serialization.Test/Wrappers/GZipTests.cs @@ -25,7 +25,7 @@ namespace SabreTools.Serialization.Test.Wrappers Assert.Null(actual); } - [Fact(Skip = "This will never pass with the current code")] + [Fact] public void InvalidArray_Null() { byte[]? data = [.. Enumerable.Repeat(0xFF, 1024)]; @@ -42,7 +42,7 @@ namespace SabreTools.Serialization.Test.Wrappers Assert.Null(actual); } - [Fact(Skip = "This will never pass with the current code")] + [Fact] public void EmptyStream_Null() { Stream? data = new MemoryStream([]); @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.Test.Wrappers Assert.Null(actual); } - [Fact(Skip = "This will never pass with the current code")] + [Fact] public void InvalidStream_Null() { Stream? data = new MemoryStream([.. Enumerable.Repeat(0xFF, 1024)]); diff --git a/SabreTools.Serialization.Test/Wrappers/TapeArchiveTests.cs b/SabreTools.Serialization.Test/Wrappers/TapeArchiveTests.cs index 45aefd48..84468b46 100644 --- a/SabreTools.Serialization.Test/Wrappers/TapeArchiveTests.cs +++ b/SabreTools.Serialization.Test/Wrappers/TapeArchiveTests.cs @@ -25,7 +25,7 @@ namespace SabreTools.Serialization.Test.Wrappers Assert.Null(actual); } - [Fact(Skip = "This will never pass with the current code")] + [Fact] public void InvalidArray_Null() { byte[]? data = [.. Enumerable.Repeat(0xFF, 1024)]; @@ -42,7 +42,7 @@ namespace SabreTools.Serialization.Test.Wrappers Assert.Null(actual); } - [Fact(Skip = "This will never pass with the current code")] + [Fact] public void EmptyStream_Null() { Stream? data = new MemoryStream([]); @@ -50,7 +50,7 @@ namespace SabreTools.Serialization.Test.Wrappers Assert.Null(actual); } - [Fact(Skip = "This will never pass with the current code")] + [Fact] public void InvalidStream_Null() { Stream? data = new MemoryStream([.. Enumerable.Repeat(0xFF, 1024)]); diff --git a/SabreTools.Serialization/Deserializers/TapeArchive.cs b/SabreTools.Serialization/Deserializers/TapeArchive.cs index c9d7faae..976db428 100644 --- a/SabreTools.Serialization/Deserializers/TapeArchive.cs +++ b/SabreTools.Serialization/Deserializers/TapeArchive.cs @@ -37,6 +37,10 @@ namespace SabreTools.Serialization.Deserializers entries.Add(entry); } + // No entires indicates invalid + if (entries.Count == 0) + return null; + // Assign the entries archive.Entries = [.. entries];