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); }
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); }
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); }