| // Copyright 2022 The PDFium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "fxjs/xfa/cfxjse_formcalc_context.h" |
| |
| #include "core/fxcrt/bytestring.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| TEST(FormCalcContextTest, GenerateSomExpression) { |
| ByteString result = |
| CFXJSE_FormCalcContext::GenerateSomExpression("", 0, 0, /*bIsStar=*/true); |
| EXPECT_EQ(result, "[*]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("foo", 0, 0, |
| /*bIsStar=*/true); |
| EXPECT_EQ(result, "foo[*]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("foo", 0, 0, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "foo"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("fu", 1, 0, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "fu[0]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("food", 1, 99, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "food[99]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("foot", 1, -65, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "foot[-65]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("football", 2, 0, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "football[0]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("foosball", 2, 123, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "foosball[+123]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("bar", 2, -654, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "bar[-654]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("barb", 2, 2147483647, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "barb[+2147483647]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression( |
| "bart", 2, -2147483648, /*bIsStar=*/false); |
| EXPECT_EQ(result, "bart[-0]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("bark", 3, 0, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "bark[0]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("bard", 3, 357, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "bard[-357]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("bars", 3, -9876, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "bars[9876]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression("cars", 3, 2147483647, |
| /*bIsStar=*/false); |
| EXPECT_EQ(result, "cars[-2147483647]"); |
| |
| result = CFXJSE_FormCalcContext::GenerateSomExpression( |
| "mars", 3, -2147483648, /*bIsStar=*/false); |
| EXPECT_EQ(result, "mars[0]"); |
| } |
| |
| TEST(FormCalcContextTest, IsIsoDateFormat) { |
| int32_t year = 0; |
| int32_t month = 0; |
| int32_t day = 0; |
| |
| EXPECT_FALSE( |
| CFXJSE_FormCalcContext::IsIsoDateFormat("", &year, &month, &day)); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoDateFormat("2023-06-24", &year, |
| &month, &day)); |
| EXPECT_EQ(2023, year); |
| EXPECT_EQ(6, month); |
| EXPECT_EQ(24, day); |
| } |
| |
| TEST(FormCalcContextTest, IsIsoTimeFormat) { |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat(":")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("::")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat(":::")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2:")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:3")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20304")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:4")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2030405")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40:5")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2030")); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040")); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040.001")); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40.001")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040z")); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40z")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040+07:30")); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40+07:30")); |
| |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040-07:30")); |
| EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40-07:30")); |
| |
| // Range errors. |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("243040-07:30")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("24:30:40-07:30")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("206040-07:30")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:60:40-07:30")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203061-07:30")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:61-07:30")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040-24:30")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40-24:30")); |
| |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040-07:60")); |
| EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40-07:60")); |
| } |