Ejemplo n.º 1
0
        public VarVal CalcExpression()
        {
            var val = new VarVal(Id, Expression.Calc(), Expression.Type);

            OutputVariableSource.InternalFunnyValue = val.Value;
            return(val);
        }
Ejemplo n.º 2
0
        public static VarVal GetVarVal(this string src, int starti, out int endi)
        {
            var  emptyChars = StrConst.EmptyChars;
            bool isBlock    = false;
            bool isRules    = false;

            while (emptyChars.Contains(src[starti]))
            {
                starti++;
            }

            var result = new VarVal();

            if (src[starti] == '{')
            {
                isBlock = true;
                endi    = GetBlockEnd(src, starti);
                var res = src.FromTo(starti + 1, endi - 1).TrimEnd(emptyChars);

                if (res.Length > 0 && res[res.Length - 1] == '}')
                {
                    isRules = true;
                    // rules var
                    var lines = res.Split("\r\n").ToList();

                    foreach (var line in lines)
                    {
                        if (line.All(c => emptyChars.Contains(c)))
                        {
                            lines.Remove(line);
                            break;
                        }
                    }

                    res = string.Join("\r\n", StrUtil.RemStartSpace(lines.ToArray()));
                }
                else
                {
                    res = res.TrimStart(emptyChars);
                }

                result.Val = res;
            }
            else
            {
                endi       = src.IndexOf(';', starti);
                result.Val = src.FromTo(starti, endi - 1);
            }

            result.IsBlock = isBlock;
            result.IsRules = isRules;

            return(result);
        }
Ejemplo n.º 3
0
        public static void AssertHas(this CalculationResult result, VarVal variable, double delta = 0)
        {
            var res = result.Results.FirstOrDefault(r => r.Name == variable.Name);

            Assert.IsNotNull(res, $"Variable \"{variable.Name}\" not found");
            Assert.AreEqual(variable.Type, res.Type, $"Variable \"{variable.Name}\" has wrong type");

            if (variable.Type == VarType.Real)
            {
                Assert.AreEqual(variable.Value.To <double>(), res.Value.To <double>(), delta,
                                $"Var \"{variable}\" expected: {variable.Value}, but was: {res.Value}");
            }
            else
            {
                Assert.AreEqual(variable.Value, res.Value,
                                $"Var \"{variable}\" expected: {ToStringSmart(variable.Value)}, but was: {ToStringSmart(res.Value)}");
            }
        }
Ejemplo n.º 4
0
        private VarVal GetCurrentVarVal()
        {
            VarVal result = 0;

            if (lcomboBox.SelectedIndex == 3)
            {
                result |= VarVal.LVar;
            }
            else
            {
                result |= VarVal.LVal;
            }

            if (rcomboBox.SelectedIndex == 3)
            {
                result |= VarVal.RVar;
            }
            else
            {
                result |= VarVal.RVal;
            }
            return(result);
        }