コード例 #1
0
        private static string PerformNewLineTest(string value, bool hasEscapeSequences)
        {
            KvObject convertedKv;
            var      kv      = new KvObject("newLineTestCase", value);
            var      options = new KvSerializerOptions {
                HasEscapeSequences = hasEscapeSequences
            };

            string text;

            using (var ms = new MemoryStream())
            {
                var serializer = KvSerializer.Create(KvSerializationFormat.KeyValues1Text);

                serializer.Serialize(ms, kv, options);

                ms.Seek(0, SeekOrigin.Begin);

                text = Encoding.ASCII.GetString(ms.ToArray(), 0, (int)ms.Length);

                convertedKv = serializer.Deserialize(ms, options);
            }

            Assert.That((string)convertedKv.Value, Is.EqualTo(value));

            return(text);
        }
コード例 #2
0
        public Kv1TokenReader(TextReader textReader, KvSerializerOptions options)
        {
            Require.NotNull(textReader, nameof(textReader));
            Require.NotNull(options, nameof(options));

            _textReader = textReader;
            _options    = options;
        }
コード例 #3
0
        public void SetUp()
        {
            var options = new KvSerializerOptions {
                HasEscapeSequences = true
            };

            using (var stream = TestDataHelper.OpenResource("Text.escaped_backslash.vdf"))
                _data = KvSerializer.Create(KvSerializationFormat.KeyValues1Text).Deserialize(stream, options);
        }
コード例 #4
0
        public void SetUp()
        {
            var options = new KvSerializerOptions {
                FileLoader = new StubIncludedFileLoader()
            };

            using (var stream = TestDataHelper.OpenResource("Text.kv_with_include.vdf"))
                _data = KvSerializer.Create(KvSerializationFormat.KeyValues1Text).Deserialize(stream, options);
        }
コード例 #5
0
        public Kv1TextSerializer(Stream stream, KvSerializerOptions options)
        {
            Require.NotNull(stream, nameof(stream));
            Require.NotNull(options, nameof(options));

            _options = options;
            _writer  = new StreamWriter(stream, Encoding.UTF8, 1024, true)
            {
                NewLine = "\n"
            };
        }
コード例 #6
0
        public Kv1TextReader(TextReader textReader, IParsingVisitationListener listener, KvSerializerOptions options)
        {
            Require.NotNull(textReader, nameof(textReader));
            Require.NotNull(listener, nameof(listener));
            Require.NotNull(options, nameof(options));

            _listener = listener;
            _options  = options;

            _conditionEvaluator = new KvConditionEvaluator(options.Conditions);
            _tokenReader        = new Kv1TokenReader(textReader, options);
            _stateMachine       = new Kv1TextReaderStateMachine();
        }
コード例 #7
0
        public Kv1BinarySerializer(Stream stream, KvSerializerOptions options)
        {
            Require.NotNull(stream, nameof(stream));

            _isVbkv = options.HasVbkvHeader;
            if (_isVbkv)
            {
                _terminator = Kv1BinaryNodeType.EndVbkv;
            }

            _writer     = new BinaryWriter(new MemoryStream(), Encoding.UTF8);
            _realWriter = new BinaryWriter(stream, Encoding.UTF8, leaveOpen: true);
        }
コード例 #8
0
        public void ThrowsExceptionWhenHasEscapeSequences()
        {
            var options = new KvSerializerOptions {
                HasEscapeSequences = true
            };

            using (var stream = TestDataHelper.OpenResource("Text.escaped_garbage.vdf"))
            {
                Assert.That(
                    () => KvSerializer.Create(KvSerializationFormat.KeyValues1Text).Deserialize(stream, options),
                    Throws.Exception.TypeOf <KeyValueException>()
                    .With.InnerException.TypeOf <InvalidDataException>()
                    .With.Message.EqualTo(@"Unknown escaped character '\7'."));
            }
        }
コード例 #9
0
        public Kv1BinaryReader(Stream stream, IVisitationListener listener, KvSerializerOptions options)
        {
            Require.NotNull(stream, nameof(stream));
            Require.NotNull(listener, nameof(listener));

            _isVbkv = options.HasVbkvHeader;
            if (_isVbkv)
            {
                _terminator = Kv1BinaryNodeType.EndVbkv;
            }

            if (!stream.CanSeek)
            {
                throw new ArgumentException("Stream must be seekable", nameof(stream));
            }

            _stream   = stream;
            _listener = listener;
            _reader   = new BinaryReader(stream, Encoding.UTF8, true);
        }
コード例 #10
0
 KvObject IKvTextReader.Read(string resourceName, KvSerializerOptions options)
 {
     using (var stream = TestDataHelper.OpenResource(resourceName))
         return(KvSerializer.Create(KvSerializationFormat.KeyValues1Text).Deserialize(stream, options));
 }
コード例 #11
0
 public static KvObject Deserialize(this KvSerializer serializer, byte[] data, KvSerializerOptions options = null)
 {
     using (var ms = new MemoryStream(data))
     {
         return(serializer.Deserialize(ms, options));
     }
 }
コード例 #12
0
        public static TObject Deserialize <TObject>(this KvSerializer serializer, string text, KvSerializerOptions options = null)
        {
            using (var ms = new MemoryStream())
                using (var writer = new StreamWriter(ms))
                {
                    writer.Write(text);
                    writer.Flush();

                    ms.Seek(0, SeekOrigin.Begin);

                    return(serializer.Deserialize <TObject>(ms, options));
                }
        }
コード例 #13
0
        T IKvTextReader.Read <T>(string resourceName, KvSerializerOptions options)
        {
            var text = TestDataHelper.ReadTextResource(resourceName);

            return(_serializer.Deserialize <T>(text, options));
        }