using System; using NUnit.Framework; namespace DynamicExpresso.UnitTest { [TestFixture] public class StaticTest { [Test] public void Static_Properties_of_Base_Types() { var target = new Interpreter(); Assert.That(target.Eval("Int32.MaxValue"), Is.EqualTo(int.MaxValue)); Assert.That(target.Eval("Double.MaxValue"), Is.EqualTo(double.MaxValue)); Assert.That(target.Eval("DateTime.MaxValue"), Is.EqualTo(DateTime.MaxValue)); Assert.That(target.Eval("DateTime.Today"), Is.EqualTo(DateTime.Today)); Assert.That(target.Eval("String.Empty"), Is.EqualTo(string.Empty)); Assert.That(target.Eval("Boolean.FalseString"), Is.EqualTo(bool.FalseString)); Assert.That(target.Eval("TimeSpan.TicksPerMillisecond"), Is.EqualTo(TimeSpan.TicksPerMillisecond)); Assert.That(target.Eval("Guid.Empty"), Is.EqualTo(Guid.Empty)); } [Test] public void Static_Methods_of_Base_Types() { var target = new Interpreter(); Assert.That(target.Eval("TimeSpan.FromMilliseconds(2000.49)"), Is.EqualTo(TimeSpan.FromMilliseconds(2000.49))); Assert.That(target.Eval("DateTime.DaysInMonth(2094, 11)"), Is.EqualTo(DateTime.DaysInMonth(2094, 11))); } [Test] public void Math_Class() { var target = new Interpreter(); Assert.That(target.Eval("Math.Pow(3, 4)"), Is.EqualTo(Math.Pow(3, 4))); Assert.That(target.Eval("Math.Sin(30.234)"), Is.EqualTo(Math.Sin(30.234))); } [Test] public void Convert_Class() { var target = new Interpreter(); Assert.That(target.Eval("Convert.ToString(3)"), Is.EqualTo(Convert.ToString(3))); Assert.That(target.Eval("Convert.ToInt16(\"23\")"), Is.EqualTo(Convert.ToInt16("23"))); } [Test] public void CSharp_Primitive_Type_Keywords() { var target = new Interpreter(); Assert.That(target.Eval("int.MaxValue"), Is.EqualTo(int.MaxValue)); Assert.That(target.Eval("double.MaxValue"), Is.EqualTo(double.MaxValue)); Assert.That(target.Eval("string.Empty"), Is.EqualTo(string.Empty)); Assert.That(target.Eval("bool.FalseString"), Is.EqualTo(bool.FalseString)); Assert.That(target.Eval("char.MinValue"), Is.EqualTo(char.MinValue)); Assert.That(target.Eval("byte.MinValue"), Is.EqualTo(byte.MinValue)); } [Test] public void Static_Properties_And_Methods_Of_Custom_Types() { var target = new Interpreter() .Reference(typeof(Uri)) .Reference(typeof(MyTestService)); Assert.That(target.Eval("Uri.UriSchemeHttp"), Is.EqualTo(Uri.UriSchemeHttp)); Assert.That(target.Eval("MyTestService.MyStaticMethod()"), Is.EqualTo(MyTestService.MyStaticMethod())); } [Test] public void Type_Related_Static_Methods() { var target = new Interpreter() .Reference(typeof(Type)); Assert.That(target.Eval("Type.GetType(\"System.Globalization.CultureInfo\")"), Is.EqualTo(Type.GetType("System.Globalization.CultureInfo"))); Assert.That(target.Eval("DateTime.Now.GetType()"), Is.EqualTo(DateTime.Now.GetType())); } private class MyTestService { public static int MyStaticMethod() { return 23; } } } }