De-duplicate some code in cfxjse_formcalc_context_embeddertest.cpp
Split off from https://pdfium-review.googlesource.com/c/pdfium/+/75950
since this can happen independently of any implementation.
Change-Id: I063e4c2e0d5139e59db2a458b68da2aa11403df0
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/76010
Reviewed-by: Daniel Hosseinian <dhoss@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp b/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp
index 545c3d8..ddd0eda 100644
--- a/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp
+++ b/fxjs/xfa/cfxjse_formcalc_context_embeddertest.cpp
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "fxjs/fxv8.h"
#include "fxjs/xfa/cfxjse_engine.h"
#include "fxjs/xfa/cfxjse_value.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -15,8 +16,62 @@
~CFXJSE_FormCalcContextEmbedderTest() override = default;
protected:
- bool ExecuteExpectNull(ByteStringView input) {
- return Execute(input) && GetValue()->IsNull(isolate());
+ void ExecuteExpectError(ByteStringView input) {
+ EXPECT_FALSE(Execute(input)) << "Program: " << input;
+ }
+
+ void ExecuteExpectNull(ByteStringView input) {
+ EXPECT_TRUE(Execute(input)) << "Program: " << input;
+
+ CFXJSE_Value* value = GetValue();
+ EXPECT_TRUE(value->IsNull(isolate())) << "Program: " << input;
+ }
+
+ void ExecuteExpectBool(ByteStringView input, bool expected) {
+ EXPECT_TRUE(Execute(input)) << "Program: " << input;
+
+ CFXJSE_Value* value = GetValue();
+ // Yes, bools might be integers, somehow.
+ EXPECT_TRUE(value->IsBoolean(isolate()) || value->IsInteger(isolate()))
+ << "Program: " << input;
+ EXPECT_EQ(expected, value->ToBoolean(isolate())) << "Program: " << input;
+ }
+
+ void ExecuteExpectInt32(ByteStringView input, int32_t expected) {
+ EXPECT_TRUE(Execute(input)) << "Program: " << input;
+
+ CFXJSE_Value* value = GetValue();
+ EXPECT_TRUE(value->IsInteger(isolate())) << "Program: " << input;
+ EXPECT_EQ(expected, value->ToInteger(isolate())) << "Program: " << input;
+ }
+
+ void ExecuteExpectFloat(ByteStringView input, float expected) {
+ EXPECT_TRUE(Execute(input)) << "Program: " << input;
+
+ CFXJSE_Value* value = GetValue();
+ EXPECT_TRUE(value->IsNumber(isolate())) << "Program: " << input;
+ EXPECT_FLOAT_EQ(expected, value->ToFloat(isolate()))
+ << "Program: " << input;
+ }
+
+ void ExecuteExpectFloatNear(ByteStringView input,
+ float expected,
+ float precision) {
+ EXPECT_TRUE(Execute(input)) << "Program: " << input;
+
+ CFXJSE_Value* value = GetValue();
+ EXPECT_TRUE(value->IsNumber(isolate())) << "Program: " << input;
+ EXPECT_NEAR(expected, value->ToFloat(isolate()), precision)
+ << "Program: " << input;
+ }
+
+ void ExecuteExpectString(ByteStringView input, const char* expected) {
+ EXPECT_TRUE(Execute(input)) << "Program: " << input;
+
+ CFXJSE_Value* value = GetValue();
+ EXPECT_TRUE(value->IsString(isolate())) << "Program: " << input;
+ EXPECT_STREQ(expected, value->ToString(isolate()).c_str())
+ << "Program: " << input;
}
};
@@ -33,13 +88,7 @@
TEST_F(CFXJSE_FormCalcContextEmbedderTest, TranslateNumber) {
ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
-
- const char input[] = "123";
- EXPECT_TRUE(Execute(input));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(123, value->ToInteger(isolate())) << "Program: " << input;
+ ExecuteExpectInt32("123", 123);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Numeric) {
@@ -73,14 +122,8 @@
"endif",
0}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Strings) {
@@ -94,15 +137,8 @@
{"concat(\"The total is \", 2, \" dollars and \", 57, \" cents.\")",
"The total is 2 dollars and 57 cents."}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Booleans) {
@@ -135,14 +171,8 @@
{"12 >= 12", true},
{"\"true\" < \"false\"", false}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate())) << "Program: " << tests[i].program;
- EXPECT_EQ(tests[i].result, value->ToBoolean(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectBool(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Abs) {
@@ -153,14 +183,8 @@
float result;
} tests[] = {{"Abs(1.03)", 1.03f}, {"Abs(-1.03)", 1.03f}, {"Abs(0)", 0.0f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Avg) {
@@ -171,14 +195,8 @@
float result;
} tests[] = {{"Avg(0, 32, 16)", 16.0f}, {"Avg(2.5, 17, null)", 9.75f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Ceil) {
@@ -189,14 +207,8 @@
int result;
} tests[] = {{"Ceil(2.5875)", 3}, {"Ceil(-5.9)", -5}, {"Ceil(\"abc\")", 0}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Count) {
@@ -207,14 +219,8 @@
int result;
} tests[] = {{"Count(\"Tony\", \"Blue\", 41)", 3}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Floor) {
@@ -227,14 +233,8 @@
{"Floor(5.999965342)", 5},
{"Floor(3.2 * 15)", 48}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Max) {
@@ -247,14 +247,8 @@
{"Max(\"abc\", 15, \"Tony Blue\")", 15},
{"Max(\"abc\")", 0}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Min) {
@@ -269,14 +263,8 @@
// {"Min(\"abc\", 15, \"Tony Blue\")", 15},
{"Min(\"abc\")", 0}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Mod) {
@@ -287,14 +275,8 @@
int result;
} tests[] = {{"Mod(64, -3)", 1}, {"Mod(-13, 3)", -1}, {"Mod(\"abc\", 2)", 0}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Round) {
@@ -308,14 +290,8 @@
{"Round(8.9897, \"abc\")", 9.0f},
{"Round(FV(400, 0.10/12, 30*12), 2)", 904195.17f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate())) << "Program: " << tests[i].program;
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Sum) {
@@ -328,14 +304,8 @@
{"Sum(-2, 4, -6, 8)", 4},
{"Sum(4, 16, \"abc\", 19)", 39}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
// TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_Date) {
@@ -347,7 +317,7 @@
// EXPECT_TRUE(Execute("Date()"));
-// CFXJSE_Value* value = GetValue();
+// v8::Local<v8::Value> value = GetValue();
// EXPECT_TRUE(value->IsNumber());
// EXPECT_EQ(days, value->ToInteger());
// }
@@ -367,14 +337,8 @@
{"Date2Num(\"1/3/00\", \"D/M/YY\") - Date2Num(\"1/2/00\", \"D/M/YY\")",
29}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DateFmt) {
@@ -390,15 +354,8 @@
// {"DateFmt(4, \"fr_FR\")", "EEE D' MMMM YYYY"}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, IsoDate2Num) {
@@ -413,14 +370,8 @@
{"IsoDate2Num(\"19960315T20:20:20\")", 35138},
{"IsoDate2Num(\"2000-03-01\") - IsoDate2Num(\"20000201\")", 29}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_IsoTime2Num) {
@@ -431,14 +382,8 @@
int result;
} tests[] = {{"IsoTime2Num(\"00:00:00Z\")", 1}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, LocalDateFmt) {
@@ -452,15 +397,8 @@
{"LocalDateFmt(3, \"de_CH\")", "t. MMMM jjjj"},
{"LocalDateFmt(4, \"fr_FR\")", "EEEE j MMMM aaaa"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_LocalTimeFmt) {
@@ -474,15 +412,8 @@
{"LocalTimeFmt(3, \"de_CH\")", "HH:mm:ss z"},
{"LocalTimeFmt(4, \"fr_FR\")", "HH' h 'mm z"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Num2Date) {
@@ -499,15 +430,8 @@
// "Jan 1, 1902"}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate())) << "Program: " << tests[i].program;
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_Num2GMTime) {
@@ -523,15 +447,8 @@
{"Num2GMTime(43993001, TimeFmt(4, \"de_DE\"), \"de_DE\")",
"12.13 Uhr GMT"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
// TODO(dsinclair): Broken on Mac ...
@@ -543,15 +460,8 @@
const char* result;
} tests[] = {{"Num2Time(1, \"HH:MM:SS\")", "00:00:00"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
// TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_Time) {
@@ -562,7 +472,7 @@
// EXPECT_TRUE(Execute("Time()"));
-// CFXJSE_Value* value = GetValue();
+// v8::Local<v8::Value> value = GetValue();
// EXPECT_TRUE(value->IsInteger());
// EXPECT_EQ(tp.tv_sec * 1000L + tp.tv_usec / 1000, value->ToInteger())
// << "Program: Time()";
@@ -578,14 +488,8 @@
// {"Time2Num(\"00:00:00 GMT\", \"HH:MM:SS Z\")", 1},
{"Time2Num(\"13:13:13 GMT\", \"HH:MM:SS Z\", \"fr_FR\")", 47593001}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, TimeFmt) {
@@ -601,15 +505,8 @@
// {"TimeFmt(4, \"de_DE\")", "H.MM' Uhr 'Z"}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Apr) {
@@ -621,14 +518,8 @@
} tests[] = {{"Apr(35000, 269.50, 360)", 0.08515404566f},
{"Apr(210000 * 0.75, 850 + 110, 25 * 26)", 0.07161332404f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_NEAR(tests[i].result, value->ToFloat(isolate()), 0.000001)
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloatNear(tests[i].program, tests[i].result, 0.000001);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, CTerm) {
@@ -643,14 +534,8 @@
// {"CTerm(0.0275 + 0.0025, 1000000, 55000 * 0.10)", 176.02226044975f}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, FV) {
@@ -662,14 +547,8 @@
} tests[] = {{"FV(400, 0.10 / 12, 30 * 12)", 904195.16991842445f},
{"FV(1000, 0.075 / 4, 10 * 4)", 58791.96145535981f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, IPmt) {
@@ -682,14 +561,8 @@
{"IPmt(160000, 0.0475, 980, 24, 12)", 7103.80833569485f},
{"IPmt(15000, 0.065, 65.50, 15, 1)", 0.0f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, NPV) {
@@ -702,14 +575,8 @@
{"NPV(0.10, 500, 1500, 4000, 10000)", 11529.60863329007f},
{"NPV(0.0275 / 12, 50, 60, 40, 100, 25)", 273.14193838457f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate())) << "Program: " << tests[i].program;
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Pmt) {
@@ -721,14 +588,8 @@
} tests[] = {// {"Pmt(150000, 0.0475 / 12, 25 * 12)", 855.17604207164f},
{"Pmt(25000, 0.085, 12)", 3403.82145169876f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, PPmt) {
@@ -743,14 +604,8 @@
// {"PPmt(15000, 0.065, 65.50, 15, 1)", 0.0f}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, PV) {
@@ -764,14 +619,8 @@
// {"PV(1000, 0.075 / 4, 10 * 4)", 58791.96145535981f}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Rate) {
@@ -783,14 +632,8 @@
} tests[] = {{"Rate(12000, 8000, 5)", 0.0844717712f},
{"Rate(10000, 0.25 * 5000, 4 * 12)", 0.04427378243f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_NEAR(tests[i].result, value->ToFloat(isolate()), 0.000001)
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloatNear(tests[i].program, tests[i].result, 0.000001);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Term) {
@@ -802,14 +645,8 @@
} tests[] = {// {"Term(475, .05, 1500)", 3.00477517728f},
{"Term(2500, 0.0275 + 0.0025, 5000)", 1.97128786369f}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Choose) {
@@ -824,24 +661,13 @@
{"Choose(20/3, \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\")",
"F"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Exists) {
ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
-
- EXPECT_TRUE(Execute("Exists(\"hello world\")"));
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_FALSE(value->ToBoolean(isolate()));
+ ExecuteExpectBool("Exists(\"hello world\")", false);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, HasValue) {
@@ -852,14 +678,8 @@
bool result;
} tests[] = {{"HasValue(2)", true}, {"HasValue(\" \")", false}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate())) << "Program: " << tests[i].program;
- EXPECT_EQ(tests[i].result, value->ToBoolean(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectBool(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Oneof) {
@@ -877,14 +697,8 @@
{"Oneof(3, null, null)", false},
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate())) << "Program: " << tests[i].program;
- EXPECT_EQ(tests[i].result, value->ToBoolean(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectBool(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Within) {
@@ -897,14 +711,8 @@
{"Within(1.5, 0, 2)", true},
{"Within(-1, 0, 2)", false}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate())) << "Program: " << tests[i].program;
- EXPECT_EQ(tests[i].result, value->ToBoolean(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectBool(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Eval) {
@@ -915,14 +723,8 @@
int result;
} tests[] = {{"eval(\"10*3+5*4\")", 50}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_Null) {
@@ -934,21 +736,10 @@
} tests[] = {{"Null()", "null"},
{"Concat(\"ABC\", Null(), \"DEF\")", "ABCDEF"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
-
- EXPECT_TRUE(Execute("Null() + 5"));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(5, value->ToInteger(isolate()));
+ ExecuteExpectInt32("Null() + 5", 5);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Ref) {
@@ -959,15 +750,8 @@
const char* result;
} tests[] = {{"Ref(\"10*3+5*4\")", "10*3+5*4"}, {"Ref(\"hello\")", "hello"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, UnitType) {
@@ -983,15 +767,8 @@
{"UnitType(\"2.zero cm\")", "in"},
{"UnitType(\"kilometers\")", "in"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, UnitValue) {
@@ -1007,14 +784,8 @@
// {"UnitType(\"5.08cm\", \"kilograms\")", 2.0f}
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(tests[i].result, value->ToFloat(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectFloat(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, At) {
@@ -1027,14 +798,8 @@
{"At(\"ABCDEFGH\", \"F\")", 6},
{"At(23412931298471, 29)", 5}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectInt32(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Concat) {
@@ -1049,15 +814,8 @@
"You owe One Thousand One Hundred Fifty-four Dollars And "
"Sixty-seven Cents."}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Decode) {
@@ -1093,14 +851,8 @@
{R"(Decode("?%"))", "?"},
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Encode) {
@@ -1129,15 +881,8 @@
#endif // !defined(OS_WIN)
};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_Format) {
@@ -1149,15 +894,8 @@
} tests[] = {{"Format(\"MMM D, YYYY\", \"20020901\")", "Sep 1, 2002"},
{"Format(\"$9,999,999.99\", 1234567.89)", "$1,234,567.89"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Left) {
@@ -1169,15 +907,8 @@
} tests[] = {{"Left(\"ABCDEFGH\", 3)", "ABC"},
{"Left(\"Tony Blue\", 5)", "Tony "}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Len) {
@@ -1189,14 +920,8 @@
} tests[] = {
{"Len(\"ABCDEFGH\")", 8}, {"Len(4)", 1}, {"Len(Str(4.532, 6, 4))", 6}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsInteger(isolate()));
- EXPECT_EQ(tests[i].result, value->ToInteger(isolate()))
- << "Program: " << tests[i].program;
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectBool(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Lower) {
@@ -1209,15 +934,8 @@
{"Lower(\"21 Main St.\")", "21 main st."},
{"Lower(15)", "15"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
// This is testing for an OOB read, so will likely only fail under ASAN.
@@ -1239,15 +957,8 @@
} tests[] = {{"Ltrim(\" ABCD\")", "ABCD"},
{"Ltrim(Rtrim(\" Tony Blue \"))", "Tony Blue"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, DISABLED_Parse) {
@@ -1258,20 +969,11 @@
const char* result;
} tests[] = {{"Parse(\"MMM D, YYYY\", \"Sep 1, 2002\")", "2002-09-01"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
-
- EXPECT_TRUE(Execute("Parse(\"$9,999,999.99\", \"$1,234,567.89\")"));
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsNumber(isolate()));
- EXPECT_FLOAT_EQ(1234567.89f, value->ToFloat(isolate()));
+ ExecuteExpectFloat("Parse(\"$9,999,999.99\", \"$1,234,567.89\")",
+ 1234567.89f);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Replace) {
@@ -1284,15 +986,8 @@
{"Replace(\"ABCDEFGH\", \"D\")", "ABCEFGH"},
{"Replace(\"ABCDEFGH\", \"d\")", "ABCDEFGH"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Right) {
@@ -1304,15 +999,8 @@
} tests[] = {{"Right(\"ABCDEFGH\", 3)", "FGH"},
{"Right(\"Tony Blue\", 5)", " Blue"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Rtrim) {
@@ -1324,15 +1012,8 @@
} tests[] = {{"Rtrim(\"ABCD \")", "ABCD"},
{"Rtrim(\"Tony Blue \t\")", "Tony Blue"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Space) {
@@ -1344,15 +1025,8 @@
} tests[] = {{"Space(5)", " "},
{"Concat(\"Tony\", Space(1), \"Blue\")", "Tony Blue"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Str) {
@@ -1366,15 +1040,8 @@
{"Str(234.458, 4)", " 234"},
{"Str(31.2345, 4, 2)", "****"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Stuff) {
@@ -1388,34 +1055,27 @@
{"Stuff(\"members-list@myweb.com\", 0, 0, \"cc:\")",
"cc:members-list@myweb.com"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Substr) {
ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
// Test wrong number of parameters.
- EXPECT_FALSE(Execute("Substr()"));
- EXPECT_FALSE(Execute("Substr(1)"));
- EXPECT_FALSE(Execute("Substr(1, 2)"));
- EXPECT_FALSE(Execute("Substr(1, 2, 3, 4)"));
+ ExecuteExpectError("Substr()");
+ ExecuteExpectError("Substr(1)");
+ ExecuteExpectError("Substr(1, 2)");
+ ExecuteExpectError("Substr(1, 2, 3, 4)");
// Test null input.
- EXPECT_TRUE(ExecuteExpectNull("Substr(null, 0, 4)"));
- EXPECT_TRUE(ExecuteExpectNull("Substr(\"ABCDEFG\", null, 4)"));
- EXPECT_TRUE(ExecuteExpectNull("Substr(\"ABCDEFG\", 0, null)"));
- EXPECT_TRUE(ExecuteExpectNull("Substr(null, null, 4)"));
- EXPECT_TRUE(ExecuteExpectNull("Substr(null, 0, null)"));
- EXPECT_TRUE(ExecuteExpectNull("Substr(\"ABCDEFG\", null, null)"));
- EXPECT_TRUE(ExecuteExpectNull("Substr(null, null, null)"));
+ ExecuteExpectNull("Substr(null, 0, 4)");
+ ExecuteExpectNull("Substr(\"ABCDEFG\", null, 4)");
+ ExecuteExpectNull("Substr(\"ABCDEFG\", 0, null)");
+ ExecuteExpectNull("Substr(null, null, 4)");
+ ExecuteExpectNull("Substr(null, 0, null)");
+ ExecuteExpectNull("Substr(\"ABCDEFG\", null, null)");
+ ExecuteExpectNull("Substr(null, null, null)");
struct {
const char* program;
@@ -1435,20 +1095,12 @@
{"Substr(3214, 2, 1)", "2"},
{"Substr(\"21 Waterloo St.\", 4, 5)", "Water"}};
- for (const auto& test : kTests) {
- EXPECT_TRUE(Execute(test.program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(test.result, value->ToString(isolate()).c_str())
- << "Program: " << test.program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(kTests); ++i)
+ ExecuteExpectString(kTests[i].program, kTests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Uuid) {
ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
-
EXPECT_TRUE(Execute("Uuid()"));
CFXJSE_Value* value = GetValue();
@@ -1465,15 +1117,8 @@
{"Upper(\"21 Main St.\")", "21 MAIN ST."},
{"Upper(15)", "15"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, WordNum) {
@@ -1491,15 +1136,8 @@
"One Thousand One Hundred Fifty-four Dollars And Sixty-seven Cents"},
{"WordNum(43, 2)", "Forty-three Dollars And Zero Cents"}};
- for (size_t i = 0; i < pdfium::size(tests); ++i) {
- EXPECT_TRUE(Execute(tests[i].program));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ(tests[i].result, value->ToString(isolate()).c_str())
- << "Program: " << tests[i].program << " Result: '"
- << value->ToString(isolate()) << "'";
- }
+ for (size_t i = 0; i < pdfium::size(tests); ++i)
+ ExecuteExpectString(tests[i].program, tests[i].result);
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, Get) {
@@ -1533,11 +1171,7 @@
ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
const char test[] = {"$form.form1.TextField11.getAttribute(\"h\")"};
- EXPECT_TRUE(Execute(test));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ("12.7mm", value->ToString(isolate()).c_str());
+ ExecuteExpectString(test, "12.7mm");
}
TEST_F(CFXJSE_FormCalcContextEmbedderTest, GetXFAEventChange) {
@@ -1550,11 +1184,7 @@
context->SetEventParam(¶ms);
const char test[] = {"xfa.event.change"};
- EXPECT_TRUE(Execute(test));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsString(isolate()));
- EXPECT_STREQ("changed", value->ToString(isolate()).c_str());
+ ExecuteExpectString(test, "changed");
context->SetEventParam(nullptr);
}
@@ -1650,16 +1280,9 @@
CFXJSE_Engine* context = GetScriptContext();
context->SetEventParam(¶ms);
-
- EXPECT_TRUE(Execute("xfa.event.cancelAction"));
-
- CFXJSE_Value* value = GetValue();
- EXPECT_TRUE(value->IsBoolean(isolate()));
- EXPECT_FALSE(value->ToBoolean(isolate()));
-
+ ExecuteExpectBool("xfa.event.cancelAction", false);
EXPECT_TRUE(Execute("xfa.event.cancelAction = \"true\""));
EXPECT_TRUE(params.m_bCancelAction);
-
context->SetEventParam(nullptr);
}