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); } }
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); } }
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); }, () => { }) ); } }
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]); } }