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); }
public void testAnd() { var expr = "!false && !false"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsTrue(); }
public void testLt() { var expr = "10 < 11"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsTrue(); }
public void testAnd4() { var expr = "(true || false ) && true"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsTrue(); }
public void testNe_null() { var expr = "null != null"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsFalse(); }
public void testEq_null() { var expr = "null == null"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsTrue(); }
public void testNot() { var expr = "!true"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsFalse(); }
public void testOr() { var expr = "false || true"; var evaluator = new EasyExpressionEvaluator(); var result = evaluator.Evaluate(expr, null); result.IsTrue(); }
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("?"); }
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); }
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(); }
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(); }
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(); }
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(); }
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); }
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); }
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(); }
/// <summary> /// Clear the cache. /// </summary> /// <param name="filePath"></param> public static void ClearCache(string filePath) { SqlCache.TryRemove(filePath, out _); EasyExpressionEvaluator.ClearCache(filePath); }
/// <summary> /// Clear all caches. /// </summary> public static void ClearCacheAll() { SqlCache.Clear(); EasyExpressionEvaluator.ClearCacheAll(); }