protected void ParseSingleResult <T>(string value, Action <JObject, T> assert)
        {
            using (var reader = GenerateReader(value))
            {
                var     documentParser = new DocumentParser(new ArangoDatabase());
                JObject jObject        = null;
                var     result         = documentParser.ParseSingleResult <T>(reader, out jObject, true);

                assert(jObject, result);
            }
        }
        public void ParseSingleError()
        {
            using (var reader = GenerateReader(JsonSample.Error))
            {
                var documentParser = new DocumentParser(new ArangoDatabase());
                JObject jObject = null;
                var person = documentParser.ParseSingleResult<Person>(reader, out jObject, true);

                // person wont be null here because we have no base result yet 
                Assert.Equal(person.Age, 0);
                Assert.Null(person.Fullname);
                Assert.Equal(person.Height, 0);
            }
        }
        public void ParseSingle()
        {
            using(var reader = GenerateReader(JsonSample.SingleResult))
            {
                var documentParser = new DocumentParser(new ArangoDatabase());
                JObject jObject=null;
                var person = documentParser.ParseSingleResult<Person>(reader, out jObject, true);

                Assert.Equal(person.Age, 27);
                Assert.Equal(person.Fullname, "raoof hojat");
                Assert.Equal(person.Height, 172);

                Assert.True(JObject.DeepEquals(jObject, JObject.Parse(JsonSample.SingleResult)));
            }
        }
        public void ParseSingle()
        {
            using(var reader = GenerateReader(JsonSample.SingleResult))
            {
                var documentParser = new DocumentParser(new ArangoDatabase());
                JObject jObject=null;
                var person = documentParser.ParseSingleResult<Person>(reader, out jObject, true);

                Assert.Equal(person.Age, 27);
                Assert.Equal(person.Fullname, "raoof hojat");
                Assert.Equal(person.Height, 172);

                Assert.True(JObject.DeepEquals(jObject, JObject.Parse(JsonSample.SingleResult)));
            }
        }
        public void ParseSingleError()
        {
            using (var reader = GenerateReader(JsonSample.Error))
            {
                var documentParser = new DocumentParser(new ArangoDatabase());
                JObject jObject = null;
                var person = documentParser.ParseSingleResult<Person>(reader, out jObject, true);

                // person wont be null here because we have no base result yet 
                Assert.Equal(person.Age, 0);
                Assert.Null(person.Fullname);
                Assert.Equal(person.Height, 0);
            }
        }