public void DeserializeTokenAmount_WithEnoughData_ShouldDeserializeCorrectly(long expected, params byte[] data)
        {
            var reader = SerializationTesting.CreateReader(data);

            var result = Serializer.DeserializeTokenAmount(ref reader);

            Assert.Equal(expected, result.Value);
            Assert.Equal(0, reader.Remaining);
        }
        public void DeserializeString_DataIsString_ShouldDeserializeCorrectly(string expected, params byte[] data)
        {
            var reader = SerializationTesting.CreateReader(data);

            var result = Serializer.DeserializeString(ref reader);

            Assert.Equal(expected, result);
            Assert.Equal(0, reader.Remaining);
        }
        public void DeserializePropertyId_WithNonZero_ShouldDeserializeCorrectly(long expected, params byte[] data)
        {
            var reader = SerializationTesting.CreateReader(data);

            var result = Serializer.DeserializePropertyId(ref reader);

            Assert.NotNull(result);
            Assert.Equal(expected, result !.Value);
            Assert.Equal(0, reader.Remaining);
        }
        public void DeserializePropertyId_WithZero_ShouldReturnNull()
        {
            var data   = new byte[] { 0x00, 0x00, 0x00, 0x00 };
            var reader = SerializationTesting.CreateReader(data);

            var result = Serializer.DeserializePropertyId(ref reader);

            Assert.Null(result);
            Assert.Equal(0, reader.Remaining);
        }
        public void DeserializePrivateTransactionStatus_WithValidData_ShouldDeserializeCorrectly(
            PrivateTransactionStatus expected,
            params byte[] data)
        {
            var reader = SerializationTesting.CreateReader(data);

            var result = Serializer.DeserializePrivateTransactionStatus(ref reader);

            Assert.Equal(expected, result);
            Assert.Equal(0, reader.Remaining);
        }
        public void DeserializePrivateTransactionStatus_WithInvalidData_ShouldThrow(params byte[] data)
        {
            var ex = Assert.Throws <TransactionSerializationException>(
                () =>
            {
                var reader = SerializationTesting.CreateReader(data);
                Serializer.DeserializePrivateTransactionStatus(ref reader);
            });

            Assert.Equal("Invalid private transaction status.", ex.Message);
        }
        public void DeserializeTokenType_WithValidData_ShouldDeserializeCorrectly(
            TokenType expected,
            params byte[] data)
        {
            var reader = SerializationTesting.CreateReader(data);

            var result = Serializer.DeserializeTokenType(ref reader);

            Assert.Equal(expected, result);
            Assert.Equal(0, reader.Remaining);
        }
        public void DeserializeTokenType_WithInvalidData_ShouldThrow(params byte[] data)
        {
            var ex = Assert.Throws <TransactionSerializationException>(
                () =>
            {
                var reader = SerializationTesting.CreateReader(data);
                Serializer.DeserializeTokenType(ref reader);
            });

            Assert.Equal("Invalid token type.", ex.Message);
        }
        public void DeserializeString_DataIsNotString_ShouldThrow(params byte[] data)
        {
            var ex = Assert.Throws <TransactionSerializationException>(
                () =>
            {
                var reader = SerializationTesting.CreateReader(data);
                Serializer.DeserializeString(ref reader);
            });

            Assert.Equal("Invalid string.", ex.Message);
        }
        public void DeserializePropertyId_NotEnoughData_ShouldThrow(int size)
        {
            var data = new byte[size];

            var ex = Assert.Throws <TransactionSerializationException>(
                () =>
            {
                var reader = SerializationTesting.CreateReader(data);
                Serializer.DeserializePropertyId(ref reader);
            });

            Assert.Equal("Incomplete data.", ex.Message);
        }