diff --git a/BinarySerializer.Test/PackedBoolean/PackedBooleanTests.cs b/BinarySerializer.Test/PackedBoolean/PackedBooleanTests.cs index fead08ef..a1d3733d 100644 --- a/BinarySerializer.Test/PackedBoolean/PackedBooleanTests.cs +++ b/BinarySerializer.Test/PackedBoolean/PackedBooleanTests.cs @@ -108,6 +108,27 @@ public void AddsNewItemsOnFixedSize() CheckSequence(expectedLength, result.ConstantLengthArray); } + [TestMethod] + public void DoesntAffectUnpackedBooleanArrays() + { + var original = new UnpackedBooleanClass + { + UnpackedArray = new[] { true, true, false, false, true, true } + }; + + var expected = new byte[] { 6, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1 }; + var actual = Serialize(original); + + CheckSequence(expected, actual); + + var deserialized = Deserialize(actual); + + Assert.AreEqual(original.UnpackedArray.Length, deserialized.UnpackedArrayLength, "Invalid length binding on unpacked boolean array."); + Assert.AreEqual(original.UnpackedArray.Length, deserialized.UnpackedArrayCount, "Invalid count binding on unpacked boolean array."); + + CheckSequence(original.UnpackedArray, deserialized.UnpackedArray); + } + private void CheckSequence(IEnumerable expected, IEnumerable actual) { Assert.AreEqual(expected.Count(), actual.Count(), "Incorrect length"); diff --git a/BinarySerializer.Test/PackedBoolean/UnpackedBooleanClass.cs b/BinarySerializer.Test/PackedBoolean/UnpackedBooleanClass.cs new file mode 100644 index 00000000..22564543 --- /dev/null +++ b/BinarySerializer.Test/PackedBoolean/UnpackedBooleanClass.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace BinarySerialization.Test.PackedBoolean +{ + public class UnpackedBooleanClass + { + [FieldOrder(0)] public long UnpackedArrayCount { get; set; } + [FieldOrder(1)] public long UnpackedArrayLength { get; set; } + + [FieldCount(nameof(UnpackedArrayCount)), FieldLength(nameof(UnpackedArrayLength))] + [FieldOrder(2)] + public bool[] UnpackedArray { get; set; } + } +}