Esempio n. 1
0
        public CultureSensitiveTextPredicate(bool not, string culture)
            : base(not)
        {
            var factory = new CultureFactory();

            CultureInfo = factory.Instantiate(culture);
        }
Esempio n. 2
0
        private void DisplayVariable(string name, object value)
        {
            var invariantCulture = new CultureFactory().Invariant;
            var msg = $@"Variable '{args.VariableName}' used with value: {
                    (
                        value == null ? "(null)" :
                        value is string && string.IsNullOrEmpty(value.ToString()) ? "(empty)" :
                        value
                    )
                }
            ";

            Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceInfo, msg.ToString(invariantCulture));
        }
Esempio n. 3
0
        public void Evaluate()
        {
            var stopWatch = new Stopwatch();

            stopWatch.Start();
            value       = resolver.Execute();
            isEvaluated = true;

            Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceVerbose, $"Time needed for evaluation of the variable: {stopWatch.Elapsed.ToString(@"d\d\.hh\h\:mm\m\:ss\s\ \+fff\m\s")}");

            var invariantCulture = new CultureFactory().Invariant;
            var msg = $"Variable evaluated to: {value}";

            Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceVerbose, msg.ToString(invariantCulture));
        }
Esempio n. 4
0
        public string Execute(string text)
        {
            var newText = Prepare(text, out var args);

            var objects = new List <object>();
            var factory = serviceLocator.GetScalarResolverFactory();

            foreach (var arg in args)
            {
                var resolver = factory.Instantiate <object>(arg);
                objects.Add(resolver.Execute());
            }

            var formatProvider = new CultureFactory().Invariant;

            return(string.Format(formatProvider, newText, objects.ToArray()));
        }
Esempio n. 5
0
        public IConverter Instantiate(string from, string to, object defaultValue, string culture)
        {
            var cultureFactory = new CultureFactory();
            var cultureInfo    = cultureFactory.Instantiate(culture);

            if (from != "text")
            {
                throw new ArgumentOutOfRangeException();
            }

            switch (to)
            {
            case "date": return(new TextToDateConverter(cultureInfo, CastToDateTime(defaultValue)));

            case "dateTime": return(new TextToDateTimeConverter(cultureInfo, CastToDateTime(defaultValue)));

            case "numeric": return(new TextToNumericConverter(cultureInfo, CastToNumeric(defaultValue)));

            default: throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 6
0
        public T Execute()
        {
            if (!args.GlobalVariables.ContainsKey(args.VariableName))
            {
                var caseIssues = args.GlobalVariables.Keys.Where(k => String.Equals(k, args.VariableName, StringComparison.OrdinalIgnoreCase));

                if (caseIssues.Count() > 0)
                {
                    throw new NBiException($"The variable named '{args.VariableName}' is not defined. Pay attention, variables are case-sensitive. Did you mean '{string.Join("' or '", caseIssues)}'?");
                }

                var arobaseIssues = args.GlobalVariables.Keys.Where(k => String.Equals(k.Replace("@", string.Empty), args.VariableName, StringComparison.OrdinalIgnoreCase));
                if (arobaseIssues.Count() > 0)
                {
                    throw new NBiException($"The variable named '{args.VariableName}' is not defined. Pay attention, variables shouldn't begin with an arobase (@). Consider to review the name of the following variable{(arobaseIssues.Count() == 1 ? string.Empty : "s")}: '{(string.Join("' and '", arobaseIssues))}' at the top of your test-suite.");
                }

                var countMsg =
                    args.GlobalVariables.Count() == 0 ? "No variables are" :
                    args.GlobalVariables.Count() == 1 ? $"1 variable '{(args.GlobalVariables).Keys.ElementAt(0)}' is"
                    : $"{args.GlobalVariables.Count()} other variables are";

                throw new NBiException($"The variable named '{args.VariableName}' is not defined. {countMsg} defined at the top of the test-suite.");
            }


            var variable = args.GlobalVariables[args.VariableName];

            if (!variable.IsEvaluated())
            {
                var stopWatch = new Stopwatch();
                stopWatch.Start();
                variable.GetValue();
                Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceInfo, $"Time needed for evaluation of variable '{args.VariableName}': {stopWatch.Elapsed.ToString(@"d\d\.hh\h\:mm\m\:ss\s\ \+fff\m\s")}");
            }

            var output = variable.GetValue();

            IFormatProvider formatProvider = System.Globalization.NumberFormatInfo.InvariantInfo;

            if (typeof(T) == typeof(DateTime))
            {
                formatProvider = System.Globalization.DateTimeFormatInfo.InvariantInfo;
            }
            else if (output != null && output.ToString().EndsWith("%"))
            {
                output = output.ToString().Substring(0, output.ToString().Length - 1);
            }

            output = Convert.ChangeType(output, typeof(T), formatProvider);
            var invariantCulture = new CultureFactory().Invariant;
            var msg = $@"Variable '{args.VariableName}' evaluated to: {
                    (
                        output == null ? "(null)" :
                        output is string && string.IsNullOrEmpty(output.ToString()) ? "(empty)" : output
                    )
                }
            ";

            Trace.WriteLineIf(Extensibility.NBiTraceSwitch.TraceInfo, msg.ToString(invariantCulture));

            return((T)output);
        }