From 6b377719c10d5ab3343fd5221f99a4a21008e25a Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Thu, 14 Mar 2024 08:26:58 +0100 Subject: Initial commit --- tests/expression_builder.ml | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tests/expression_builder.ml (limited to 'tests/expression_builder.ml') diff --git a/tests/expression_builder.ml b/tests/expression_builder.ml new file mode 100644 index 0000000..fd9a17f --- /dev/null +++ b/tests/expression_builder.ml @@ -0,0 +1,47 @@ +module T = ImportExpression.T + +let empty : 'a T.t = T.Empty +let path : 'a -> 'a T.t = fun v -> T.Path v +let literal_test : 'a T.t = T.Literal "test" +let literal_quoted : 'a T.t = T.Literal "'" +let literal_zero : 'a T.t = T.Literal "0" +let integer_zero : 'a T.t = T.Integer "0" +let integer_one : 'a T.t = T.Integer "1" +let concat : 'a T.t = T.Concat [ T.Empty; T.Literal "test" ] +let expr : 'a T.t = T.Function ("expr", [ literal_test; T.Literal "NOT NULL" ]) + +let equal : 'a T.t -> 'a T.t -> 'a T.t = + fun e1 e2 -> T.BOperator (T.Equal, e1, e2) + +let different : 'a T.t -> 'a T.t -> 'a T.t = + fun e1 e2 -> T.BOperator (T.Different, e1, e2) + +let divide : 'a T.t -> 'a T.t -> 'a T.t = + fun e1 e2 -> T.BOperator (T.Division, e1, e2) + +let nvl : 'a T.t -> 'a T.t -> 'a T.t = fun e1 e2 -> T.Nvl [ e1; e2 ] + +let if_ : 'a T.t -> 'a T.t -> 'a T.t -> 'a T.t = + fun pred e1 e2 -> T.Function ("if", [ pred; e1; e2 ]) + +let in_ : 'a T.t -> 'a T.t list -> 'a T.t = + fun e1 group -> T.GEquality (T.Equal, e1, group) + +let not_in : 'a T.t -> 'a T.t list -> 'a T.t = + fun e1 group -> T.GEquality (T.Different, e1, group) + +let max : 'a T.t -> 'a T.t list -> 'a T.t list -> 'a T.t = + fun e group order -> T.Window (T.Max e, group, order) + +let counter : 'a T.t list -> 'a T.t list -> 'a T.t = + fun group order -> T.Window (T.Counter, group, order) + +let function' : T.funct -> 'a T.t list -> 'a T.t = + fun name param -> T.Function' (name, param) + +module Make (Sym : ImportExpression.Sym.SYM_EXPR) = struct + module M = ImportExpression.Sym.M (Sym) + + let eval : 'a T.t -> path_repr:'b Sym.path_repr -> 'a Sym.repr = + fun v ~path_repr -> M.eval ~path_repr v +end -- cgit v1.2.3