Exemple #1
0
        public void Should_Deserialize_Simple_via_manual_CSharp_code()
        {
            DeserializerDlg <Word> dlgWord =
                /*DeserializerDlg<Word>*/ (ref ReadOnlySequence <Byte> input, Word value, out Int64 bytesRead) =>
            {
                SequenceReader <Byte> reader;
                String wordValue;

                reader = new SequenceReader <Byte>(input);
                if (ReaderExtensions.TryReadValue <String>(
                        ref reader,
                        out wordValue) == false)
                {
                    bytesRead = reader.Consumed;
                    return(false);
                }

                value.Value = wordValue;
                bytesRead   = reader.Consumed;
                return(true);
            };

            DeserializerDlg <Simple> dlgSimple =
                /*DeserializerDlg<Simple>*/ (ref ReadOnlySequence <Byte> input, Simple value, out Int64 bytesRead) =>
            {
                SequenceReader <Byte> reader;
                Int32  identifier;
                Word[] content;
                Byte   contentLength;

                reader = new SequenceReader <Byte>(input);
                if (ReaderExtensions.TryReadValue <Int32>(
                        ref reader,
                        out identifier) == false)
                {
                    bytesRead = reader.Consumed;
                    return(false);
                }

                if (ReaderExtensions.TryReadValue <Byte>(
                        ref reader,
                        out contentLength) == false)
                {
                    bytesRead = reader.Consumed;
                    return(false);
                }

                if (Serializer.TryDeserializeValues <Word>(
                        ref reader,
                        (Int32)contentLength,
                        out content) == false)
                {
                    bytesRead = reader.Consumed;
                    return(false);
                }

                value.Identifier = identifier;
                value.Sentence   = content;
                bytesRead        = reader.Consumed;
                return(true);
            };

            Serializer.Setup(dlgWord);
            Serializer.Setup(dlgSimple);

            RunDeserializer();
        }