Пример #1
0
        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.GetBuffer(), 0, (int)ms.Length);

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

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

            return(text);
        }
Пример #2
0
 KVObject IKVTextReader.Read(string resourceName, KVSerializerOptions options)
 {
     using (var stream = TestDataHelper.OpenResource(resourceName))
     {
         return(KVSerializer.Deserialize(stream, options));
     }
 }
Пример #3
0
 KVObject IKVTextReader.Read(string resourceName, KVSerializerOptions options)
 {
     using (var stream = TestDataHelper.OpenResource(resourceName))
     {
         return(KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize(stream, options));
     }
 }
Пример #4
0
        public KV1TokenReader(TextReader textReader, KVSerializerOptions options)
        {
            Require.NotNull(textReader, nameof(textReader));
            Require.NotNull(options, nameof(options));

            this.textReader = textReader;
            this.options    = options;
        }
        public void SetUp()
        {
            var options = new KVSerializerOptions {
                HasEscapeSequences = true
            };

            using var stream = TestDataHelper.OpenResource("Text.escaped_whitespace.vdf");
            data             = KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize(stream, options);
        }
Пример #6
0
        public KV1TextSerializer(Stream stream, KVSerializerOptions options)
        {
            Require.NotNull(stream, nameof(stream));
            Require.NotNull(options, nameof(options));

            this.options   = options;
            writer         = new StreamWriter(stream, Encoding.UTF8, bufferSize: 1024, leaveOpen: true);
            writer.NewLine = "\n";
        }
        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);
        }
        public void SetUp()
        {
            var options = new KVSerializerOptions {
                HasEscapeSequences = true
            };

            using (var stream = TestDataHelper.OpenResource("Text.escaped_whitespace.vdf"))
            {
                data = KVSerializer.Deserialize(stream, options);
            }
        }
Пример #9
0
        public void SetUp()
        {
            var options = new KVSerializerOptions {
                FileLoader = new StubIncludedFileLoader()
            };

            using (var stream = TestDataHelper.OpenResource("Text.kv_with_base.vdf"))
            {
                data = KVSerializer.Deserialize(stream, options);
            }
        }
Пример #10
0
        public void CanDeserializeFromRandomlyCasedKeys()
        {
            var text    = TestDataHelper.ReadTextResource("Text.random_case_object.vdf");
            var options = new KVSerializerOptions {
                HasEscapeSequences = true
            };
            var actual = KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize <DataObject>(text, options);

            Assert.That(actual.Name, Is.EqualTo("Dota 2"));
            Assert.That(actual.Summary, Is.EqualTo("Dota 2 is a complex game where you get sworn at\nin Russian all the time."));
            Assert.That(actual.Developer, Is.EqualTo("Valve Software"));
        }
        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 escape sequence '\7'."));
        }
Пример #12
0
        public void CanDeserializeObjectListAndPropertyName()
        {
            var text    = TestDataHelper.ReadTextResource("Text.serialization_expected.vdf");
            var options = new KVSerializerOptions {
                HasEscapeSequences = true
            };
            var actual = KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize <DataObject[]>(text, options);

            Assert.That(actual[0].Name, Is.EqualTo("Dota 2"));
            Assert.That(actual[0].Summary, Is.EqualTo("Dota 2 is a complex game where you get sworn at\nin Russian all the time."));

            Assert.That(actual[1].Developer, Is.EqualTo("Valve Software"));
            Assert.That(actual[1].Summary, Is.EqualTo("Known as \"America's #1 war-themed hat simulator\", this game lets you wear stupid items while killing people."));
        }
        public void ReadsValueWithNullByteWhenBugCompatibilityEnabled()
        {
            var options = new KVSerializerOptions
            {
                EnableValveNullByteBugBehavior = true,
                HasEscapeSequences             = true,
            };

            KVObject data;

            using (var stream = TestDataHelper.OpenResource("Text.escaped_garbage.vdf"))
            {
                data = KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize(stream, options);
            }

            Assert.That((string)data["key"], Is.EqualTo("abcd"));
        }
Пример #14
0
        static KVObject ParseResource(string name, string[] conditions)
        {
            KVObject data;

            using (var stream = TestDataHelper.OpenResource(name))
            {
                var options = new KVSerializerOptions();
                options.Conditions.Clear();

                foreach (var c in conditions)
                {
                    options.Conditions.Add(c);
                }

                data = KVSerializer.Create(KVSerializationFormat.KeyValues1Text).Deserialize(stream, options);
            }

            return(data);
        }
 public static KVObject Deserialize(this KVSerializer serializer, byte[] data, KVSerializerOptions options = null)
 {
     using var ms = new MemoryStream(data);
     return(serializer.Deserialize(ms, options));
 }
Пример #16
0
        KVObject IKVTextReader.Read(string resourceName, KVSerializerOptions options)
        {
            var text = TestDataHelper.ReadTextResource(resourceName);

            return(KVSerializer.Deserialize(text, options));
        }
Пример #17
0
        public KV1TextReader(TextReader textReader, IParsingVisitationListener listener, KVSerializerOptions options)
        {
            Require.NotNull(textReader, nameof(textReader));
            Require.NotNull(listener, nameof(listener));
            Require.NotNull(options, nameof(options));

            this.listener = listener;
            this.options  = options;

            conditionEvaluator = new KVConditionEvaluator(options.Conditions);
            tokenReader        = new KV1TokenReader(textReader, options);
            stateMachine       = new KV1TextReaderStateMachine();
        }
Пример #18
0
 public static TObject Deserialize <TObject>(this KVSerializer serializer, byte[] data, KVSerializerOptions options = null)
 {
     using (var ms = new MemoryStream(data))
     {
         return(serializer.Deserialize <TObject>(ms, options));
     }
 }
        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));
        }