protected ExpressionTestBase() { this.myValidExpressionsOwner = new ExpressionOwner(); this.myValidExpressionsOwner = new ExpressionOwner(); this.myGenericContext = this.CreateGenericContext(this.myValidExpressionsOwner); var context = new ExpressionContext(this.myValidExpressionsOwner); context.Options.OwnerMemberAccess = BindingFlags.Public | BindingFlags.NonPublic; context.Imports.ImportBuiltinTypes(); context.Imports.AddType(typeof(Convert), "Convert"); context.Imports.AddType(typeof(Guid)); context.Imports.AddType(typeof(Version)); context.Imports.AddType(typeof(DayOfWeek)); context.Imports.AddType(typeof(DayOfWeek), "DayOfWeek"); context.Imports.AddType(typeof(ValueType)); context.Imports.AddType(typeof(IComparable)); context.Imports.AddType(typeof(ICloneable)); context.Imports.AddType(typeof(Array)); context.Imports.AddType(typeof(Delegate)); context.Imports.AddType(typeof(AppDomainInitializer)); context.Imports.AddType(typeof(Encoding)); context.Imports.AddType(typeof(ASCIIEncoding)); context.Imports.AddType(typeof(ArgumentException)); this.myValidCastsContext = context; TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(int))), typeof(int)); TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(string))), typeof(string)); this.Initialize(); }
public ExpressionTests() { // Set the correct culture, otherwise tests will fail Thread.CurrentThread.CurrentCulture = TestCulture; MyValidExpressionsOwner = new ExpressionOwner(); MyGenericContext = this.CreateGenericContext(MyValidExpressionsOwner); var context = new ExpressionContext(MyValidExpressionsOwner); context.Options.OwnerMemberAccess = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic; context.Imports.ImportBuiltinTypes(); context.Imports.AddType(typeof(Convert), "Convert"); context.Imports.AddType(typeof(Guid)); context.Imports.AddType(typeof(Version)); context.Imports.AddType(typeof(DayOfWeek)); context.Imports.AddType(typeof(DayOfWeek), "DayOfWeek"); context.Imports.AddType(typeof(ValueType)); context.Imports.AddType(typeof(IComparable)); context.Imports.AddType(typeof(ICloneable)); context.Imports.AddType(typeof(Array)); context.Imports.AddType(typeof(System.Delegate)); // context.Imports.AddType(typeof(AppDomainInitializer)); context.Imports.AddType(typeof(System.Text.Encoding)); context.Imports.AddType(typeof(System.Text.ASCIIEncoding)); context.Imports.AddType(typeof(ArgumentException)); MyValidCastsContext = context; // For testing virtual properties TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(int))), typeof(int)); TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(string))), typeof(string)); this.Initialize(); }
public ExpressionNodeCompilationResultCollection Execute(string xmlExpression, object itemContext, ExpressionOwner expressionOwner, IList<ExpressionFieldIntermediateAssistant> fieldsIntermediateList) { #if !SILVERLIGHT var filter = new Dictionary<string, string> { { "this", "context" } }; if (fieldsIntermediateList != null) { filter.Add("Utils.CurrentUserName", "((dynamic)context).CurrentUserName"); filter.Add("Utils.CurrentUserFullName", "((dynamic)context).CurrentUserFullName"); filter.Add("Utils.CurrentUserPersonId", "((dynamic)context).CurrentUserPersonId"); filter.Add("Utils.CurrentUserEmailAddress", "((dynamic)context).CurrentUserEmailAddress"); filter.Add("Utils.CurrentUserFirstName", "((dynamic)context).CurrentUserFirstName"); filter.Add("Utils.CurrentUserLastName", "((dynamic)context).CurrentUserLastName"); filter.Add("Utils.CurrentUserBusinessUnitId", "((dynamic)context).CurrentUserBusinessUnitId"); filter.Add("Utils.CurrentUserBusinessUnit", "((dynamic)context).CurrentUserBusinessUnit"); filter.Add("Utils.CurrentUserClientIP", "((dynamic)context).CurrentUserClientIP"); filter.Add("Utils.CurrentUserDeviceName", "((dynamic)context).CurrentUserDeviceName"); filter.Add("Utils.CurrentUserRolesList", "((dynamic)context).CurrentUserRolesList"); filter.Add("Utils.CurrentUserLocale", "((dynamic)context).CurrentUserLocale"); } var result = new ExpressionNodeCompilationResultCollection(); if (expressionOwner != ExpressionOwner.Trigger) { var sharpCode = PrepareScriptFromXml(xmlExpression, filter); var value = BuildAndExecute(xmlExpression, itemContext, fieldsIntermediateList, sharpCode); result.Add(value); return result; } var destinations = PrepareScriptForMultipleDestinations(xmlExpression, new object()); foreach (var destination in destinations) { var value = BuildAndExecute(xmlExpression, itemContext, fieldsIntermediateList, destination.Value); result.Add(value); } return result; #else return null; #endif }
public void Prepare(IProcessEdit process, IList<SourceField> fields, string xml, ExpressionOwner expressionOwner, Action onClosedChildWindow) { if (process == null) throw new ArgumentNullException("process"); if (fields == null) { return; } Xml = xml; ExpressionOwner = expressionOwner; OnClosedWindow = onClosedChildWindow; var fieldEdits = process.GetAllFields().ToList(); foreach (var field in fields) { if (field.InnerName == Constants.SampleNumeric || field.InnerName == Constants.SampleBoolean || field.InnerName == Constants.SampleAlphanumeric) { continue; } ExportLifetimeContext<IFieldViewModel> vm = null; switch (field.DataType) { case NodeDataType.DateTime: var dateTimeFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(DateTimeFieldViewModel)); if (dateTimeFieldViewModel != null) { vm = dateTimeFieldViewModel.CreateExport(); var dateFieldEdit = fieldEdits.FirstOrDefault(x => x.SystemName == field.InnerName); if (dateFieldEdit != null) { var step = dateFieldEdit.GetStep<DateRequiredSettingsStepEdit>(); if (step != null) ((DateTimeFieldViewModel)vm.Value).DateTimeFormat = step.SelectedDateTimeFormat; } } break; case NodeDataType.String: var textFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(TextFieldViewModel)); if (textFieldViewModel != null) { vm = textFieldViewModel.CreateExport(); } break; case NodeDataType.Boolean: var boolFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(BoolFieldViewModel)); if (boolFieldViewModel != null) { vm = boolFieldViewModel.CreateExport(); } break; case NodeDataType.Int: var intFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof (IntegerFieldViewModel)); if (intFieldViewModel != null) { vm = intFieldViewModel.CreateExport(); } break; case NodeDataType.Double: case NodeDataType.Decimal: case NodeDataType.Result: if (field.SetName == SourceFieldSetNames.MsaItem) { var numericFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(DecimalFieldViewModel)); if (numericFieldViewModel != null) { vm = numericFieldViewModel.CreateExport(); ((DecimalFieldViewModel)vm.Value).NumberOfDigits = 5; } } else { var numericFieldEdit = fieldEdits.FirstOrDefault(x => x.SystemName == field.InnerName); if (numericFieldEdit != null) { if (numericFieldEdit.ColumnType != ColumnTypes.Integer) { var numericFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(DecimalFieldViewModel)); if (numericFieldViewModel != null) { var step = (NumericRequiredStepEdit)numericFieldEdit.StepList.First(x => x is NumericRequiredStepEdit); vm = numericFieldViewModel.CreateExport(); ((DecimalFieldViewModel)vm.Value).NumberOfDigits = step.NumberOfDigits; } } } } break; case NodeDataType.GageRR: var msaFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(GageRRFieldViewModel)); if (msaFieldViewModel != null) { vm = msaFieldViewModel.CreateExport(); } break; case NodeDataType.List: if (field.SetName == SourceFieldSetNames.Item) { var systemName = field.DataType == NodeDataType.List ? field.InnerName.Replace("List", null) : field.InnerName; var fieldEdit = fieldEdits.FirstOrDefault(x => x.SystemName == systemName); if (fieldEdit != null && fieldEdit.ColumnType == ColumnTypes.Sample) { var sampleFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(SampleFieldViewModel)); if (sampleFieldViewModel != null) { vm = sampleFieldViewModel.CreateExport(); var sampleField = fields.FirstOrDefault(x => x.ParentField != null && x.ParentField.Id == field.Id); if (sampleField != null) { ((SampleFieldViewModel)vm.Value).DataType = sampleField.DataType; } var step = (SampleFieldStepEdit)fieldEdit.StepList.First(x => x is SampleFieldStepEdit); var sampleSizeField = fieldEdits.FirstOrDefault(x => x.SystemName == step.SampleSizeFieldName); if (sampleSizeField != null) { ((SampleFieldViewModel)vm.Value).SampleSizeFieldName = sampleSizeField.Name; } } } } else if (field.SetName == SourceFieldSetNames.CurrentUserInfo) { var listFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(UserRolesFieldViewModel)); if (listFieldViewModel != null) { vm = listFieldViewModel.CreateExport(); var parent = field; var subfields = fields .Where(x => x.ParentField != null && x.ParentField.Id == parent.Id); ((UserRolesFieldViewModel)vm.Value).CreateColumns(subfields); } } break; } if (vm == null) { continue; } vm.Value.Field = field; ExpressionViewsList.Add(vm); } }