Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        void ChangeValue(SLJsonNodeType nodeType, string value)
        {
            BeforeChange();

            m_NodeType = nodeType;
            m_Value    = value;

            ReleaseArray();
            ReleaseObjects();

            Activate();
        }
Ejemplo n.º 6
0
 void ParseAndSerialize(string jsonExpression, SLJsonNodeType nodeType)
 {
     if (nodeType != SLJsonNodeType.Object)
     {
         ParseAndSerialize(jsonExpression, true, nodeType);
     }
     else
     {
         ParseAndSerialize(jsonExpression, false, nodeType);
         ParseAndSerialize(jsonExpression, true, nodeType);
     }
 }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        }                                                   // 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