From 11ad7d61b494345bdfd353f044698bd6523d9b9f Mon Sep 17 00:00:00 2001 From: Ben Urban Date: Tue, 14 Jul 2026 12:25:49 +0200 Subject: [PATCH] sc: Implement lambda and related fuctions as FunctionsTest Like the other functions in Calc Based on https://gerrit.libreoffice.org/c/core/+/208073 Change-Id: I0e74bff3e29328007345841ffefd6fb18965e5ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209144 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- sc/CppunitTest_sc_lambda_functions_test.mk | 12 + sc/Module_sc.mk | 1 + .../data/functions/lambda/fods/bycol.fods | 3643 ++++++++++++++ .../data/functions/lambda/fods/byrow.fods | 3640 ++++++++++++++ .../data/functions/lambda/fods/isomitted.fods | 3478 +++++++++++++ .../data/functions/lambda/fods/lambda.fods | 4411 +++++++++++++++++ .../data/functions/lambda/fods/makearray.fods | 3681 ++++++++++++++ .../unit/data/functions/lambda/fods/map.fods | 3735 ++++++++++++++ .../data/functions/lambda/fods/reduce.fods | 3668 ++++++++++++++ .../unit/data/functions/lambda/fods/scan.fods | 3689 ++++++++++++++ .../data/functions/spreadsheet/fods/let.fods | 890 +++- .../data/xlsx/LambdaAndRelatedFunctions.xlsx | Bin 29373 -> 0 bytes sc/qa/unit/functions_lambda.cxx | 43 + sc/qa/unit/subsequent_filters_test.cxx | 33 - sc/qa/unit/ucalc_formula2.cxx | 71 - sc/source/core/tool/interpr1.cxx | 19 +- 16 files changed, 30901 insertions(+), 113 deletions(-) create mode 100644 sc/CppunitTest_sc_lambda_functions_test.mk create mode 100644 sc/qa/unit/data/functions/lambda/fods/bycol.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/byrow.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/isomitted.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/lambda.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/makearray.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/map.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/reduce.fods create mode 100644 sc/qa/unit/data/functions/lambda/fods/scan.fods delete mode 100644 sc/qa/unit/data/xlsx/LambdaAndRelatedFunctions.xlsx create mode 100644 sc/qa/unit/functions_lambda.cxx diff --git a/sc/CppunitTest_sc_lambda_functions_test.mk b/sc/CppunitTest_sc_lambda_functions_test.mk new file mode 100644 index 000000000000..04751d482d27 --- /dev/null +++ b/sc/CppunitTest_sc_lambda_functions_test.mk @@ -0,0 +1,12 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call sc_functions_test,lambda)) + +# vim: set noet sw=4 ts=4: diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index d4e7095ecfdc..520d80afff85 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -141,6 +141,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc, \ CppunitTest_sc_datetime_functions_test \ CppunitTest_sc_financial_functions_test \ CppunitTest_sc_information_functions_test \ + CppunitTest_sc_lambda_functions_test \ CppunitTest_sc_logical_functions_test \ CppunitTest_sc_mathematical_functions_test \ CppunitTest_sc_spreadsheet_functions_test \ diff --git a/sc/qa/unit/data/functions/lambda/fods/bycol.fods b/sc/qa/unit/data/functions/lambda/fods/bycol.fods new file mode 100644 index 000000000000..f9f37425c900 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/bycol.fods @@ -0,0 +1,3643 @@ + + + + 2024-01-16T18:30:06.278000000PT4H54M21S105LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:38:37.377203232 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + ByCol Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple BYCOL formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + + Expected + + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 21 + + + + 21 + + + + VERDADERO + + + =SUM(BYCOL({1.2.3;4.5.6}; LAMBDA(c; SUM(c)))) + + + + 11 + + + 22 + + + 33 + + + + + + 6 + + + + 6 + + + + VERDADERO + + + =BYCOL({1;2;3}; LAMBDA(c; SUM(c))) + + + + 44 + + + 55 + + + 66 + + + + + + 11 + + + + 11 + + + + VERDADERO + + + =TRANSPOSE(BYCOL({1.2.3;10.20.30}; LAMBDA(c; SUM(c)))) + + + + 77 + + + 88 + + + 99 + + + + + + 22 + + + + 22 + + + + VERDADERO + + + =TRANSPOSE(BYCOL({1.2.3;10.20.30}; LAMBDA(c; SUM(c)))) + + + + + + + 33 + + + + 33 + + + + VERDADERO + + + =TRANSPOSE(BYCOL({1.2.3;10.20.30}; LAMBDA(c; SUM(c)))) + + + + + + + 100 + + + + 100 + + + + VERDADERO + + + =BYCOL(100; LAMBDA(c; SUM(c))) + + + + + + + ABC + + + + ABC + + + + VERDADERO + + + =BYCOL("ABC"; LAMBDA(c; c)) + + + + + + + AD + + + + AD + + + + VERDADERO + + + =TRANSPOSE(BYCOL({"A"."B"."C";"D"."E"."F"}; LAMBDA(c; CONCAT(c)))) + + + + + + + BE + + + + BE + + + + VERDADERO + + + =TRANSPOSE(BYCOL({"A"."B"."C";"D"."E"."F"}; LAMBDA(c; CONCAT(c)))) + + + + + + + CF + + + + CF + + + + VERDADERO + + + =TRANSPOSE(BYCOL({"A"."B"."C";"D"."E"."F"}; LAMBDA(c; CONCAT(c)))) + + + + + + + 132 + + + 165 + + + 198 + + + 132 + + + 165 + + + 198 + + + VERDADERO + + + =BYCOL(J2:L4; LAMBDA(c; SUM(c))) + + + Column reduction over a real range + + + + + + + 11 + + + + 11 + + + + VERDADERO + + + =TRANSPOSE(BYCOL({1.2.3;10.20.30}; SUM)) + + + + + + + 22 + + + + 22 + + + + VERDADERO + + + =TRANSPOSE(BYCOL({1.2.3;10.20.30}; SUM)) + + + + + + + 33 + + + + 33 + + + + VERDADERO + + + =TRANSPOSE(BYCOL({1.2.3;10.20.30}; SUM)) + + + + + + + AD + + + + AD + + + + VERDADERO + + + =TRANSPOSE(BYCOL({"A"."B"."C";"D"."E"."F"}; CONCAT)) + + + + + + + BE + + + + BE + + + + VERDADERO + + + =TRANSPOSE(BYCOL({"A"."B"."C";"D"."E"."F"}; CONCAT)) + + + + + + + CF + + + + CF + + + + VERDADERO + + + =TRANSPOSE(BYCOL({"A"."B"."C";"D"."E"."F"}; CONCAT)) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/byrow.fods b/sc/qa/unit/data/functions/lambda/fods/byrow.fods new file mode 100644 index 000000000000..9d8d7bc5e0a8 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/byrow.fods @@ -0,0 +1,3640 @@ + + + + 2024-01-16T18:30:06.278000000PT4H51M32S104LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:39:19.329024892 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + ByRow Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple BYROW formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + Expected + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 21 + + + 21 + + + VERDADERO + + + =SUM(BYROW({1.2.3;4.5.6}; LAMBDA(c; SUM(c)))) + + + + 11 + + + 22 + + + 33 + + + + + + 6 + + + 6 + + + VERDADERO + + + =BYROW({1.2.3}; LAMBDA(c; SUM(c))) + + + + 44 + + + 55 + + + 66 + + + + + + 6 + + + 6 + + + VERDADERO + + + =BYROW({1.2.3;10.20.30}; LAMBDA(c; SUM(c))) + + + + 77 + + + 88 + + + 99 + + + + + + 60 + + + 60 + + + VERDADERO + + + =BYROW({1.2.3;10.20.30}; LAMBDA(c; SUM(c))) + + + + + + + 100 + + + 100 + + + VERDADERO + + + =BYROW(100; LAMBDA(c; SUM(c))) + + + + + + + ABC + + + ABC + + + VERDADERO + + + =BYROW("ABC"; LAMBDA(c; c)) + + + + + + + ABC + + + ABC + + + VERDADERO + + + =BYROW({"A"."B"."C";"D"."E"."F"}; LAMBDA(c; CONCAT(c))) + + + + + + + DEF + + + DEF + + + VERDADERO + + + =BYROW({"A"."B"."C";"D"."E"."F"}; LAMBDA(c; CONCAT(c))) + + + + + + + 66 + + + 66 + + + VERDADERO + + + =BYROW(F2:H4; LAMBDA(c; SUM(c))) + + + Row reduction over a real range + + + + + + + 165 + + + 165 + + + VERDADERO + + + =BYROW(F2:H4; LAMBDA(c; SUM(c))) + + + + + + + 264 + + + 264 + + + VERDADERO + + + =BYROW(F2:H4; LAMBDA(c; SUM(c))) + + + + + + + 3 + + + 3 + + + VERDADERO + + + =BYROW({1.2;3.4}; LAMBDA(r; REDUCE(0; r; LAMBDA(a;v; a + v)))) + + + + + + + 7 + + + 7 + + + VERDADERO + + + =BYROW({1.2;3.4}; LAMBDA(r; REDUCE(0; r; LAMBDA(a;v; a + v)))) + + + + + + + 6 + + + 6 + + + VERDADERO + + + =BYROW({1.2.3;10.20.30}; SUM) + + + + + + + 60 + + + 60 + + + VERDADERO + + + =BYROW({1.2.3;10.20.30}; SUM) + + + + + + + ABC + + + ABC + + + VERDADERO + + + =BYROW({"A"."B"."C";"D"."E"."F"}; CONCAT) + + + + + + + DEF + + + DEF + + + VERDADERO + + + =BYROW({"A"."B"."C";"D"."E"."F"}; CONCAT) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/isomitted.fods b/sc/qa/unit/data/functions/lambda/fods/isomitted.fods new file mode 100644 index 000000000000..a6b2de432ad7 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/isomitted.fods @@ -0,0 +1,3478 @@ + + + + 2024-01-16T18:30:06.278000000PT4H58M50S106LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:56:12.018134142 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + isOmitted Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple ISOMITTED formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + Expected + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 1 + + + VERDADERO + + + VERDADERO + + + =LAMBDA(x;y; ISOMITTED(x))(; 5) + + + + + + + 0 + + + FALSO + + + VERDADERO + + + =LAMBDA(x;y; ISOMITTED(x))(3; 5) + + + + + + + 0 + + + FALSO + + + VERDADERO + + + =LAMBDA(x;y; ISOMITTED(x))(3; 5) + + + + + + + 104 + + + 104 + + + VERDADERO + + + =LAMBDA(x;y; IF(ISOMITTED(x); 99; x) + y)(; 5) + + + + + + + 8 + + + 8 + + + VERDADERO + + + =LAMBDA(x;y; IF(ISOMITTED(x); 99; x) + y)(3; 5) + + + + + + + 3 + + + 3 + + + VERDADERO + + + =ERROR.TYPE(F7) + + + + #VALUE! + + + + + + + -1 + + + -1 + + + VERDADERO + + + =LAMBDA(a;b;c; IF(ISOMITTED(b); -1; b))(1; ; 3) + + + + + + + 5 + + + 5 + + + VERDADERO + + + =LAMBDA([x]; IF(ISOMITTED(x);12;5))(1) + + + TODO - Optional parameter, set + + + + + + + 12 + + + 12 + + + VERDADERO + + + =LAMBDA([x]; IF(ISOMITTED(x);12;5))() + + + TODO - Optional parameter, not set + + + + + + + 3 + + + 3 + + + VERDADERO + + + =ERROR.TYPE(F11) + + + TODO - Required parameter, not set + + + #VALUE! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/lambda.fods b/sc/qa/unit/data/functions/lambda/fods/lambda.fods new file mode 100644 index 000000000000..2c0a27dbd0cc --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/lambda.fods @@ -0,0 +1,4411 @@ + + + + 2024-01-16T18:30:06.278000000PT4H57M26S111LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T12:19:52.769789866 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + Lambda Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple LAMBDA formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + Expected + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 2 + + + 1 + + + VERDADERO + + + =LAMBDA(1)() + + + No parameters, constant body + + + 10 + + + + + + + 2 + + + 2 + + + VERDADERO + + + =LAMBDA(a; 2)(1) + + + One unused parameter, constant body + + + 20 + + + + + + + 10 + + + 10 + + + VERDADERO + + + =LAMBDA(a; a)(F2) + + + Reference as input + + + 30 + + + + + + + 3 + + + 3 + + + VERDADERO + + + =LAMBDA(a; a)(3) + + + Value as input + + + 40 + + + + + + + 4 + + + 4 + + + VERDADERO + + + =LAMBDA(a; a * 2)(2) + + + One parameter, simple expression on it + + + + + + + 7 + + + 7 + + + VERDADERO + + + =LAMBDA(x;y; x + y)(3; 4) + + + Two parameters, arithmetic + + + + + + + 10 + + + 10 + + + VERDADERO + + + =LAMBDA(a; a + a)(5) + + + Parameter used more than once + + + + + + + 15 + + + 15 + + + VERDADERO + + + =LAMBDA(x;y; x + x * y)(3; 4) + + + Operator precedence inside the body + + + + + + + 5 + + + 5 + + + VERDADERO + + + =LAMBDA(a; IF(a > 0; a; -a))(-5) + + + Function inside the body + + + + + + + hi! + + + hi! + + + VERDADERO + + + =LAMBDA(a; a & "!")("hi") + + + String argument flowing through identity body + + + + + + + 2 + + + 2 + + + VERDADERO + + + =LAMBDA(SQRT; SQRT(SQRT))(4) + + + Name precedence matches MSO + + + + + + + 100 + + + 100 + + + VERDADERO + + + =LAMBDA(r; SUM(r))(F2:F5) + + + Range as input + + + + + + + 6 + + + 6 + + + VERDADERO + + + =LAMBDA(a;b;c; a + b + c)(1; 2; 3) + + + + + + + 0 + + + 0 + + + VERDADERO + + + =LAMBDA(a;b;c; a + b + c)(;;) + + + Unspecified value is defaulting to 0 + + + + + + + 1 + + + VERDADERO + + + VERDADERO + + + =LAMBDA(x; x > 5)(7) + + + + + + 2 + + + 2 + + + VERDADERO + + + =ERROR.TYPE(LAMBDA(x; 1 / x)(0)) + + + Div by 0 + + + + + + 3 + + + 3 + + + VERDADERO + + + =ERROR.TYPE(LAMBDA(x;y; x + y)(1)) + + + Missing required parameter + + + + + + 7 + + + 7 + + + VERDADERO + + + =LAMBDA(x; LAMBDA(y; x + y))(3)(4) + + + Nested LAMBDA + + + + + + 16 + + + 16 + + + VERDADERO + + + =LET(f; LAMBDA(x; x * x); f(4)) + + + LAMBDA in a LET function + + + + + + 6 + + + 6 + + + VERDADERO + + + =LAMBDA(a; SUM(a))({1;2;3}) + + + Array as input + + + + + + 82 + + + 82 + + + VERDADERO + + + =SUM(LAMBDA(a; a * 2)({10;11;20})) + + + Jump matrix - array input + + + + + + 200 + + + 200 + + + VERDADERO + + + =SUM(LAMBDA(a; a * 2)(F2:F5)) + + + Jump matrix - range input + + + + + + 200 + + + 200 + + + VERDADERO + + + =SUM(LAMBDA(a; a * 2)(DATARANGE)) + + + Jump matrix - named range input + + + + + + 120 + + + 120 + + + VERDADERO + + + =LET(g; LAMBDA(self;n; IF(n <= 1; 1; n * self(self; n - 1))); g(g; 5)) + + + Recursive LAMBDA + + + + + + 7 + + + 7 + + + VERDADERO + + + =PLUS2(5) + + + PLUS2 set with LAMBDA in the Name Manager + + + + + + 4 + + + 4 + + + VERDADERO + + + =SUM(4) + + + SUM LAMBDA function is set in Name Manager, make sure built-in function has priority + + + + + + 100 + + + 100 + + + VERDADERO + + + =LAMBDA(x; SUM(x))(100) + + + If you use SUM in LAMBDA, it will use the built-in function not the named LAMBDA + + + + + + 110 + + + 110 + + + VERDADERO + + + =LAMBDA(x;f; f(x))(100;SUM) + + + If you use SUM as parameter to LAMBDA, the named LAMBDA will be used instead + + + + + + 3 + + + 3 + + + VERDADERO + + + =LAMBDA(f;n; f(n))(PLUS2; 1) + + + Named lambda as parameter + + + + + + 4 + + + 4 + + + VERDADERO + + + =LAMBDA(f;n; f(n))(COUNT; {5.6.7.8}) + + + ETA-LAMBDA use in LAMBDA as parameter + + + + + + 10 + + + 10 + + + VERDADERO + + + =LAMBDA(f; f(5))(LAMBDA(x; x * 2)) + + + LAMBDA as parameter to LAMBDA + + + + + + 7 + + + 7 + + + VERDADERO + + + =LAMBDA(f;x; f(f(x)))(LAMBDA(n; n + 1); 5) + + + Call LAMBDA 2 times + + + + + + 32 + + + 32 + + + VERDADERO + + + =APPLYTWICE(LAMBDA(x; x * 2); 8) + + + Export of a named LAMBDA that takes a LAMBDA argument + + + + + + 15 + + + 15 + + + VERDADERO + + + =LAMBDA(x; x + $F$2)(5) + + + A LAMBDA body that closes over a sheet cell + + + + + + 333 + + + 333 + + + VERDADERO + + + =LAMBDA(a; LAMBDA(b; LAMBDA(c; a + b + c)))(3)(30)(300) + + + Triple curry + + + + + + 20 + + + 20 + + + VERDADERO + + + =LAMBDA(x;y; x + y)(20;) + + + Value not provided - second parameter + + + + + + 2 + + + 2 + + + VERDADERO + + + =LAMBDA(x;y; x + y)(;2) + + + Value not provided - first parameter + + + + + + 7 + + + 7 + + + VERDADERO + + + =LAMBDA(x;[y];[z]; x + y + z)(7) + + + Optional used but not set - number + + + + + + xy + + + xy + + + VERDADERO + + + =LAMBDA(x;[y];[z]; x & y & z)("xy") + + + Optional used but not set - string + + + + + + 6 + + + 6 + + + VERDADERO + + + =LAMBDA(x; LAMBDA(x; x*2)(3))(10) + + + Name shadowing - LAMBDA within LAMBDA + + + + + + 6 + + + 6 + + + VERDADERO + + + =LAMBDA(x; LAMBDA(y;x; x*2)(5;3))(10) + + + + + + 6 + + + 6 + + + VERDADERO + + + =LAMBDA(x; LET(x;3; x*2))(10) + + + Name shadowing - LET within LAMBDA + + + + + + 6 + + + 6 + + + VERDADERO + + + =LAMBDA(x; LET(y;5; x;3; x*2))(10) + + + + + + 42 + + + 42 + + + VERDADERO + + + =LAMBDA(x$; x$)(42) + + + TODO: x$ probably shouldn't be a valid name + + + + + + Err:508 + + + + VERDADERO + + + =LAMBDA(AX1; 0) + + + AX1 = cell reference name - invalid syntax + + + + + + Err:508 + + + + VERDADERO + + + =LAMBDA([x]; y; 0) + + + Optional, then required parameter - invalid syntax + + + + + + Err:509 + + + + VERDADERO + + + =LAMBDA(ab!; 0) + + + + + + Err:508 + + + + VERDADERO + + + =LAMBDA(aa#a; 0) + + + + + + Err:508 + + + + VERDADERO + + + =LAMBDA(a%; 0) + + + + + + Err:509 + + + + VERDADERO + + + =LAMBDA(#REF!; 0) + + + + + + Err:508 + + + + VERDADERO + + + =LAMBDA("x"; 0)(1) + + + + + + Err:539 + + + + VERDADERO + + + =LAMBDA(x;y;z; {x,y,z}))(1; 20; 3) + + + Can't create a literal array from parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/makearray.fods b/sc/qa/unit/data/functions/lambda/fods/makearray.fods new file mode 100644 index 000000000000..5515ae6caa07 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/makearray.fods @@ -0,0 +1,3681 @@ + + + + 2024-01-16T18:30:06.278000000PT4H57M40S105LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:36:20.348084939 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + MakeArray Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple MAKEARRAY formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + + Expected + + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 11 + + + 21 + + + 11 + + + 21 + + + VERDADERO + + + =TRANSPOSE(MAKEARRAY(2; 3; LAMBDA(r;c; r * 10 + c))) + + + + + + + 12 + + + 22 + + + 12 + + + 22 + + + VERDADERO + + + =TRANSPOSE(MAKEARRAY(2; 3; LAMBDA(r;c; r * 10 + c))) + + + + + + + 13 + + + 23 + + + 13 + + + 23 + + + VERDADERO + + + =TRANSPOSE(MAKEARRAY(2; 3; LAMBDA(r;c; r * 10 + c))) + + + + + + + 3 + + + + 3 + + + + VERDADERO + + + =ERROR.TYPE(H5) + + + + #VALUE! + + + + + + + 2 + + + + 2 + + + + VERDADERO + + + =MAKEARRAY(2; 1; LAMBDA(r;c; r + c)) + + + + + + + 3 + + + + 3 + + + + VERDADERO + + + =MAKEARRAY(2; 1; LAMBDA(r;c; r + c)) + + + + + + + 6 + + + + 6 + + + + VERDADERO + + + =MAKEARRAY(2; 1; LAMBDA(r;c; 6)) + + + + + + + 6 + + + + 6 + + + + VERDADERO + + + =MAKEARRAY(2; 1; LAMBDA(r;c; 6)) + + + + + + + 2 + + + + 2 + + + + VERDADERO + + + =MAKEARRAY(2; 1; SUM) + + + + + + + 3 + + + + 3 + + + + VERDADERO + + + =MAKEARRAY(2; 1; SUM) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/map.fods b/sc/qa/unit/data/functions/lambda/fods/map.fods new file mode 100644 index 000000000000..c83a0855a120 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/map.fods @@ -0,0 +1,3735 @@ + + + + 2024-01-16T18:30:06.278000000PT4H50M25S103LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:41:42.178822676 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + Map Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple MAP formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + Expected + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 1 + + + 1 + + + VERDADERO + + + =MAP({1;2;3}; LAMBDA(x; x * x)) + + + + 2 + + + + + + + + 4 + + + 4 + + + VERDADERO + + + =MAP({1;2;3}; LAMBDA(x; x * x)) + + + + 5 + + + + + + + + 9 + + + 9 + + + VERDADERO + + + =MAP({1;2;3}; LAMBDA(x; x * x)) + + + + 2 + + + + + + 11 + + + 11 + + + VERDADERO + + + =MAP({1;2;3}; {10;20;30}; LAMBDA(a;b; a + b)) + + + + 1 + + + + + + 22 + + + 22 + + + VERDADERO + + + =MAP({1;2;3}; {10;20;30}; LAMBDA(a;b; a + b)) + + + + + + + + + 33 + + + 33 + + + VERDADERO + + + =MAP({1;2;3}; {10;20;30}; LAMBDA(a;b; a + b)) + + + + + + + + + A + + + A + + + VERDADERO + + + =MAP({"a";"b"}; LAMBDA(x; UPPER(x))) + + + + + + + + + B + + + B + + + VERDADERO + + + =MAP({"a";"b"}; LAMBDA(x; UPPER(x))) + + + + + + + + + 4 + + + 4 + + + VERDADERO + + + =MAP(F2:F5; LAMBDA(x; x * x)) + + + Element map over a range + + + + + + + 25 + + + 25 + + + VERDADERO + + + =MAP(F2:F5; LAMBDA(x; x * x)) + + + + + + + + + 4 + + + 4 + + + VERDADERO + + + =MAP(F2:F5; LAMBDA(x; x * x)) + + + + + + + + + 1 + + + 1 + + + VERDADERO + + + =MAP(F2:F5; LAMBDA(x; x * x)) + + + + + + + + + 2 + + + 2 + + + VERDADERO + + + =LET(double; LAMBDA(x; x * 2); MAP({1;2;3}; double)) + + + + + + + + + 4 + + + 4 + + + VERDADERO + + + =LET(double; LAMBDA(x; x * 2); MAP({1;2;3}; double)) + + + + + + + + + 6 + + + 6 + + + VERDADERO + + + =LET(double; LAMBDA(x; x * 2); MAP({1;2;3}; double)) + + + + + + + + + 1,5 + + + 1,5 + + + VERDADERO + + + =SUM(IFERROR(MAP({1.0.2}; LAMBDA(x; 1 / x)); 0)) + + + + + + 2 + + + 2 + + + VERDADERO + + + =MAP({1;2;3}; {1;2}; LAMBDA(a;b; a + b)) + + + + + + 4 + + + 4 + + + VERDADERO + + + =MAP({1;2;3}; {1;2}; LAMBDA(a;b; a + b)) + + + + + + #N/A + + + + VERDADERO + + + =MAP({1;2;3}; {1;2}; LAMBDA(a;b; a + b)) + + + + + + 7 + + + 7 + + + VERDADERO + + + =ERROR.TYPE(A20) + + + + + + A + + + A + + + VERDADERO + + + =MAP({"a";"b"}; UPPER) + + + + + + B + + + B + + + VERDADERO + + + =MAP({"a";"b"}; UPPER) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/reduce.fods b/sc/qa/unit/data/functions/lambda/fods/reduce.fods new file mode 100644 index 000000000000..a1fb32dc98e9 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/reduce.fods @@ -0,0 +1,3668 @@ + + + + 2024-01-16T18:30:06.278000000PT4H52M50S105LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:43:33.530697003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + Reduce Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple REDUCE formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + Expected + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 10 + + + 10 + + + VERDADERO + + + =REDUCE(0; {1.2.3.4}; LAMBDA(acc;val; acc + val)) + + + + 12 + + + 3 + + + + + + + 24 + + + 24 + + + VERDADERO + + + =REDUCE(1; {1.2.3.4}; LAMBDA(acc;val; acc * val)) + + + + 14 + + + 3 + + + + + + + abc + + + abc + + + VERDADERO + + + =REDUCE(""; {"a"."b"."c"}; LAMBDA(acc;val; acc & val)) + + + + 11 + + + 5 + + + + + + + 10_abc + + + 10_abc + + + VERDADERO + + + =REDUCE(10 & "_"; {"a"."b"."c"}; LAMBDA(acc;val; acc & val)) + + + + + + + 6 + + + 6 + + + VERDADERO + + + =REDUCE(; {1.2.3}; LAMBDA(acc;val; acc + val)) + + + + + + + 26 + + + 26 + + + VERDADERO + + + =REDUCE(5; {1.2.3;4.5.6}; LAMBDA(acc;val; acc + val)) + + + REDUCE over a 2D array + + + + + + + 39 + + + 39 + + + VERDADERO + + + =REDUCE(2; F2:F4; LAMBDA(acc;val; acc + val)) + + + REDUCE over a range + + + + + + + 18 + + + 18 + + + VERDADERO + + + =REDUCE(10; UNIQUE(G2:G4); LAMBDA(acc;val; acc + val)) + + + + + + + -1 + + + -1 + + + VERDADERO + + + =IFERROR(REDUCE(0; {1.0}; LAMBDA(acc;val; acc / val)); -1) + + + + + + abc + + + abc + + + VERDADERO + + + =REDUCE(""; {"a"."b"."c"}; CONCAT) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/lambda/fods/scan.fods b/sc/qa/unit/data/functions/lambda/fods/scan.fods new file mode 100644 index 000000000000..1dc3bed6f449 --- /dev/null +++ b/sc/qa/unit/data/functions/lambda/fods/scan.fods @@ -0,0 +1,3689 @@ + + + + 2024-01-16T18:30:06.278000000PT4H52M38S105LibreOfficeDev/27.2.0.0.alpha0$Linux_X86_64 LibreOffice_project/da8934a626c058e8f771c90ccbdc70c7ca9700382026-07-14T11:45:06.521839634 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + - + + + € + + + + + + Kč + + + + - + + + Kč + + + + \ + + + + + \- + + + + + + % + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + £ + + + + + - + £ + + + + + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + + + + . + + . + + + + + + + + + + + + ( + + ) + + + + € + + + + + € + - + + + + + $ + + + + + ($ + + ) + + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + ⌀ + + + + + € + + + - + + € + + + - € + + + + + + + + + + + + + + + + € + + + + + + € + + + - + + + + + - + + - + + + + £ + + + + - + £ + + + + + + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + € + + + + + + + ( + € + + + ) + + + + + + + + + + $ + + + + + + + + ( + + ) + + + + + + Kč + + + + - + + + Kč + + + + $ + + + + + - + $ + + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + Kč + + + + - + + + Kč + + + + Yes + + + Yes + + + No + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + - + + € + + + + \ + + + + \- + + + + + \ + + + + + + \ + + - + + + + + \ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + £ + + + + - + £ + + + + + + + + + + + + + EUR + + + + - + + + EUR + + + + + € + + + + - + + € + + + + + - + + - + + + + $ + + + + + + $ + + ( + + ) + + + $ + + - + + + + + + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + £ + + + + + - + £ + + + + + + On + + + On + + + Off + + + + + $ + + + + + + ($ + + ) + + + + + € + + + - + + € + + + + + + + $ + + + + + ($ + + ) + + + + $ + + + + + + ($ + + ) + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + + + + True + + + True + + + False + + + + + + € + + + - + + € + + + - + + € + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + / + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + $ + + + + + $( + + ) + + + $- + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + WAHR + + + WAHR + + + FALSCH + + + + + + . + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + + + + + + ( + + ) + + + - + + + + + + + + + + + + + : + + + + + : + + + + £ + + + + + - + £ + + + + + + \ + + + + + \- + + + + + € + + + + + € + - + + + + + + + € + + + + - + + + € + + + + + + + + + + + € + + + + - + + € + + + + + + Kč + + + - + + + Kč + + + + + : + + : + + + + \ + + + + \- + + + + + + + + + - + + + € + + + + + + + / + + / + + + + + + + / + + / + + + + € + + + + + + - + € + + + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + Kč + + + - + + Kč + + + + + Kč + + + + - + + Kč + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + - + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - Kč + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + Kč + + + - + + + Kč + + + + - + + Kč + + + + + + + + + + ¥€ + + + + + + + + + ( + € + + + + + ) + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + + € + + + + - + + + € + + + + + % + + + + % + + + + % + + + + % + + + + % + + + + % + + + + + + $ + + + + + ( + $ + + ) + + + + + % + + + + % + + + + - + + % + + + + + + + + - + + + + + + - + + - + + + + £ + + + + + - + £ + + + + + £ + + + + + - + £ + + + + + + % + + + + - + + % + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + DM + + + - + + DM + + + + + DM + + + + - + + DM + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - DM + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + DM + + + - + + + DM + + + + + - + + DM + + + + + + + + + + + Ouch! - + + - Error detected! + + + + - Result=0 - No Errordetection + + + + / + + / + + + + + . + + . + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + $ + + + + $ + + + + + - + $ + + + + + + . + + . + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + $ + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + $ + + + + -$ + + + + + $ + + + + + -$ + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + - + + + + + + + - + + + + - + + + + + -$ + + + + $ + + + + -$ + + + + $- + + + + + + - + + + + + + + - + + + + - + + + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + Ft + + + - + + Ft + + + + + Ft + + + + - + + Ft + + + + + . + + . + + + + + . + + . + + + + + . + + + + + . + + + + + . + + . + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - Ft + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + Ft + + + - + + + Ft + + + + + - + + Ft + + + + + + + + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + € + + + - + + + € + + + + + - € + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + € + + + - + + + € + + + + + - + + € + + + + + + + + + + + + / + + / + + + + + - + + - + + + + + - + + + + + - + + + + + : + + + + + + + : + + : + + + + + + + : + + + + + : + + : + + + + + / + + / + + + + : + + + + + + + + + ( + + ) + + + + + + + + + ( + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + + ( + + + ) + + + + + + + + + + ( + + + ) + + + + + + + + ( + + ) + + + + + + + + ( + + ) + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + ( + + ) + + + + - + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + : + + : + + + + + : + + + + + + + + % + + + + + + + - + + - + + + + + + + + + . + + + + + + + . + + + + + + + + + + : + + + + + + + : + + : + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + € + + + - + + € + + + + + € + + + + - + + € + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + Page 1 + + + + + + + + ???(???) + + + 00/00/0000, 00:00:00 + + + + + + Page 1/ 99 + + + + + + + + + + + + + + + Scan Function + + + + + + + + + + Result + + + VERDADERO + + + + + + + + + Sheet + + + Result + + + Description + + + + + 2 + + + VERDADERO + + + Simple SCAN formulas with local references and values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function + + + Expected + + + Correct + + + FunctionString + + + Comment + + + Data + + + + + + 1 + + + 1 + + + VERDADERO + + + =TRANSPOSE(SCAN(0; {1.2.3.4}; LAMBDA(acc;val; acc + val))) + + + + + + + 3 + + + 3 + + + VERDADERO + + + =TRANSPOSE(SCAN(0; {1.2.3.4}; LAMBDA(acc;val; acc + val))) + + + + + + + 6 + + + 6 + + + VERDADERO + + + =TRANSPOSE(SCAN(0; {1.2.3.4}; LAMBDA(acc;val; acc + val))) + + + + + + + 10 + + + 10 + + + VERDADERO + + + =TRANSPOSE(SCAN(0; {1.2.3.4}; LAMBDA(acc;val; acc + val))) + + + + + + + 1 + + + 1 + + + VERDADERO + + + =TRANSPOSE(SCAN(; {1.2.3}; LAMBDA(acc;val; acc + val))) + + + + + + + 3 + + + 3 + + + VERDADERO + + + =TRANSPOSE(SCAN(; {1.2.3}; LAMBDA(acc;val; acc + val))) + + + + + + + 6 + + + 6 + + + VERDADERO + + + =TRANSPOSE(SCAN(; {1.2.3}; LAMBDA(acc;val; acc + val))) + + + + + + + aa + + + aa + + + VERDADERO + + + =SCAN("a"; {"a";"b";"c"}; LAMBDA(acc;val; acc & val)) + + + + + + + aab + + + aab + + + VERDADERO + + + =SCAN("a"; {"a";"b";"c"}; LAMBDA(acc;val; acc & val)) + + + + + + + aabc + + + aabc + + + VERDADERO + + + =SCAN("a"; {"a";"b";"c"}; LAMBDA(acc;val; acc & val)) + + + + + + + aa + + + aa + + + VERDADERO + + + =SCAN("a"; {"a";"b";"c"}; CONCAT) + + + + + + aab + + + aab + + + VERDADERO + + + =SCAN("a"; {"a";"b";"c"}; CONCAT) + + + + + + aabc + + + aabc + + + VERDADERO + + + =SCAN("a"; {"a";"b";"c"}; CONCAT) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/let.fods b/sc/qa/unit/data/functions/spreadsheet/fods/let.fods index 06a390722a77..fbae4b2f29f5 100644 --- a/sc/qa/unit/data/functions/spreadsheet/fods/let.fods +++ b/sc/qa/unit/data/functions/spreadsheet/fods/let.fods @@ -4741,19 +4741,889 @@ - + - - - - + + 2 + + + + 1 + + + + IGAZ + + + =LET(1) + + + No parameters, constant body + + + + 10 + + + + + + 2 + + + + 2 + + + + IGAZ + + + =LET(a;1; 2) + + + One unused parameter, constant body + + + + 20 + + + + + + 10 + + + + 10 + + + + IGAZ + + + =LET(a;N55; a) + + + Reference as input + + + + 30 + + + + + + 3 + + + + 3 + + + + IGAZ + + + =LET(a;3; a) + + + Value as input + + + + 40 + + + + + + 4 + + + + 4 + + + + IGAZ + + + =LET(a;2; a * 2) + + + One parameter, simple expression on it + - + + + 7 + + + + 7 + + + + IGAZ + + + =LET(x;3; y;4; x + y) + + + Two parameters, arithmetic + + + + + + 10 + + + + 10 + + + + IGAZ + + + =LET(a;5; a + a) + + + Parameter used more than once + + + + + + 15 + + + + 15 + + + + IGAZ + + + =LET(x;3; y;4; x + x * y) + + + Operator precedence inside the body + + + + + + 5 + + + + 5 + + + + IGAZ + + + =LET(a;-5; IF(a > 0; a; -a)) + + + Function inside the body + + + + + + hi! + + + + hi! + + + + IGAZ + + + =LET(a;"hi"; a & "!") + + + String argument flowing through identity body + + + + + + 2 + + + + 2 + + + + IGAZ + + + =LET(SQRT;4; SQRT(SQRT)) + + + Name precedence matches MSO + + + + + + 100 + + + + 100 + + + + IGAZ + + + =LET(r;N55:N58; SUM(r)) + + + Range as input + + + + + + 6 + + + + 6 + + + + IGAZ + + + =LET(a;1; b;2; c;3; a + b + c) + + + + + + 0 + + + + 0 + + + + IGAZ + + + =LET(a;; b;; c;; a + b + c) + + + Unspecified value is defaulting to 0 + + + + + + 1 + + + + IGAZ + + + + IGAZ + + + =LET(x;7; x > 5) + + + + + + 2 + + + + 2 + + + + IGAZ + + + =ERROR.TYPE(LET(x;0; 1 / x)) + + + Div by 0 + + + + + + 3 + + + + IGAZ + + + =LET(x;1; y; x + y) + + + Missing subexpression + + + + + + 7 + + + + 7 + + + + IGAZ + + + =LET(x;3; LET(y;4; x + y)) + + + Nested LET + + + + + + 16 + + + + 16 + + + + IGAZ + + + =LET(f; LAMBDA(x; x * x); f(4)) + + + LAMBDA in a LET function + + + + + + 6 + + + + 6 + + + + IGAZ + + + =LET(a;{1;2;3}; SUM(a)) + + + Array as input + + + + + + 82 + + + + 82 + + + + IGAZ + + + =SUM(LET(a;{10;11;20}; a * 2)) + + + Jump matrix - array input + + + + + + 200 + + + + 200 + + + + IGAZ + + + =SUM(LET(a;N55:N58; a * 2)) + + + Jump matrix - range input + + + + + + 200 + + + + 200 + + + + IGAZ + + + =SUM(LET(a;DATARANGE; a * 2)) + + + Jump matrix - named range input + + + + + + 120 + + + + 120 + + + + IGAZ + + + =LET(g; LAMBDA(self;n; IF(n <= 1; 1; n * self(self; n - 1))); g(g; 5)) + + + Recursive LAMBDA + + + + + + 100 + + + + 100 + + + + IGAZ + + + =LET(x;100; SUM(x)) + + + If you use SUM in LET, it will use the built-in function not the named LAMBDA + + + + + + 110 + + + + 110 + + + + IGAZ + + + =LET(x;100; f;SUM; f(x)) + + + If you use SUM as a subexpression in LET, the named LAMBDA will be used instead + + + + + + 3 + + + + 3 + + + + IGAZ + + + =LET(f;PLUS2; n;1; f(n)) + + + Named lambda as parameter + + + + + + 4 + + + + 4 + + + + IGAZ + + + =LET(f;COUNT; n;{5.6.7.8}; f(n)) + + + ETA-LAMBDA use in LET as parameter + + + + + + 10 + + + + 10 + + + + IGAZ + + + =LET(f;LAMBDA(x; x * 2); f(5)) + + + LAMBDA as parameter to LET + + + + + + 7 + + + + 7 + + + + IGAZ + + + =LET(f;LAMBDA(n; n + 1); x;5; f(f(x))) + + + Call LAMBDA 2 times + + + + + + 15 + + + + 15 + + + + IGAZ + + + =LET(x;5; x + $N$55) + + + A LET body that closes over a sheet cell + + + + + + 333 + + + + 333 + + + + IGAZ + + + =LET(a;3; LET(b;30; LET(c;300; a + b + c))) + + + Triple curry + + + + + + 20 + + + + 20 + + + + IGAZ + + + =LET(x;20; y;; x + y) + + + Value not provided - second parameter + + + + + + 2 + + + + 2 + + + + IGAZ + + + =LET(x;; y;2; x + y) + + + Value not provided - first parameter + + + + + + 6 + + + + 6 + + + + IGAZ + + + =LET(x;10; LAMBDA(x; x*2)(3)) + + + Name shadowing - LAMBDA within LET + + + + + + 6 + + + + 6 + + + + IGAZ + + + =LET(x;10; LAMBDA(y;x; x*2)(5;3)) + + + + + + 6 + + + + 6 + + + + IGAZ + + + =LET(x;10; LET(x;3; x*2)) + + + Name shadowing - LET within LET + + + + + + 6 + + + + 6 + + + + IGAZ + + + =LET(x;10; LET(y;5; x;3; x*2)) + + + + + + 42 + + + + 42 + + + + IGAZ + + + =LET(x$;42; x$) + + + TODO: x$ probably shouldn't be a valid name + + + + + + Err:508 + + + + IGAZ + + + =LET(AX1;0; 0) + + + AX1 = cell reference name - invalid syntax + + + + + + Err:509 + + + + IGAZ + + + =LET(ab!;0; 0) + + + + + + Err:508 + + + + IGAZ + + + =LET(aa#a;0; 0) + + + + + + Err:508 + + + + IGAZ + + + =LET(a%;0; 0) + + + + + + Err:509 + + + + IGAZ + + + =LET(#REF!;0; 0) + + + + + + Err:508 + + + + IGAZ + + + =LET("x";1; 0) + + + + + + Err:539 + + + + IGAZ + + + =LET(x;1; y;20; z;3; {x,y,z}) + + + Can't create a literal array from parameters + + + + @@ -4772,7 +5642,11 @@ - + + + + + - \ No newline at end of file + diff --git a/sc/qa/unit/data/xlsx/LambdaAndRelatedFunctions.xlsx b/sc/qa/unit/data/xlsx/LambdaAndRelatedFunctions.xlsx deleted file mode 100644 index b958c2dc4a563cbce5f6e7431d05bfdfd474274f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29373 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 z�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 diff --git a/sc/qa/unit/functions_lambda.cxx b/sc/qa/unit/functions_lambda.cxx new file mode 100644 index 000000000000..aefe9b2dd02a --- /dev/null +++ b/sc/qa/unit/functions_lambda.cxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "functions_test.hxx" + +class LambdaFunctionsTest : public FunctionsTest +{ +public: + LambdaFunctionsTest(); + + void testLambdaFormulasFODS(); + + CPPUNIT_TEST_SUITE(LambdaFunctionsTest); + CPPUNIT_TEST(testLambdaFormulasFODS); + CPPUNIT_TEST_SUITE_END(); +}; + +void LambdaFunctionsTest::testLambdaFormulasFODS() +{ + OUString aDirectoryURL + = m_directories.getURLFromSrc(u"/sc/qa/unit/data/functions/lambda/fods/"); + recursiveScan( + test::pass, u"OpenDocument Spreadsheet Flat XML"_ustr, aDirectoryURL, + u"com.sun.star.comp.filter.OdfFlatXml,,com.sun.star.comp.Calc.XMLOasisImporter,com.sun.star.comp.Calc.XMLOasisExporter,,,true"_ustr, + FODS_FORMAT_TYPE, SotClipboardFormatId::NONE, 0, false); +} + +LambdaFunctionsTest::LambdaFunctionsTest() + : FunctionsTest() +{ +} + +CPPUNIT_TEST_SUITE_REGISTRATION(LambdaFunctionsTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/qa/unit/subsequent_filters_test.cxx b/sc/qa/unit/subsequent_filters_test.cxx index cb72d88e7ca5..20c6e9a3b9d5 100644 --- a/sc/qa/unit/subsequent_filters_test.cxx +++ b/sc/qa/unit/subsequent_filters_test.cxx @@ -1811,39 +1811,6 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testExpandedArrayCollapsesOnNewBlockerXLSX) CPPUNIT_ASSERT_EQUAL(SCROW(1), nRows); } -CPPUNIT_TEST_FIXTURE(ScFiltersTest, testLambdaAndRelatedFunctions) -{ - // The document combines a per-formula check of every LAMBDA and - // callable-function result into cell B3 of the first sheet, true only when - // every check passed. Confirm B3 holds as loaded and after a - // recalculation, both before and after a round-trip through the XLSX export. - createScDoc("xlsx/LambdaAndRelatedFunctions.xlsx"); - - ScDocument* pDoc = getScDoc(); - // The result as stored in the file, before the engine recomputes anything. - CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("as loaded, a formula did not match its expected result", - 1.0, pDoc->GetValue(ScAddress(1, 2, 0)), 0.0); - - pDoc->CalcAll(); - CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE( - "after recalculation, a formula did not match its expected result", 1.0, - pDoc->GetValue(ScAddress(1, 2, 0)), 0.0); - - // Write the document back out as XLSX and read it in again. - saveAndReload(TestFilter::XLSX); - - pDoc = getScDoc(); - CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE( - "after save and reload, a formula did not match its expected result", 1.0, - pDoc->GetValue(ScAddress(1, 2, 0)), 0.0); - - pDoc->CalcAll(); - CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE( - "after save, reload and recalculation, a formula did not match its " - "expected result", - 1.0, pDoc->GetValue(ScAddress(1, 2, 0)), 0.0); -} - ScFiltersTest::ScFiltersTest() : ScModelTestBase(u"sc/qa/unit/data"_ustr) { diff --git a/sc/qa/unit/ucalc_formula2.cxx b/sc/qa/unit/ucalc_formula2.cxx index 248d30db3f10..d025ee248118 100644 --- a/sc/qa/unit/ucalc_formula2.cxx +++ b/sc/qa/unit/ucalc_formula2.cxx @@ -203,77 +203,6 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncIF) m_pDoc->DeleteTab(0); } -CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncLAMBDA) -{ - sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); - - m_pDoc->InsertTab(0, u"Formula"_ustr); - - // No parameters, constant body. - m_pDoc->SetString(ScAddress(0, 0, 0), u"=LAMBDA(1)()"_ustr); - CPPUNIT_ASSERT_EQUAL(1.0, m_pDoc->GetValue(ScAddress(0, 0, 0))); - - // One unused parameter, constant body. - m_pDoc->SetString(ScAddress(0, 1, 0), u"=LAMBDA(a; 2)(1)"_ustr); - CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(0, 1, 0))); - - // Identity. - m_pDoc->SetString(ScAddress(0, 2, 0), u"=LAMBDA(a; a)(3)"_ustr); - CPPUNIT_ASSERT_EQUAL(3.0, m_pDoc->GetValue(ScAddress(0, 2, 0))); - - // One parameter, simple expression on it. - m_pDoc->SetString(ScAddress(0, 3, 0), u"=LAMBDA(a; a * 2)(2)"_ustr); - CPPUNIT_ASSERT_EQUAL(4.0, m_pDoc->GetValue(ScAddress(0, 3, 0))); - - // Two parameters, arithmetic. - m_pDoc->SetString(ScAddress(0, 4, 0), u"=LAMBDA(x; y; x + y)(3; 4)"_ustr); - CPPUNIT_ASSERT_EQUAL(7.0, m_pDoc->GetValue(ScAddress(0, 4, 0))); - - // Parameter used more than once. - m_pDoc->SetString(ScAddress(0, 5, 0), u"=LAMBDA(a; a + a)(5)"_ustr); - CPPUNIT_ASSERT_EQUAL(10.0, m_pDoc->GetValue(ScAddress(0, 5, 0))); - - // Operator precedence inside the body. - m_pDoc->SetString(ScAddress(0, 6, 0), u"=LAMBDA(x; y; x * y + x)(3; 4)"_ustr); - CPPUNIT_ASSERT_EQUAL(15.0, m_pDoc->GetValue(ScAddress(0, 6, 0))); - - // Identifiers are case insensitive. - // TODO : should be automatically changed from a to A in - // LAMBDA expression when submitting. - m_pDoc->SetString(ScAddress(0, 7, 0), u"=LAMBDA(A; a * 2)(3)"_ustr); - CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 7, 0))); - - // Function inside the body. - m_pDoc->SetString(ScAddress(0, 8, 0), u"=LAMBDA(a; IF(a > 0; a; -a))(-5)"_ustr); - CPPUNIT_ASSERT_EQUAL(5.0, m_pDoc->GetValue(ScAddress(0, 8, 0))); - - // Nested LAMBDA - m_pDoc->SetString(ScAddress(0, 9, 0), u"=LAMBDA(x;LAMBDA(y; x + y)(10))(5)"_ustr); - CPPUNIT_ASSERT_EQUAL(15.0, m_pDoc->GetValue(ScAddress(0, 9, 0))); - - // String argument flowing through identity body. - m_pDoc->SetString(ScAddress(0, 10, 0), u"=LAMBDA(a; a & \"!\")(\"hi\")"_ustr); - CPPUNIT_ASSERT_EQUAL(u"hi!"_ustr, m_pDoc->GetString(ScAddress(0, 10, 0))); - - // Name precedence matches MSO. - m_pDoc->SetString(ScAddress(0, 11, 0), u"=LAMBDA(SQRT; SQRT(SQRT))(4)"_ustr); - CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(0, 11, 0))); - - // Parameter shadowing: LAMBDA within LAMBDA. - m_pDoc->SetString(ScAddress(0, 12, 0), u"=LAMBDA(x; LAMBDA(x; x * 2)(3))(10)"_ustr); - CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 12, 0))); - m_pDoc->SetString(ScAddress(0, 13, 0), u"=LAMBDA(x; LAMBDA(y; x; x * 2)(5; 3))(10)"_ustr); - CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 13, 0))); - - // Parameter shadowing: LET within LAMBDA. - m_pDoc->SetString(ScAddress(0, 14, 0), u"=LAMBDA(x; LET(x; 3; x * 2))(10)"_ustr); - CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 14, 0))); - m_pDoc->SetString(ScAddress(0, 15, 0), u"=LAMBDA(x; LET(y; 5; x; 3; x * 2))(10)"_ustr); - CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 15, 0))); - - m_pDoc->DeleteTab(0); -} - CPPUNIT_TEST_FIXTURE(TestFormula2, testLambdaBoundedRecursion) { // A lambda stored in a cell can call itself through a reference to that diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index b43c851513cb..a85aa016bfdd 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -10531,10 +10531,14 @@ void ScInterpreter::ScCall( FormulaCallableRef rCallable, sal_uInt8 nArgCount ) // at this point we're dealing with a built-in function // and the stack is set up with the relevant args // we just need to dispatch the OpCode + auto pOldCur = pCur; + auto cOldPar = cPar; FormulaTokenRef pTempToken = new FormulaByteToken(eOpCode, nArgCount); pCur = pTempToken.get(); cPar = nArgCount; DispatchOpCode( eOpCode ); + pCur = pOldCur; + cPar = cOldPar; } /// If pToken contains one or more relative references, they are converted to absolute references @@ -11303,6 +11307,12 @@ void ScInterpreter::ScLet() aCode.Jump(pJump[nJumpCount], pJump[nJumpCount]); return; } + else if (GetRawStackType() != svStringName) + { + PushError(FormulaError::ParameterExpected); + aCode.Jump(pJump[nJumpCount], pJump[nJumpCount]); + return; + } std::vector aParams; std::vector aArgs; @@ -11329,7 +11339,14 @@ void ScInterpreter::ScLet() aArgs.push_back(PopToken()); // the param name is one jump before the current one const FormulaStringNameToken* pToken = GetStringNameToken(pCode[pJump[nJump - 1] + 1]); - aParams.push_back(pToken ? pToken->GetString().getString() : OUString()); + if (pToken) + aParams.push_back(pToken->GetString().getString()); + else + { + PushError(FormulaError::ParameterExpected); + aCode.Jump(pJump[nJumpCount], pJump[nJumpCount]); + return; + } } // the last subformula isn't named