void Check( string json, bool isNull, bool isArray, bool isObject, bool isValue, SLJsonNodeType valueType, bool valueBoolean, int valueInt32, long valueInt64, double valueNumber, string valueString) { SLJsonNode parsed = SLJsonParser.Parse(json); SLJsonNode n = parsed["value"]; Test.Assert(() => n.IsArray == isArray); Test.Assert(() => n.IsNull == isNull); Test.Assert(() => n.IsObject == isObject); Test.Assert(() => n.IsValue == isValue); Test.Assert(() => n.NodeType == valueType); Test.Assert(() => n.IsValue == (n.IsBoolean || n.IsNumber || n.IsString)); Test.Assert(() => n.IsBoolean == (valueType == SLJsonNodeType.Boolean)); Test.Assert(() => n.IsNumber == (valueType == SLJsonNodeType.Number)); Test.Assert(() => n.IsString == (valueType == SLJsonNodeType.String)); Test.Assert(() => n.AsBoolean == valueBoolean); Test.Assert(() => n.AsInt32 == valueInt32); Test.Assert(() => n.AsInt64 == valueInt64); Test.Assert(() => Math.Abs(n.AsDouble - valueNumber) <= 1e-7); Test.Assert(() => n.AsString == valueString); }
void Check2( SLJsonNode n, bool isNull, bool isArray, bool isObject, bool isValue, SLJsonNodeType valueType, bool valueBoolean, int valueInt32, long valueInt64, double valueNumber, string valueString) { CheckInternal(n, isNull, isArray, isObject, isValue, valueType, valueBoolean, valueInt32, valueInt64, valueNumber, valueString); CheckInternal(n.AsString, isNull, isArray, isObject, isValue, SLJsonNodeType.String, valueBoolean, valueInt32, valueInt64, valueNumber, valueString); }
void ParseAndSerialize(string jsonExpression, bool allowArraysAndValues, SLJsonNodeType nodeType) { SLJsonNode n = SLJsonParser.Parse(jsonExpression, allowArraysAndValues); Assert.AreEqual(nodeType, n.NodeType); string s = RemoveWhitespace(jsonExpression); Assert.AreEqual(s, n.AsJsonCompact); }
void ParseAndSerialize(string jsonExpression, bool allowArraysAndValues, SLJsonNodeType nodeType) { SLJsonNode n = SLJsonParser.Parse(jsonExpression, allowArraysAndValues); Test.Assert(() => n.NodeType == nodeType); string s = RemoveWhitespace(jsonExpression); Test.Assert(() => n.AsJsonCompact == s); }
void ChangeValue(SLJsonNodeType nodeType, string value) { BeforeChange(); m_NodeType = nodeType; m_Value = value; ReleaseArray(); ReleaseObjects(); Activate(); }
void ParseAndSerialize(string jsonExpression, SLJsonNodeType nodeType) { if (nodeType != SLJsonNodeType.Object) { ParseAndSerialize(jsonExpression, true, nodeType); } else { ParseAndSerialize(jsonExpression, false, nodeType); ParseAndSerialize(jsonExpression, true, nodeType); } }
void Check1( string json, bool isNull, bool isArray, bool isObject, bool isValue, SLJsonNodeType valueType, bool valueBoolean, int valueInt32, long valueInt64, double valueNumber, string valueString) { SLJsonNode parsed = ParseObject(json); SLJsonNode n = parsed["value"]; CheckInternal(n, isNull, isArray, isObject, isValue, valueType, valueBoolean, valueInt32, valueInt64, valueNumber, valueString); if (n.NodeType >= SLJsonNodeType.Boolean && n.NodeType <= SLJsonNodeType.String) { CheckInternal(n.AsString, isNull, isArray, isObject, isValue, SLJsonNodeType.String, valueBoolean, valueInt32, valueInt64, valueNumber, valueString); } }
static void CheckInternal( SLJsonNode n, bool isNull, bool isArray, bool isObject, bool isValue, SLJsonNodeType valueType, bool valueBoolean, int valueInt32, long valueInt64, double valueNumber, string valueString) { Assert.AreEqual(isArray, n.IsArray); Assert.AreEqual(isNull, n.IsNull); Assert.AreEqual(isObject, n.IsObject); Assert.AreEqual(isValue, n.IsValue); Assert.AreEqual(valueType, n.NodeType); Assert.AreEqual(n.IsBoolean || n.IsNumber || n.IsString, n.IsValue); Assert.AreEqual(valueType == SLJsonNodeType.Boolean, n.IsBoolean); Assert.AreEqual(valueType == SLJsonNodeType.Number, n.IsNumber); Assert.AreEqual(valueType == SLJsonNodeType.String, n.IsString); Assert.AreEqual(valueBoolean, n.AsBoolean); Assert.AreEqual(valueInt32, n.AsInt32); Assert.AreEqual(valueInt64, n.AsInt64); Assert.IsTrue(Math.Abs(n.AsDouble - valueNumber) <= 1e-7); Assert.AreEqual(valueString, n.AsString); }
} // Used to create a new JSON expression; Also used by the parser internal SLJsonNode(SLJsonNodeType nodeType, string value) { m_NodeType = nodeType; m_Value = value; } // Used by the parser