public void BooleanTryCastTest()
        {
            var x = new SimpleJsonDataObject(true);
            var y = new SimpleJsonDataObject(false);

            bool b1;
            x.TryCast(out b1).IsTrue();
            b1.Is(true);

            bool b2;
            y.TryCast(out b2).IsTrue();
            b2.Is(false);

            bool b;
            new SimpleJsonDataObject(1d).TryCast(out b).IsFalse();
            new SimpleJsonDataObject("string").TryCast(out b).IsFalse();
        }
        public void DoubleTryCastTest()
        {
            var x = new SimpleJsonDataObject(1d);
            var y = new SimpleJsonDataObject(-1d);

            double i1;
            x.TryCast(out i1).IsTrue();
            i1.Is(1d);

            double i2;
            y.TryCast(out i2).IsTrue();
            i2.Is(-1d);

            double i;
            new SimpleJsonDataObject((double)double.MaxValue).TryCast(out i).IsTrue();
            i.Is(double.MaxValue);
            new SimpleJsonDataObject((double)double.MinValue).TryCast(out i).IsTrue();
            i.Is(double.MinValue);

            new SimpleJsonDataObject(true).TryCast(out i).IsFalse();
            new SimpleJsonDataObject("string").TryCast(out i).IsFalse();
        }
        public void ByteTryCastTest()
        {
            var x = new SimpleJsonDataObject(1d);
            var y = new SimpleJsonDataObject(-1d);

            byte i1;
            x.TryCast(out i1).IsTrue();
            i1.Is((byte)1);

            byte i2;
            y.TryCast(out i2).IsFalse();

            byte i;
            new SimpleJsonDataObject((double)byte.MaxValue).TryCast(out i).IsTrue();
            i.Is(byte.MaxValue);
            new SimpleJsonDataObject((double)byte.MinValue).TryCast(out i).IsTrue();
            i.Is(byte.MinValue);
            new SimpleJsonDataObject((double)byte.MaxValue + 1).TryCast(out i).IsFalse();
            new SimpleJsonDataObject((double)byte.MinValue - 1).TryCast(out i).IsFalse();

            new SimpleJsonDataObject(true).TryCast(out i).IsFalse();
            new SimpleJsonDataObject("string").TryCast(out i).IsFalse();
        }
        public void UshortTryCastTest()
        {
            var x = new SimpleJsonDataObject(1d);
            var y = new SimpleJsonDataObject(-1d);

            ushort i1;
            x.TryCast(out i1).IsTrue();
            i1.Is((ushort)1);

            ushort i2;
            y.TryCast(out i2).IsFalse();

            ushort i;
            new SimpleJsonDataObject((double)ushort.MaxValue).TryCast(out i).IsTrue();
            i.Is(ushort.MaxValue);
            new SimpleJsonDataObject((double)ushort.MinValue).TryCast(out i).IsTrue();
            i.Is(ushort.MinValue);
            new SimpleJsonDataObject((double)ushort.MaxValue + 1).TryCast(out i).IsFalse();
            new SimpleJsonDataObject((double)ushort.MinValue - 1).TryCast(out i).IsFalse();

            new SimpleJsonDataObject(true).TryCast(out i).IsFalse();
            new SimpleJsonDataObject("string").TryCast(out i).IsFalse();
        }
        public void UlongTryCastTest()
        {
            var x = new SimpleJsonDataObject(1d);
            var y = new SimpleJsonDataObject(-1d);

            ulong i1;
            x.TryCast(out i1).IsTrue();
            i1.Is((ulong)1);

            ulong i2;
            y.TryCast(out i2).IsFalse();

            ulong i;
            // This code does not pass
            //
            //new SimpleJsonDataObject((double)ulong.MaxValue).TryCast(out i).IsTrue();
            //i.Is(ulong.MaxValue);
            //new SimpleJsonDataObject((double)ulong.MinValue).TryCast(out i).IsTrue();
            //i.Is(ulong.MinValue);
            //new SimpleJsonDataObject((double)ulong.MaxValue + 1).TryCast(out i).IsFalse();
            //new SimpleJsonDataObject((double)ulong.MinValue - 1).TryCast(out i).IsFalse();

            new SimpleJsonDataObject(true).TryCast(out i).IsFalse();
            new SimpleJsonDataObject("string").TryCast(out i).IsFalse();
        }
        public void StringTryCastTest()
        {
            var doubleObject = new SimpleJsonDataObject(1d);
            var boolObject = new SimpleJsonDataObject(true);
            var stringObject = new SimpleJsonDataObject("string");

            string s;

            doubleObject.TryCast(out s).IsTrue();
            s.Is(1d.ToString());

            boolObject.TryCast(out s).IsTrue();
            s.Is(true.ToString());

            stringObject.TryCast(out s).IsTrue();
            s.Is("string");
        }
        public void FloatTryCastTest()
        {
            var x = new SimpleJsonDataObject(1d);
            var y = new SimpleJsonDataObject(-1d);

            float i1;
            x.TryCast(out i1).IsTrue();
            i1.Is((float)1);

            float i2;
            y.TryCast(out i2).IsTrue();
            i2.Is((float)-1);

            float i;
            new SimpleJsonDataObject((double)float.MaxValue).TryCast(out i).IsTrue();
            i.Is(float.MaxValue);
            new SimpleJsonDataObject((double)float.MinValue).TryCast(out i).IsTrue();
            i.Is(float.MinValue);
            new SimpleJsonDataObject((double)float.MaxValue + 1e+038f).TryCast(out i).IsFalse();
            new SimpleJsonDataObject((double)float.MinValue - 1e+038f).TryCast(out i).IsFalse();

            new SimpleJsonDataObject(true).TryCast(out i).IsFalse();
            new SimpleJsonDataObject("string").TryCast(out i).IsFalse();
        }