/// <summary>
        /// Test read root null
        /// </summary>
        public void TestReadRootNull()
        {
            #region Prepare

            String   json     = "null";
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.Null);

            #endregion Assert
        }
        /// <summary>
        /// Test read boolean false
        /// </summary>
        public void TestReadRootBooleanFalse()
        {
            #region Prepare

            String   json     = "false";
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.Boolean);
            Assert.IsTrue(lazyJson != null && ((LazyJsonBoolean)lazyJson.Root).Value == false);

            #endregion Assert
        }
        /// <summary>
        /// Test read boolean false
        /// </summary>
        public void TestReadRootObjectEmpty()
        {
            #region Prepare

            String   json     = "{}";
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.Object);
            Assert.IsTrue(lazyJson != null && ((LazyJsonObject)lazyJson.Root).Count == 0);

            #endregion Assert
        }
        /// <summary>
        /// Test read boolean false
        /// </summary>
        public void TestReadRootString()
        {
            #region Prepare

            String   json     = "\"LazyTestJsonReader\"";
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.String);
            Assert.IsTrue(lazyJson != null && ((LazyJsonString)lazyJson.Root).Value == "LazyTestJsonReader");

            #endregion Assert
        }
        /// <summary>
        /// Test read boolean false
        /// </summary>
        public void TestReadRootDecimalNegative()
        {
            #region Prepare

            String   json     = "-987654.321";
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.Decimal);
            Assert.IsTrue(lazyJson != null && ((LazyJsonDecimal)lazyJson.Root).Value == -987654.321M);

            #endregion Assert
        }
        /// <summary>
        /// Test read boolean false
        /// </summary>
        public void TestReadRootDecimalPositive()
        {
            #region Prepare

            String   json     = "123456.789";
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.Decimal);
            Assert.IsTrue(lazyJson != null && ((LazyJsonDecimal)lazyJson.Root).Value == 123456.789M);

            #endregion Assert
        }
        /// <summary>
        /// Test read boolean false
        /// </summary>
        public void TestReadRootIntegerNegative()
        {
            #region Prepare

            String   json     = Convert.ToString(Int32.MinValue);
            LazyJson?lazyJson = null;

            #endregion Prepare

            #region Execute

            lazyJson = LazyJsonReader.Read(json);

            #endregion Execute

            #region Assert

            Assert.IsTrue(lazyJson != null);
            Assert.IsTrue(lazyJson?.Root != null);
            Assert.IsTrue(lazyJson?.Root.Type == LazyJsonType.Integer);
            Assert.IsTrue(lazyJson != null && ((LazyJsonInteger)lazyJson.Root).Value == Int32.MinValue);

            #endregion Assert
        }