private static void AddDefaultCollectionProcessorFactories(this SpecFlowContext context) { const string defaultKey = "__defaultCollectionProcessorFactoriesAdded__"; if (context.ContainsKey(defaultKey) && context.GetEx <bool>(defaultKey)) { return; } context.Set(true, defaultKey); var lookup = new Dictionary <string, CollectionProcessorFactory>(StringComparer.OrdinalIgnoreCase); var listProcessor = new ListProcessorFactory(context); AddToLookup(new ArrayProcessorFactory(context)); AddToLookup(new EnumerableProcessorFactory(context)); AddToLookup(new ICollectionProcessorFactory(context)); AddToLookup(new IListProcessorFactory(context)); AddToLookup(new IReadOnlyCollectionProcessorFactory(context)); AddToLookup(new IReadOnlyListProcessorFactory(context)); AddToLookup(listProcessor); SetCollectionProcessorFactoryLookup(context, lookup); SetDefaultCollectionProcessorFactory(context, listProcessor); void AddToLookup(CollectionProcessorFactory factory) => factory.CollectionKindNames.ForEach(n => lookup.Add(n, factory)); }
private static void AddDefaultValueProcessors(this SpecFlowContext context) { const string defaultKey = "__defaultValueProcessorsAdded__"; if (context.ContainsKey(defaultKey) && context.GetEx <bool>(defaultKey)) { return; } context.Set(true, defaultKey); var typeLookup = new Dictionary <Type, IValueProcessor>(); var lookup = new Dictionary <string, IValueProcessor>(StringComparer.OrdinalIgnoreCase); var order = new List <IValueProcessor>(); // Auto determine. Add(new BoolProcessor(context)); Add(new IntProcessor(context)); Add(new LongProcessor(context)); Add(new ULongProcessor(context)); Add(new DoubleProcessor(context)); Add(new DurationProcessor(context)); Add(new DateTimeProcessor(context)); Add(new DateTimeOffsetProcessor(context)); Add(new StringProcessor(context)); Add(new ObjectProcessor(context)); // Need to specify type to use. Add(new ByteProcessor(context)); Add(new CharProcessor(context)); Add(new SByteProcessor(context)); Add(new UIntProcessor(context)); Add(new ShortProcessor(context)); Add(new UShortProcessor(context)); Add(new FloatProcessor(context)); Add(new DecimalProcessor(context)); Add(new TimeSpanProcessor(context)); SetValueProcessorLookup(context, lookup); SetValueProcessorLookup(context, typeLookup); SetValueProcessorOrder(context, order); void Add(IValueProcessor processor) { typeLookup.Add(processor.DataType, processor); processor.DataTypeNames.ForEach(n => lookup.Add(n, processor)); order.Add(processor); } }
private static Dictionary <Type, IValueProcessor> GetValueProcessorTypeLookup(this SpecFlowContext context) => context.GetEx <Dictionary <Type, IValueProcessor> >("__processorTypeLookup__");
private static Dictionary <string, CollectionProcessorFactory> GetCollectionProcessorFactoryLookup( this SpecFlowContext context) => context.GetEx <Dictionary <string, CollectionProcessorFactory> >("__collectionProcessorLookup__");