Example #1
0
        public void ExpressionPropertyTests_TestImplicitCasts()
        {
            var data = new object();
            var test = new ImplicitCastTest()
            {
                Str    = "test",
                Int    = "13",
                Number = "3.14",
                Enm    = "two",
                Bool   = "true"
            };

            Assert.AreEqual("test", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(13, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(3.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Two, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);

            test.Str    = "='test2'";
            test.Int    = "=113";
            test.Number = "=13.14";
            test.Enm    = "=three";
            test.Bool   = "=true";

            Assert.AreEqual("test2", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);

            var json  = JsonConvert.SerializeObject(test, settings: settings);
            var test2 = JsonConvert.DeserializeObject <ImplicitCastTest>(json, settings: settings);

            Assert.AreEqual("test2", test2.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test2.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test2.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test2.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test2.Bool.TryGetValue(data).Value);
        }
Example #2
0
        public void ExpressionPropertyTests_TestImplicitCasts()
        {
            var data = new object();

            // test implicit casts as string
            var test = new ImplicitCastTest()
            {
                Str     = "test",
                Int     = "13",
                Number  = "3.14",
                Enm     = "two",
                Bool    = "true",
                Strings = new string[] { "one", "two", "three" }
            };

            Assert.Equal("test", test.Str.TryGetValue(data).Value);
            Assert.Equal(13, test.Int.TryGetValue(data).Value);
            Assert.Equal(3.14F, test.Number.TryGetValue(data).Value);
            Assert.Equal(TestEnum.Two, test.Enm.TryGetValue(data).Value);
            Assert.True(test.Bool.TryGetValue(data).Value);
            Assert.Equal("one", test.Strings.TryGetValue(data).Value[0]);
            Assert.Equal("two", test.Strings.TryGetValue(data).Value[1]);
            Assert.Equal("three", test.Strings.TryGetValue(data).Value[2]);

            // Test expressions with =
            test.Str     = "='test2'";
            test.Int     = "=113";
            test.Number  = "=13.14";
            test.Enm     = "=three";
            test.Bool    = "=true";
            test.Strings = "=createArray('a','b','c')";

            Assert.Equal("test2", test.Str.TryGetValue(data).Value);
            Assert.Equal(113, test.Int.TryGetValue(data).Value);
            Assert.Equal(13.14F, test.Number.TryGetValue(data).Value);
            Assert.Equal(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.True(test.Bool.TryGetValue(data).Value);
            Assert.Equal("a", test.Strings.TryGetValue(data).Value[0]);
            Assert.Equal("b", test.Strings.TryGetValue(data).Value[1]);
            Assert.Equal("c", test.Strings.TryGetValue(data).Value[2]);

            // test serialization
            var json  = JsonConvert.SerializeObject(test, settings: settings);
            var test2 = JsonConvert.DeserializeObject <ImplicitCastTest>(json, settings: settings);

            Assert.Equal("test2", test2.Str.TryGetValue(data).Value);
            Assert.Equal(113, test2.Int.TryGetValue(data).Value);
            Assert.Equal(13.14F, test2.Number.TryGetValue(data).Value);
            Assert.Equal(TestEnum.Three, test2.Enm.TryGetValue(data).Value);
            Assert.True(test2.Bool.TryGetValue(data).Value);
            Assert.Equal("a", test2.Strings.TryGetValue(data).Value[0]);
            Assert.Equal("b", test2.Strings.TryGetValue(data).Value[1]);
            Assert.Equal("c", test2.Strings.TryGetValue(data).Value[2]);

            // Test constant expressions.
            test.Str    = Expression.ConstantExpression("test2");
            test.Int    = Expression.ConstantExpression(113);
            test.Number = Expression.ConstantExpression(13.14);
            test.Enm    = Expression.ConstantExpression(TestEnum.Three);
            test.Bool   = Expression.ConstantExpression(true);

            Assert.Equal("test2", test.Str.TryGetValue(data).Value);
            Assert.Equal(113, test.Int.TryGetValue(data).Value);
            Assert.Equal(13.14F, test.Number.TryGetValue(data).Value);
            Assert.Equal(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.True(test.Bool.TryGetValue(data).Value);

            // Test Lamda expressions.
            test.Str    = Expression.Lambda((data) => "test2");
            test.Int    = Expression.Lambda((data) => 113);
            test.Number = Expression.Lambda((data) => 13.14);
            test.Enm    = Expression.Lambda((data) => TestEnum.Three);
            test.Bool   = Expression.Lambda((data) => true);

            Assert.Equal("test2", test.Str.TryGetValue(data).Value);
            Assert.Equal(113, test.Int.TryGetValue(data).Value);
            Assert.Equal(13.14F, test.Number.TryGetValue(data).Value);
            Assert.Equal(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.True(test.Bool.TryGetValue(data).Value);

            // Test func expressions.
            test.Str    = new StringExpression(data => "test2");
            test.Int    = new IntExpression(data => 113);
            test.Number = new NumberExpression(data => 13.14);
            test.Enm    = new EnumExpression <TestEnum>(data => TestEnum.Three);
            test.Bool   = new BoolExpression(data => true);

            Assert.Equal("test2", test.Str.TryGetValue(data).Value);
            Assert.Equal(113, test.Int.TryGetValue(data).Value);
            Assert.Equal(13.14F, test.Number.TryGetValue(data).Value);
            Assert.Equal(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.True(test.Bool.TryGetValue(data).Value);

            // test null assignment
            var testNull = new ImplicitCastTest()
            {
                Str     = default(string),
                Int     = default(int),
                Number  = default(float),
                Enm     = default(TestEnum),
                Bool    = default(bool),
                Strings = default(string[])
            };

            Assert.Equal(default(string), testNull.Str.TryGetValue(data).Value);
            Assert.Equal(default(int), testNull.Int.TryGetValue(data).Value);
            Assert.Equal(default(float), testNull.Number.TryGetValue(data).Value);
            Assert.Equal(default(TestEnum), testNull.Enm.TryGetValue(data).Value);
            Assert.Equal(default(bool), testNull.Bool.TryGetValue(data).Value);
            Assert.Equal(default(string[]), testNull.Strings.TryGetValue(data).Value);
        }
Example #3
0
        public void ExpressionPropertyTests_TestImplicitCasts()
        {
            var data = new object();

            // test implicit casts as string
            var test = new ImplicitCastTest()
            {
                Str    = "test",
                Int    = "13",
                Number = "3.14",
                Enm    = "two",
                Bool   = "true"
            };

            Assert.AreEqual("test", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(13, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(3.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Two, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);

            // Test expressions with =
            test.Str    = "='test2'";
            test.Int    = "=113";
            test.Number = "=13.14";
            test.Enm    = "=three";
            test.Bool   = "=true";

            Assert.AreEqual("test2", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);

            // test serialization
            var json  = JsonConvert.SerializeObject(test, settings: settings);
            var test2 = JsonConvert.DeserializeObject <ImplicitCastTest>(json, settings: settings);

            Assert.AreEqual("test2", test2.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test2.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test2.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test2.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test2.Bool.TryGetValue(data).Value);

            // Test constant expressions.
            test.Str    = Expression.ConstantExpression("test2");
            test.Int    = Expression.ConstantExpression(113);
            test.Number = Expression.ConstantExpression(13.14);
            test.Enm    = Expression.ConstantExpression(TestEnum.Three);
            test.Bool   = Expression.ConstantExpression(true);

            Assert.AreEqual("test2", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);

            // Test Lamda expressions.
            test.Str    = Expression.Lambda((data) => "test2");
            test.Int    = Expression.Lambda((data) => 113);
            test.Number = Expression.Lambda((data) => 13.14);
            test.Enm    = Expression.Lambda((data) => TestEnum.Three);
            test.Bool   = Expression.Lambda((data) => true);

            Assert.AreEqual("test2", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);

            // Test func expressions.
            test.Str    = new StringExpression(data => "test2");
            test.Int    = new IntExpression(data => 113);
            test.Number = new NumberExpression(data => 13.14);
            test.Enm    = new EnumExpression <TestEnum>(data => TestEnum.Three);
            test.Bool   = new BoolExpression(data => true);

            Assert.AreEqual("test2", test.Str.TryGetValue(data).Value);
            Assert.AreEqual(113, test.Int.TryGetValue(data).Value);
            Assert.AreEqual(13.14F, test.Number.TryGetValue(data).Value);
            Assert.AreEqual(TestEnum.Three, test.Enm.TryGetValue(data).Value);
            Assert.AreEqual(true, test.Bool.TryGetValue(data).Value);
        }