Ejemplo n.º 1
0
        internal ISqlNode PrepareParse()
        {
            if (!File.Exists(_sqlFilePath))
            {
                throw new InvalidSqlFileException(ExceptionMessageId.EspC001, _sqlFilePath);
            }

            var rawSql = File.ReadAllText(_sqlFilePath);

            if (string.IsNullOrWhiteSpace(rawSql))
            {
                throw new InvalidSqlFileException(ExceptionMessageId.EspC002, _sqlFilePath);
            }
            if (_config == null)
            {
                throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD001);
            }

            if (_config.DbConnectionKind == DbConnectionKind.Unknown)
            {
                throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD002);
            }

            if (_config.DataParameterCreator == null)
            {
                throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD003);
            }

            _evaluator = new EasyExpressionEvaluator(_sqlFilePath);

            ISqlNode sqlNode  = null;
            var      hasCache = false;

            if (ConfigContainer.EnableCache)
            {
                if (SqlCache.TryGetValue(_sqlFilePath, out SqlFileInfo info))
                {
                    sqlNode  = info.SqlNode;
                    hasCache = true;
                }
            }

            if (!hasCache)
            {
                var parser = new DomaSqlParser(rawSql);
                sqlNode = parser.Parse();
                if (ConfigContainer.EnableCache)
                {
                    var info = new SqlFileInfo
                    {
                        FilePath = _sqlFilePath,
                        RawSql   = rawSql,
                        SqlNode  = sqlNode
                    };
                    SqlCache.TryAdd(_sqlFilePath, info);
                }
            }

            return(sqlNode);
        }
Ejemplo n.º 2
0
        public void testAnd()
        {
            var expr      = "!false && !false";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsTrue();
        }
Ejemplo n.º 3
0
        public void testLt()
        {
            var expr      = "10 < 11";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsTrue();
        }
Ejemplo n.º 4
0
        public void testAnd4()
        {
            var expr      = "(true || false ) && true";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsTrue();
        }
Ejemplo n.º 5
0
        public void testNe_null()
        {
            var expr      = "null != null";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsFalse();
        }
Ejemplo n.º 6
0
        public void testEq_null()
        {
            var expr      = "null == null";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsTrue();
        }
Ejemplo n.º 7
0
        public void testNot()
        {
            var expr      = "!true";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsFalse();
        }
Ejemplo n.º 8
0
        public void testOr()
        {
            var expr      = "false || true";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsTrue();
        }
Ejemplo n.º 9
0
        public void testUnsupportedToken()
        {
            var expr      = "5 ? 5";
            var evaluator = new EasyExpressionEvaluator();
            var ex        = Assert.Throws <ExpressionEvaluateException>(() => evaluator.Evaluate(expr, null));

            ex.IsNotNull();
            ex.InvalidOperator.Is("?");
        }
Ejemplo n.º 10
0
        public void InvalidExpression2()
        {
            var expr      = "5 !(";
            var evaluator = new EasyExpressionEvaluator();
            var ex        = Assert.Throws <ExpressionEvaluateException>(() => evaluator.Evaluate(expr, null));

            ex.IsNotNull();
            ex.MessageId.Is(ExceptionMessageId.EspA002);
        }
Ejemplo n.º 11
0
        public void testGe()
        {
            var expr      = "11 >= 10";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsTrue();

            expr   = "10 >= 10";
            result = evaluator.Evaluate(expr, null);
            result.IsTrue();
        }
Ejemplo n.º 12
0
        public void testNotLt()
        {
            var expr      = "10 < 10";
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, null);

            result.IsFalse();

            expr   = "10 < 9";
            result = evaluator.Evaluate(expr, null);
            result.IsFalse();
        }
Ejemplo n.º 13
0
        public void testLong()
        {
            var expr           = "value == 1L";
            var value          = 1L;
            var propertyValues = new Dictionary <string, ValueWrapper>();
            var wrapper        = new ValueWrapper {
                Name = "value", Value = value, Type = typeof(long)
            };

            propertyValues.Add("value", wrapper);
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, propertyValues);

            result.IsTrue();
        }
Ejemplo n.º 14
0
        public void PropertAssess_null()
        {
            var    expr           = @"name !=null && name.Length>1";
            string name           = null;
            var    propertyValues = new Dictionary <string, ValueWrapper>();
            var    wrapper        = new ValueWrapper {
                Name = "name", Value = name, Type = typeof(string)
            };

            propertyValues.Add("name", wrapper);
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, propertyValues);

            result.IsFalse();
        }
Ejemplo n.º 15
0
        public void InvalidLiteralString2()
        {
            var expr           = @"name == ""bbb""""";
            var name           = "bbb";
            var propertyValues = new Dictionary <string, ValueWrapper>();
            var wrapper        = new ValueWrapper {
                Name = "name", Value = name, Type = typeof(string)
            };

            propertyValues.Add("name", wrapper);
            var evaluator = new EasyExpressionEvaluator();
            var ex        = Assert.Throws <ExpressionEvaluateException>(() => evaluator.Evaluate(expr, propertyValues));

            ex.IsNotNull();
            ex.MessageId.Is(ExceptionMessageId.EspA014);
        }
Ejemplo n.º 16
0
        public void NullLeft()
        {
            var    expr           = @"null == name";
            string name           = null;
            var    propertyValues = new Dictionary <string, ValueWrapper>();
            var    wrapper        = new ValueWrapper {
                Name = "name", Value = name, Type = typeof(string)
            };

            propertyValues.Add("name", wrapper);
            var evaluator = new EasyExpressionEvaluator();
            var ex        = Assert.Throws <ExpressionEvaluateException>(() => evaluator.Evaluate(expr, propertyValues));

            ex.IsNotNull();
            ex.MessageId.Is(ExceptionMessageId.EspA003);
        }
Ejemplo n.º 17
0
        public void NullMultiple()
        {
            var expr           = @"name == null && name2 == null";
            var propertyValues = new Dictionary <string, ValueWrapper>();
            var wrapper        = new ValueWrapper {
                Name = "name", Value = null, Type = typeof(string)
            };

            propertyValues.Add("name", wrapper);
            wrapper = new ValueWrapper {
                Name = "name2", Value = null, Type = typeof(string)
            };
            propertyValues.Add("name2", wrapper);
            var evaluator = new EasyExpressionEvaluator();
            var result    = evaluator.Evaluate(expr, propertyValues);

            result.IsTrue();
        }
Ejemplo n.º 18
0
 /// <summary>
 /// Clear the cache.
 /// </summary>
 /// <param name="filePath"></param>
 public static void ClearCache(string filePath)
 {
     SqlCache.TryRemove(filePath, out _);
     EasyExpressionEvaluator.ClearCache(filePath);
 }
Ejemplo n.º 19
0
 /// <summary>
 /// Clear all caches.
 /// </summary>
 public static void ClearCacheAll()
 {
     SqlCache.Clear();
     EasyExpressionEvaluator.ClearCacheAll();
 }