summaryrefslogtreecommitdiff
path: root/fxjs
diff options
context:
space:
mode:
Diffstat (limited to 'fxjs')
-rw-r--r--fxjs/cjs_publicmethods.cpp2
-rw-r--r--fxjs/cjs_publicmethods_embeddertest.cpp36
2 files changed, 37 insertions, 1 deletions
diff --git a/fxjs/cjs_publicmethods.cpp b/fxjs/cjs_publicmethods.cpp
index 30927beac2..74428c3724 100644
--- a/fxjs/cjs_publicmethods.cpp
+++ b/fxjs/cjs_publicmethods.cpp
@@ -1587,7 +1587,7 @@ CJS_Return CJS_PublicMethods::AFSimple_Calculate(
double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0;
v8::Local<v8::Array> FieldNameArray =
- AF_MakeArrayFromList(pRuntime, params[0]);
+ AF_MakeArrayFromList(pRuntime, params[1]);
int nFieldsCount = 0;
for (size_t i = 0; i < pRuntime->GetArrayLength(FieldNameArray); ++i) {
WideString wsFieldName =
diff --git a/fxjs/cjs_publicmethods_embeddertest.cpp b/fxjs/cjs_publicmethods_embeddertest.cpp
index dbab0817ce..874f59f5ae 100644
--- a/fxjs/cjs_publicmethods_embeddertest.cpp
+++ b/fxjs/cjs_publicmethods_embeddertest.cpp
@@ -3,8 +3,10 @@
// found in the LICENSE file.
#include <cmath>
+#include <vector>
#include "core/fxcrt/fx_string.h"
+#include "fxjs/cjs_event_context.h"
#include "fxjs/cjs_publicmethods.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/js_embedder_test.h"
@@ -160,3 +162,37 @@ TEST_F(CJS_PublicMethodsEmbedderTest, MakeFormatDate) {
CJS_PublicMethods::MakeFormatDate(3947356800000.0, L"mmddyyyy");
EXPECT_STREQ(L"02012095", formatted_date.c_str());
}
+
+TEST_F(CJS_PublicMethodsEmbedderTest, AFSimple_CalculateSum) {
+ v8::Isolate::Scope isolate_scope(isolate());
+ v8::HandleScope handle_scope(isolate());
+ v8::Context::Scope context_scope(GetV8Context());
+
+ EXPECT_TRUE(OpenDocument("calculate.pdf"));
+ auto* page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ CJS_Runtime runtime(static_cast<CPDFSDK_FormFillEnvironment*>(form_handle()));
+ runtime.NewEventContext();
+
+ WideString result;
+ runtime.GetCurrentEventContext()->GetEventHandler()->m_pValue = &result;
+
+ auto ary = runtime.NewArray();
+
+ runtime.PutArrayElement(ary, 0, runtime.NewString(L"Calc1_A"));
+ runtime.PutArrayElement(ary, 1, runtime.NewString(L"Calc1_B"));
+
+ std::vector<v8::Local<v8::Value>> params;
+ params.push_back(runtime.NewString("SUM"));
+ params.push_back(ary);
+
+ CJS_Return ret = CJS_PublicMethods::AFSimple_Calculate(&runtime, params);
+ UnloadPage(page);
+
+ runtime.GetCurrentEventContext()->GetEventHandler()->m_pValue = nullptr;
+
+ ASSERT_TRUE(!ret.HasError());
+ ASSERT_TRUE(!ret.HasReturn());
+ ASSERT_EQ(L"7", result);
+}