public void ChangeDataTypeTest_Booleans() { JValue jValue; // Valid bool jValue = new JValue("true"); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Boolean); Assert.AreEqual(true, jValue.Value); jValue = new JValue("TRUE"); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Boolean); Assert.AreEqual(true, jValue.Value); jValue = new JValue("True"); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Boolean); Assert.AreEqual(true, jValue.Value); jValue = new JValue("FaLsE"); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Boolean); Assert.AreEqual(false, jValue.Value); // Null bool jValue = new JValue((bool?)null); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Boolean); Assert.AreEqual(null, jValue.Value); // Bool source jValue = new JValue(true); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Boolean); Assert.AreEqual(true, jValue.Value); }
public void EnforceJsonTypesTest() { var json = @"{ ""hello"": ""123"", ""hello_2"": ""123.5"", ""world"": ""true"", ""bad_arr"": ""hello, world"", ""bad_arr_2"": { ""prop1"": 123 }, ""good_arr"": [ ""hello, world"" ], ""good_arr_2"": [ { ""prop1"": 123 } ], }"; var result = JsonTypeEnforcer.EnforceJsonTypes( new EnforceJsonTypesParameters { Json = json, Rules = new[] { new JsonTypeRule("$.hello", JsonDataType.Number), new JsonTypeRule("$.hello_2", JsonDataType.Number), new JsonTypeRule("$.world", JsonDataType.Boolean), new JsonTypeRule("$.bad_arr", JsonDataType.Array), new JsonTypeRule("$.bad_arr_2", JsonDataType.Array), new JsonTypeRule("$.good_arr", JsonDataType.Array), new JsonTypeRule("$.good_arr_2", JsonDataType.Array), } }); var expected = @"{ ""hello"": 123, ""hello_2"": 123.5, ""world"": true, ""bad_arr"": [ ""hello, world"" ], ""bad_arr_2"": [ { ""prop1"": 123 } ], ""good_arr"": [ ""hello, world"" ], ""good_arr_2"": [ { ""prop1"": 123 } ] }"; Console.WriteLine(expected); Console.WriteLine(result); Assert.AreEqual(expected, result); }
public void ChangeDataTypeTest_Empty() { JValue jValue; // Empty - null jValue = new JValue(""); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Number); Assert.AreEqual(null, jValue.Value); // Empty - null jValue = new JValue((string)null); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Number); Assert.AreEqual(null, jValue.Value); }
public void ChangeDataTypeTest_ArraysWithComplexObjects() { // Array var jObject = JObject.Parse(@"{ ""arr"": { ""prop1"": 111 } }"); var jToken = jObject.SelectTokens("$.arr").First(); JsonTypeEnforcer.ChangeDataType(jToken, JsonDataType.Array); var jArray = (JArray)jObject.SelectToken("$.arr"); Assert.AreEqual(1, jArray.Count); Assert.AreEqual(111, jArray[0]["prop1"].Value <int>()); }
public void ChangeDataTypeTest_Arrays() { // Array var jObject = JObject.Parse(@"{ ""arr"": 111 }"); var jValue = (JValue)jObject.SelectTokens("$.arr").First(); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Array); var jArray = (JArray)jObject.SelectToken("$.arr"); Assert.AreEqual(1, jArray.Count); Assert.AreEqual(111, jArray[0]); }
public void ChangeDataTypeTest_Number() { JValue jValue; // Valid number jValue = new JValue("1.23"); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Number); Assert.AreEqual(1.23, jValue.Value); // Invalid number - do nothing jValue = new JValue("foo"); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Number); Assert.AreEqual("foo", jValue.Value); // Source is number - do nothing jValue = new JValue(1.23); JsonTypeEnforcer.ChangeDataType(jValue, JsonDataType.Number); Assert.AreEqual(1.23, jValue.Value); }