xref: /aosp_15_r20/external/pdfium/fxjs/xfa/cfxjse_formcalc_context_unittest.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2022 The PDFium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "fxjs/xfa/cfxjse_formcalc_context.h"
6 
7 #include "core/fxcrt/bytestring.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
TEST(FormCalcContextTest,GenerateSomExpression)10 TEST(FormCalcContextTest, GenerateSomExpression) {
11   ByteString result =
12       CFXJSE_FormCalcContext::GenerateSomExpression("", 0, 0, /*bIsStar=*/true);
13   EXPECT_EQ(result, "[*]");
14 
15   result = CFXJSE_FormCalcContext::GenerateSomExpression("foo", 0, 0,
16                                                          /*bIsStar=*/true);
17   EXPECT_EQ(result, "foo[*]");
18 
19   result = CFXJSE_FormCalcContext::GenerateSomExpression("foo", 0, 0,
20                                                          /*bIsStar=*/false);
21   EXPECT_EQ(result, "foo");
22 
23   result = CFXJSE_FormCalcContext::GenerateSomExpression("fu", 1, 0,
24                                                          /*bIsStar=*/false);
25   EXPECT_EQ(result, "fu[0]");
26 
27   result = CFXJSE_FormCalcContext::GenerateSomExpression("food", 1, 99,
28                                                          /*bIsStar=*/false);
29   EXPECT_EQ(result, "food[99]");
30 
31   result = CFXJSE_FormCalcContext::GenerateSomExpression("foot", 1, -65,
32                                                          /*bIsStar=*/false);
33   EXPECT_EQ(result, "foot[-65]");
34 
35   result = CFXJSE_FormCalcContext::GenerateSomExpression("football", 2, 0,
36                                                          /*bIsStar=*/false);
37   EXPECT_EQ(result, "football[0]");
38 
39   result = CFXJSE_FormCalcContext::GenerateSomExpression("foosball", 2, 123,
40                                                          /*bIsStar=*/false);
41   EXPECT_EQ(result, "foosball[+123]");
42 
43   result = CFXJSE_FormCalcContext::GenerateSomExpression("bar", 2, -654,
44                                                          /*bIsStar=*/false);
45   EXPECT_EQ(result, "bar[-654]");
46 
47   result = CFXJSE_FormCalcContext::GenerateSomExpression("barb", 2, 2147483647,
48                                                          /*bIsStar=*/false);
49   EXPECT_EQ(result, "barb[+2147483647]");
50 
51   result = CFXJSE_FormCalcContext::GenerateSomExpression(
52       "bart", 2, -2147483648, /*bIsStar=*/false);
53   EXPECT_EQ(result, "bart[-0]");
54 
55   result = CFXJSE_FormCalcContext::GenerateSomExpression("bark", 3, 0,
56                                                          /*bIsStar=*/false);
57   EXPECT_EQ(result, "bark[0]");
58 
59   result = CFXJSE_FormCalcContext::GenerateSomExpression("bard", 3, 357,
60                                                          /*bIsStar=*/false);
61   EXPECT_EQ(result, "bard[-357]");
62 
63   result = CFXJSE_FormCalcContext::GenerateSomExpression("bars", 3, -9876,
64                                                          /*bIsStar=*/false);
65   EXPECT_EQ(result, "bars[9876]");
66 
67   result = CFXJSE_FormCalcContext::GenerateSomExpression("cars", 3, 2147483647,
68                                                          /*bIsStar=*/false);
69   EXPECT_EQ(result, "cars[-2147483647]");
70 
71   result = CFXJSE_FormCalcContext::GenerateSomExpression(
72       "mars", 3, -2147483648, /*bIsStar=*/false);
73   EXPECT_EQ(result, "mars[0]");
74 }
75 
TEST(FormCalcContextTest,IsIsoDateFormat)76 TEST(FormCalcContextTest, IsIsoDateFormat) {
77   int32_t year = 0;
78   int32_t month = 0;
79   int32_t day = 0;
80 
81   EXPECT_FALSE(
82       CFXJSE_FormCalcContext::IsIsoDateFormat("", &year, &month, &day));
83   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoDateFormat("2023-06-24", &year,
84                                                       &month, &day));
85   EXPECT_EQ(2023, year);
86   EXPECT_EQ(6, month);
87   EXPECT_EQ(24, day);
88 }
89 
TEST(FormCalcContextTest,IsIsoTimeFormat)90 TEST(FormCalcContextTest, IsIsoTimeFormat) {
91   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat(""));
92   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat(":"));
93   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("::"));
94   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat(":::"));
95 
96   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2"));
97   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2:"));
98 
99   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203"));
100   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:3"));
101 
102   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20304"));
103   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:4"));
104 
105   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2030405"));
106   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40:5"));
107 
108   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20"));
109 
110   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("2030"));
111   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30"));
112 
113   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040"));
114   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40"));
115 
116   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040.001"));
117   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40.001"));
118 
119   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040z"));
120   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40z"));
121 
122   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040+07:30"));
123   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40+07:30"));
124 
125   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040-07:30"));
126   EXPECT_TRUE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40-07:30"));
127 
128   // Range errors.
129   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("243040-07:30"));
130   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("24:30:40-07:30"));
131 
132   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("206040-07:30"));
133   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:60:40-07:30"));
134 
135   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203061-07:30"));
136   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:61-07:30"));
137 
138   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040-24:30"));
139   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40-24:30"));
140 
141   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("203040-07:60"));
142   EXPECT_FALSE(CFXJSE_FormCalcContext::IsIsoTimeFormat("20:30:40-07:60"));
143 }
144