示例#1
0
        public static void When_read_empty_object(string json)
        {
            // Read
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    var actual = jr.ReadObject(n => false, () => 0);

                    Assert.Equal(0, actual);
                }

            // Process
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    var actual = 0;
                    jr.ProcessObject(n =>
                    {
                        return(false);
                    },
                                     () => actual++);

                    Assert.Equal(1, actual);
                }
        }
        public static void When_read_empty_object(string json)
        {
            // Read
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    var actual = jr.ReadObject(n => false, () => 0);

                    Assert.Equal(0, actual);
                }

            // Process
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    var actual = 0;
                    jr.ProcessObject(n =>
                    {
                        return(false);
                    },
                                     () => actual++);

                    Assert.Equal(1, actual);
                }

            // Skip
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    var actualCount = jr.SkipCountObject();

                    Assert.True(jr.TokenType == JsonToken.EndObject);
                    Assert.Equal(0, actualCount);
                }
        }
        public static void When_read_null_object(string json)
        {
            // Read
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    string actual = null;
                    var    model  = jr.ReadObject(n =>
                    {
                        switch (n)
                        {
                        case "a": actual = (string)jr.Value; return(true);
                        }

                        return(false);
                    },
                                                  () => actual);

                    Assert.Null(model);
                }

            // Process
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    string actual = null;
                    jr.ProcessObject(n =>
                    {
                        switch (n)
                        {
                        case "a": actual = (string)jr.Value; return(true);
                        }

                        return(false);
                    },
                                     () => actual = actual == null ? null : "oops");

                    Assert.Null(actual);
                }

            // Skip
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    var actualCount = jr.SkipCountObject();

                    Assert.True(jr.TokenType == JsonToken.EndObject);
                    Assert.Equal(1, actualCount);
                }
        }
示例#4
0
        public static void When_read_null_object(string json)
        {
            // Read
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    string actual = null;
                    var    model  = jr.ReadObject(n =>
                    {
                        switch (n)
                        {
                        case "a": actual = (string)jr.Value; return(true);
                        }

                        return(false);
                    },
                                                  () => actual);

                    Assert.Null(model);
                }

            // Process
            using (var tr = new StringReader(json))
                using (var jr = new JsonTextReader(tr))
                {
                    string actual = null;
                    jr.ProcessObject(n =>
                    {
                        switch (n)
                        {
                        case "a": actual = (string)jr.Value; return(true);
                        }

                        return(false);
                    },
                                     () => actual = actual == null ? null : "oops");

                    Assert.Null(actual);
                }
        }
示例#5
0
        public static void When_read_simple_object_negative()
        {
            // Read
            using (var tr = new StringReader(jsonObject))
                using (var jr = new JsonTextReader(tr))
                {
                    string name   = null;
                    var    last   = "smith";
                    var    middle = "a";
                    var    alive  = false;

                    Assert.Throws <JsonReaderException>
                    (
                        () => jr.ReadObject(n =>
                    {
                        switch (n)
                        {
                        case "name": name = (string)jr.Value; return(true);

                        case "last": last = (string)jr.Value; return(true);

                        case "middle": middle = (string)jr.Value; return(true);

                        case "alive": alive = (bool)jr.Value; return(true);

                            // Neglect to process 'age'
                        }

                        return(false);
                    },
                                            () => name)
                    );
                }

            // Process
            using (var tr = new StringReader(jsonObject))
                using (var jr = new JsonTextReader(tr))
                {
                    string name   = null;
                    var    last   = "smith";
                    var    middle = "a";
                    var    alive  = false;

                    Assert.Throws <JsonReaderException>
                    (
                        () => jr.ProcessObject(n =>
                    {
                        switch (n)
                        {
                        case "name": name = (string)jr.Value; return(true);

                        case "last": last = (string)jr.Value; return(true);

                        case "middle": middle = (string)jr.Value; return(true);

                        case "alive": alive = (bool)jr.Value; return(true);

                            // Neglect to process 'age'
                        }

                        return(false);
                    },
                                               () => { })
                    );
                }
        }
示例#6
0
        public static void When_read_simple_object()
        {
            // Read
            using (var tr = new StringReader(jsonObject))
                using (var jr = new JsonTextReader(tr))
                {
                    string name   = null;
                    var    last   = "smith";
                    var    middle = "a";
                    var    alive  = false;
                    var    age    = -1L;
                    var    type   = new System.Data.SqlDbType?[3];

                    var text = jr.ReadObject(n =>
                    {
                        switch (n)
                        {
                        case "name": name = (string)jr.Value; return(true);

                        case "last": last = (string)jr.Value; return(true);

                        case "middle": middle = (string)jr.Value; return(true);

                        case "alive": alive = (bool)jr.Value; return(true);

                        case "age": age = (long)jr.Value; return(true);

                        case "type1": type[0] = jr.ReadEnum <System.Data.SqlDbType>(true); return(true);

                        case "type2": type[1] = jr.ReadEnum <System.Data.SqlDbType>(true); return(true);

                        case "type3": type[2] = jr.ReadEnum <System.Data.SqlDbType>(true); return(true);
                        }

                        return(false);
                    },
                                             () => $"{name} {age}");

                    Assert.Equal("joe 99", text);
                    Assert.Equal("joe", name);
                    Assert.Null(last);
                    Assert.Equal(string.Empty, middle);
                    Assert.True(alive);
                    Assert.Equal(99, age);
                    Assert.Equal(System.Data.SqlDbType.TinyInt, type[0]);
                    Assert.Null(type[1]);
                    Assert.Null(type[2]);
                }

            // Process
            using (var tr = new StringReader(jsonObject))
                using (var jr = new JsonTextReader(tr))
                {
                    string name   = null;
                    var    last   = "smith";
                    var    middle = "a";
                    var    alive  = false;
                    var    age    = -1L;
                    string text   = null;
                    var    type   = new System.Data.SqlDbType?[3];

                    jr.ProcessObject(n =>
                    {
                        switch (n)
                        {
                        case "name": name = (string)jr.Value; return(true);

                        case "last": last = (string)jr.Value; return(true);

                        case "middle": middle = (string)jr.Value; return(true);

                        case "alive": alive = (bool)jr.Value; return(true);

                        case "age": age = (long)jr.Value; return(true);

                        case "type1": type[0] = jr.ReadEnum <System.Data.SqlDbType>(true); return(true);

                        case "type2": type[1] = jr.ReadEnum <System.Data.SqlDbType>(true); return(true);

                        case "type3": type[2] = jr.ReadEnum <System.Data.SqlDbType>(true); return(true);
                        }

                        return(false);
                    },
                                     () => text = $"{name} {age}");

                    Assert.Equal("joe 99", text);
                    Assert.Equal("joe", name);
                    Assert.Null(last);
                    Assert.Equal(string.Empty, middle);
                    Assert.True(alive);
                    Assert.Equal(99, age);
                    Assert.Equal(System.Data.SqlDbType.TinyInt, type[0]);
                    Assert.Null(type[1]);
                    Assert.Null(type[2]);
                }
        }