aboutsummaryrefslogtreecommitdiff
path: root/tests/configuration_expression.ml
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@dailly.me>2025-03-13 20:17:51 +0100
committerSébastien Dailly <sebastien@dailly.me>2025-04-08 18:39:49 +0200
commit9e2dbe43abe97c4e60b158e5fa52172468a2afb8 (patch)
treef58276e500d8ab0b84cdf74cc36fc73d4bca3892 /tests/configuration_expression.ml
parent0bdc640331b903532fb345930e7078752ba54a2d (diff)
Declare the files to load from an external configuration file
Diffstat (limited to 'tests/configuration_expression.ml')
-rw-r--r--tests/configuration_expression.ml181
1 files changed, 59 insertions, 122 deletions
diff --git a/tests/configuration_expression.ml b/tests/configuration_expression.ml
index cd28589..6478903 100644
--- a/tests/configuration_expression.ml
+++ b/tests/configuration_expression.ml
@@ -4,104 +4,72 @@ open Test_migration
let result_testable =
Alcotest.result Test_migration.expression_testable Alcotest.string
+(** Helper used to test the equality between the litteral expression and it’s
+ AST *)
+let test : string -> Path.t ImportExpression.T.t -> unit =
+ fun expr result ->
+ let expression = ImportConf.expression_from_string expr in
+ Alcotest.check result_testable "" (Ok result) expression
+
+let path_column =
+ "column as path" >:: fun () ->
+ test ":A" (Path { Path.alias = None; column = 1 })
+
+let path_table =
+ "path with table" >:: fun () ->
+ test ":table.A" (Path { Path.alias = Some "table"; column = 1 })
+
+let path_subtable =
+ "path with table" >:: fun () ->
+ test ":table.Name.A" (Path { Path.alias = Some "table.Name"; column = 1 })
+
let parse_dquoted =
"parse_dquoted" >:: fun _ ->
- let expr = "match(\"\\(..\\)\", :B)" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (Function
- ("match", [ Literal "\\(..\\)"; Path { alias = None; column = 2 } ])))
- result
+ test "match(\"\\(..\\)\", :B)"
+ (Function
+ ("match", [ Literal "\\(..\\)"; Path { alias = None; column = 2 } ]))
let parse_quoted =
"parse_quoted" >:: fun _ ->
- let expr = "match('\\(..\\)', :B)" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (Function
- ("match", [ Literal "\\(..\\)"; Path { alias = None; column = 2 } ])))
- result
+ test "match('\\(..\\)', :B)"
+ (Function
+ ("match", [ Literal "\\(..\\)"; Path { alias = None; column = 2 } ]))
let concat =
"concat" >:: fun _ ->
- let expr = ":A ^ :B" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (Concat
- [
- Path { alias = None; column = 1 }; Path { alias = None; column = 2 };
- ]))
- result
+ test ":A ^ :B"
+ (Concat
+ [ Path { alias = None; column = 1 }; Path { alias = None; column = 2 } ])
let concat2 =
"concat2" >:: fun _ ->
- let expr = "'A' ^ '_' ^ 'B'" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok (Concat [ Literal "A"; Literal "_"; Literal "B" ]))
- result
+ test "'A' ^ '_' ^ 'B'" (Concat [ Literal "A"; Literal "_"; Literal "B" ])
let litteral =
"litteral" >:: fun _ ->
(* The text is quoted in shall not be considered as a path *)
- let expr = "':A'" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Literal ":A")) result
+ test "':A'" (Literal ":A")
-let empty =
- "empty" >:: fun _ ->
- let expr = "" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok Empty) result
+let empty = "empty" >:: fun _ -> test "" Empty
let upper_nvl =
- "upper_nvl" >:: fun _ ->
- let expr = "NVL('','')" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Nvl [ Empty; Empty ])) result
+ "upper_nvl" >:: fun _ -> test "NVL('','')" (Nvl [ Empty; Empty ])
let lower_nvl =
- "lower_nvl" >:: fun _ ->
- let expr = "nvl('','')" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Nvl [ Empty; Empty ])) result
-
-let numeric =
- "numeric" >:: fun _ ->
- let expr = "123" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Integer "123")) result
+ "lower_nvl" >:: fun _ -> test "nvl('','')" (Nvl [ Empty; Empty ])
-let numeric_neg =
- "numeric_neg" >:: fun _ ->
- let expr = "-123" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Integer "-123")) result
+let numeric = "numeric" >:: fun _ -> test "123" (Integer "123")
+let numeric_neg = "numeric_neg" >:: fun _ -> test "-123" (Integer "-123")
let op_priority =
"operator_priority" >:: fun _ ->
- let expr = "1 + 2 > 2" in
- let result = ImportConf.expression_from_string expr
- and expected =
- ImportExpression.T.(
- BOperator (GT, BOperator (Add, Integer "1", Integer "2"), Integer "2"))
- in
-
- Alcotest.check result_testable "" (Ok expected) result
+ test "1 + 2 > 2"
+ (BOperator (GT, BOperator (Add, Integer "1", Integer "2"), Integer "2"))
let op_priority2 =
"operator_priority" >:: fun _ ->
- let expr = "1 ^ 2 = 2" in
- let result = ImportConf.expression_from_string expr
- and expected =
- ImportExpression.T.(
- BOperator (Equal, Concat [ Integer "1"; Integer "2" ], Integer "2"))
- in
-
- Alcotest.check result_testable "" (Ok expected) result
+ test "1 ^ 2 = 2"
+ (BOperator (Equal, Concat [ Integer "1"; Integer "2" ], Integer "2"))
let join =
"join" >:: fun _ ->
@@ -119,29 +87,15 @@ let join =
let join_empty =
"join" >:: fun _ ->
- let expr = "join('', :A, :B)" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (Join
- ( "",
- [
- Path { alias = None; column = 1 };
- Path { alias = None; column = 2 };
- ] )))
- result
+ test "join('', :A, :B)"
+ (Join
+ ( "",
+ [
+ Path { alias = None; column = 1 }; Path { alias = None; column = 2 };
+ ] ))
-let upper =
- "upper" >:: fun _ ->
- let expr = "upper('')" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Function' (Upper, [ Empty ]))) result
-
-let trim =
- "trim" >:: fun _ ->
- let expr = "trim('')" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable "" (Ok (Function' (Trim, [ Empty ]))) result
+let upper = "upper" >:: fun _ -> test "upper('')" (Function' (Upper, [ Empty ]))
+let trim = "trim" >:: fun _ -> test "trim('')" (Function' (Trim, [ Empty ]))
(** Extract the columns from a window function *)
let fold_values =
@@ -182,44 +136,24 @@ let bad_quote =
let nested_expression =
"nested_expression" >:: fun _ ->
- let expr = "1 = (1 = 0)" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (BOperator
- ( Equal,
- Integer "1",
- Expr (BOperator (Equal, Integer "1", Integer "0")) )))
- result
+ test "1 = (1 = 0)"
+ (BOperator
+ (Equal, Integer "1", Expr (BOperator (Equal, Integer "1", Integer "0"))))
let priority_equality =
"priority_equality" >:: fun _ ->
- let expr = "1 = 1 = 0" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (BOperator
- (Equal, Integer "1", BOperator (Equal, Integer "1", Integer "0"))))
- result
+ test "1 = 1 = 0"
+ (BOperator (Equal, Integer "1", BOperator (Equal, Integer "1", Integer "0")))
let priority_operator_and =
"priority_equality" >:: fun _ ->
- let expr = "1 and 1 = 0" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (BOperator (And, Integer "1", BOperator (Equal, Integer "1", Integer "0"))))
- result
+ test "1 and 1 = 0"
+ (BOperator (And, Integer "1", BOperator (Equal, Integer "1", Integer "0")))
let priority_operator_or =
"priority_equality" >:: fun _ ->
- let expr = "1 <> 1 or 0" in
- let result = ImportConf.expression_from_string expr in
- Alcotest.check result_testable ""
- (Ok
- (BOperator
- (Or, BOperator (Different, Integer "1", Integer "1"), Integer "0")))
- result
+ test "1 <> 1 or 0"
+ (BOperator (Or, BOperator (Different, Integer "1", Integer "1"), Integer "0"))
let unknown_function =
"unknown function" >:: fun _ ->
@@ -240,6 +174,9 @@ let wrong_arguments =
let test_suit =
[
+ path_column;
+ path_table;
+ path_subtable;
parse_dquoted;
parse_quoted;
concat;