public void ShouldWriteListOfEnumerableOfRandomTypeCorrectly()
        {
            var values = new CollectionExtensionsTests.MyCollection <object>(new object[]
            {
                1,
                new[] { 2, 3 },
                'a'
            });

            // Given
            var writerMachine = CreateWriterMachine();

            // When
            var writer = writerMachine.Writer();

            writer.Write(values);

            // When
            var readerMachine = CreateReaderMachine(writerMachine.GetOutput());
            var reader        = readerMachine.Reader();

            reader.ReadStructSignature().Should().Be((byte)(PackStream.TinyList | values.Count()));
            reader.ReadLong().Should().Be(1);
            reader.ReadStructSignature().Should().Be((byte)(PackStream.TinyList | 2));
            reader.ReadLong().Should().Be(2);
            reader.ReadLong().Should().Be(3);
            reader.ReadStructSignature().Should().Be(PackStream.TinyString | 1);
            reader.ReadLong().Should().Be(97);
        }
        public void ShouldWriteListOfEnumerableTypeCorrectly()
        {
            var nums = new CollectionExtensionsTests.MyCollection <int>(new[] { 1, 2, 3 });

            // Given
            var writerMachine = CreateWriterMachine();

            // When
            var writer = writerMachine.Writer();

            writer.Write(nums);

            // When
            var readerMachine = CreateReaderMachine(writerMachine.GetOutput());
            var reader        = readerMachine.Reader();

            reader.ReadStructSignature().Should().Be((byte)(PackStream.TinyList | nums.Count()));
            reader.ReadLong().Should().Be(1);
            reader.ReadLong().Should().Be(2);
            reader.ReadLong().Should().Be(3);
        }