public void ReadAllGetsAllValues()
 {
     using (var parser = new FormEncodedResponseParser(new StringReader("MyKey=MyValue&MyKey2=MyValue2")))
     {
         var val = parser.ReadAll().ToArray();
         Assert.AreEqual(2, val.Length);
     }
 }
 public void ReadEmptyIsNull()
 {
     using (var parser = new FormEncodedResponseParser(new StringReader("")))
     {
         var val = parser.Read();
         Assert.IsNull(val);
     }
 }
 public void HexEncodedValueIsParsed()
 {
     using (var parser = new FormEncodedResponseParser(new StringReader("My%20Key=My%20Value")))
     {
         var val = parser.Read();
         Assert.AreEqual("My Key", val.Item1);
         Assert.AreEqual("My Value", val.Item2);
     }
 }
        public void ReadPastEndIsNull()
        {
            using (var parser = new FormEncodedResponseParser(new StringReader("MyKey=MyValue")))
            {
                var first = parser.Read();
                Assert.IsNotNull(first);

                var second = parser.Read();
                Assert.IsNull(second);
            }
        }
        public void ParserDisposesReader()
        {
            var reader = new Mock <TextReader>();

            using (var parser = new FormEncodedResponseParser(reader.Object))
            {
                //do nothing
            }

            reader.Protected().Verify("Dispose", Times.AtLeastOnce(), true);
        }
        public void ReadGetsMultipleValues()
        {
            using (var parser = new FormEncodedResponseParser(new StringReader("MyKey=MyValue&MyKey2=MyValue2")))
            {
                var first = parser.Read();
                Assert.AreEqual("MyKey", first.Item1);
                Assert.AreEqual("MyValue", first.Item2);

                var second = parser.Read();
                Assert.AreEqual("MyKey2", second.Item1);
                Assert.AreEqual("MyValue2", second.Item2);
            }
        }
        public void ReadEmptyValuesAsEmptyStringAsync()
        {
            using (var parser = new FormEncodedResponseParser(new StringReader("KeyIsNull=&KeyHasValue=Value")))
            {
                var first = parser.ReadAsync().Result;
                Assert.AreEqual("KeyIsNull", first.Item1);
                Assert.AreEqual(string.Empty, first.Item2);

                var second = parser.ReadAsync().Result;
                Assert.AreEqual("KeyHasValue", second.Item1);
                Assert.AreEqual("Value", second.Item2);
            }
        }
        public T Parse(TextReader tr)
        {
            var ret = _converter.Create();

            using (var parser = new FormEncodedResponseParser(tr))
            {
                foreach (var kvp in parser.ReadAll())
                {
                    _converter.SetValue(ret, kvp.Item1, kvp.Item2);
                }
            }

            return(ret);
        }
        public void ReadMultiplePastEndIsNullAsync()
        {
            using (var parser = new FormEncodedResponseParser(new StringReader("MyKey=MyValue")))
            {
                var first = parser.ReadAsync().Result;
                Assert.IsNotNull(first);

                var second = parser.ReadAsync().Result;
                Assert.IsNull(second);

                var third = parser.ReadAsync().Result;
                Assert.IsNull(third);
            }
        }
        public async Task <T> ParseAsync(TextReader tr)
        {
            var ret = _converter.Create();

            using (var parser = new FormEncodedResponseParser(tr))
            {
                Tuple <string, string> kvp;
                while ((kvp = await parser.ReadAsync()) != null)
                {
                    _converter.SetValue(ret, kvp.Item1, kvp.Item2);
                }
            }

            return(ret);
        }