public void ParseTermInChild()
        {
            var x = new Vocabulary();

            x.AddTermHandler("child", (s, o) => {
                var subject   = (LocalType)s.Subject;
                subject.Child = new LocalChildType();
                return(new Context {
                    Subject = subject.Child
                });
            });

            x.AddTermHandler <LocalChildType, string>("Ick", (s, o) => {
                s.Ick = o;
            });

            x.AddTermHandler <LocalChildType, string>("Ock", (s, o) => {
                s.Ock = o;
            });

            var doc = new JObject(new JProperty("foo", "bar"),
                                  new JProperty("child", new JObject(new JProperty("Ick", "much"), new JProperty("Ock", "wow"))));

            var parser = new JsonStreamingParser();

            var localObject = new LocalType();

            JsonStreamingParser.ParseStream(doc.ToMemoryStream(), localObject, x);

            Assert.Equal("much", localObject.Child.Ick);
            Assert.Equal("wow", localObject.Child.Ock);
        }
        public void ParseTerm()
        {
            var x = new Vocabulary();

            x.AddTermHandler <LocalType, string>("foo", (s, o) => {
                s.Foo = o;
            });
            x.AddTermHandler <LocalType, int>("baz", (s, o) => {
                s.Baz = o;
            });

            var doc = new JObject(new JProperty("foo", "bar"), new JProperty("baz", 22));

            var parser = new JsonStreamingParser();

            var localObject = new LocalType();

            JsonStreamingParser.ParseStream(doc.ToMemoryStream(), localObject, x);

            Assert.Equal("bar", localObject.Foo);
            Assert.Equal(22, localObject.Baz);
        }