Add Time2Num tests that involve timezones.
Use ScopedSetTZ to add more Time2Num tests for some interesting
timezones.
Change-Id: Ic7036a14fbc7eb5b5fbd82ed7c028cb88987ad7b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/78770
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp b/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp
index 1fd347b..d356aaf 100644
--- a/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp
+++ b/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp
@@ -9,6 +9,7 @@
#include "fxjs/xfa/cfxjse_isolatetracker.h"
#include "fxjs/xfa/cfxjse_value.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/scoped_set_tz.h"
#include "testing/xfa_js_embedder_test.h"
#include "third_party/base/stl_util.h"
#include "xfa/fxfa/cxfa_eventparam.h"
@@ -527,6 +528,29 @@
ExecuteExpectInt32(tests[i].program, tests[i].result);
}
+TEST_F(CFXJSE_FormCalcContextEmbedderTest, Time2NumWithTZ) {
+ ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
+
+ static constexpr const char* kTimeZones[] = {
+ "UTC+14", "UTC-14", "UTC+9:30", "UTC-0:30",
+ "UTC+0:30", "UTC-0:01", "UTC+0:01"};
+ for (const char* tz : kTimeZones) {
+ ScopedSetTZ scoped_set_tz(tz);
+ ExecuteExpectInt32("Time2Num(\"00:00:00 GMT\", \"HH:MM:SS Z\")", 1);
+ ExecuteExpectInt32("Time2Num(\"11:59:59 GMT\", \"HH:MM:SS Z\")", 43199001);
+ ExecuteExpectInt32("Time2Num(\"12:00:00 GMT\", \"HH:MM:SS Z\")", 43200001);
+ ExecuteExpectInt32("Time2Num(\"23:59:59 GMT\", \"HH:MM:SS Z\")", 86399001);
+ }
+ {
+ ScopedSetTZ scoped_set_tz("UTC-3:00");
+ ExecuteExpectInt32("Time2Num(\"1:13:13 PM\")", 36793001);
+ ExecuteExpectInt32(
+ "Time2Num(\"13:13:13 GMT\", \"HH:MM:SS Z\") - "
+ "Time2Num(\"13:13:13\", \"HH:MM:SS\")",
+ 10800000);
+ }
+}
+
TEST_F(CFXJSE_FormCalcContextEmbedderTest, TimeFmt) {
ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));