Fix incorrect CPDFSDK_PageView::CountAnnots().
[pdfium.git] / core / src / fxcrt / fx_bidi_unittest.cpp
1 // Copyright 2015 PDFium Authors. All rights reserved.
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 "testing/gtest/include/gtest/gtest.h"
6 #include "../../include/fxcrt/fx_bidi.h"
7
8 namespace {
9
10 const FX_WCHAR kNeutralChar = 32;
11 const FX_WCHAR kLeftChar = 65;
12 const FX_WCHAR kRightChar = 1424;
13
14 }  // namespace
15
16 TEST(fxcrt, BidiCharEmpty) {
17   int32_t start = -1;
18   int32_t count = -1;
19   CFX_BidiChar bidi;
20   CFX_BidiChar::Direction dir = bidi.GetBidiInfo(nullptr, nullptr);
21   EXPECT_EQ(CFX_BidiChar::NEUTRAL, dir);
22
23   dir = bidi.GetBidiInfo(&start, nullptr);
24   EXPECT_EQ(CFX_BidiChar::NEUTRAL, dir);
25   EXPECT_EQ(0, start);
26
27   dir = bidi.GetBidiInfo(nullptr, &count);
28   EXPECT_EQ(CFX_BidiChar::NEUTRAL, dir);
29   EXPECT_EQ(0, count);
30
31   start = -1;
32   count = -1;
33   dir = bidi.GetBidiInfo(&start, &count);
34   EXPECT_EQ(CFX_BidiChar::NEUTRAL, dir);
35   EXPECT_EQ(0, start);
36   EXPECT_EQ(0, count);
37
38   EXPECT_FALSE(bidi.EndChar());
39 }
40
41 TEST(fxcrt, BidiCharLeft) {
42   int32_t start = -1;
43   int32_t count = -1;
44   CFX_BidiChar bidi;
45
46   EXPECT_TRUE(bidi.AppendChar(kLeftChar));
47   CFX_BidiChar::Direction dir = bidi.GetBidiInfo(&start, &count);
48   EXPECT_EQ(0, start);
49   EXPECT_EQ(0, count);
50
51   EXPECT_FALSE(bidi.AppendChar(kLeftChar));
52   EXPECT_FALSE(bidi.AppendChar(kLeftChar));
53
54   dir = bidi.GetBidiInfo(&start, &count);
55   EXPECT_EQ(CFX_BidiChar::NEUTRAL, dir);
56   EXPECT_EQ(0, start);
57   EXPECT_EQ(0, count);
58
59   EXPECT_TRUE(bidi.EndChar());
60   dir = bidi.GetBidiInfo(&start, &count);
61   EXPECT_EQ(CFX_BidiChar::LEFT, dir);
62   EXPECT_EQ(0, start);
63   EXPECT_EQ(3, count);
64
65   EXPECT_FALSE(bidi.EndChar());
66 }
67
68 TEST(fxcrt, BidiCharLeftNeutralRight) {
69   int32_t start = -1;
70   int32_t count = -1;
71   CFX_BidiChar bidi;
72
73   EXPECT_TRUE(bidi.AppendChar(kLeftChar));
74   CFX_BidiChar::Direction dir = bidi.GetBidiInfo(&start, &count);
75   EXPECT_EQ(0, start);
76   EXPECT_EQ(0, count);
77
78   EXPECT_FALSE(bidi.AppendChar(kLeftChar));
79   EXPECT_FALSE(bidi.AppendChar(kLeftChar));
80   EXPECT_TRUE(bidi.AppendChar(kNeutralChar));
81   dir = bidi.GetBidiInfo(&start, &count);
82   EXPECT_EQ(0, start);
83   EXPECT_EQ(3, count);
84
85   EXPECT_FALSE(bidi.AppendChar(kNeutralChar));
86   EXPECT_FALSE(bidi.AppendChar(kNeutralChar));
87   EXPECT_FALSE(bidi.AppendChar(kNeutralChar));
88   EXPECT_TRUE(bidi.AppendChar(kRightChar));
89   dir = bidi.GetBidiInfo(&start, &count);
90   EXPECT_EQ(CFX_BidiChar::NEUTRAL, dir);
91   EXPECT_EQ(3, start);
92   EXPECT_EQ(4, count);
93
94   EXPECT_TRUE(bidi.EndChar());
95   dir = bidi.GetBidiInfo(&start, &count);
96   EXPECT_EQ(CFX_BidiChar::RIGHT, dir);
97   EXPECT_EQ(7, start);
98   EXPECT_EQ(1, count);
99
100   EXPECT_FALSE(bidi.EndChar());
101 }
102
103 TEST(fxcrt, BidiCharLeftRightLeft) {
104   int32_t start = -1;
105   int32_t count = -1;
106   CFX_BidiChar bidi;
107
108   EXPECT_TRUE(bidi.AppendChar(kLeftChar));
109   CFX_BidiChar::Direction dir = bidi.GetBidiInfo(&start, &count);
110   EXPECT_EQ(0, start);
111   EXPECT_EQ(0, count);
112
113   EXPECT_FALSE(bidi.AppendChar(kLeftChar));
114   EXPECT_FALSE(bidi.AppendChar(kLeftChar));
115   EXPECT_TRUE(bidi.AppendChar(kRightChar));
116   dir = bidi.GetBidiInfo(&start, &count);
117   EXPECT_EQ(0, start);
118   EXPECT_EQ(3, count);
119
120   EXPECT_FALSE(bidi.AppendChar(kRightChar));
121   EXPECT_FALSE(bidi.AppendChar(kRightChar));
122   EXPECT_FALSE(bidi.AppendChar(kRightChar));
123   EXPECT_TRUE(bidi.AppendChar(kLeftChar));
124   dir = bidi.GetBidiInfo(&start, &count);
125   EXPECT_EQ(CFX_BidiChar::RIGHT, dir);
126   EXPECT_EQ(3, start);
127   EXPECT_EQ(4, count);
128
129   EXPECT_TRUE(bidi.EndChar());
130   dir = bidi.GetBidiInfo(&start, &count);
131   EXPECT_EQ(CFX_BidiChar::LEFT, dir);
132   EXPECT_EQ(7, start);
133   EXPECT_EQ(1, count);
134
135   EXPECT_FALSE(bidi.EndChar());
136 }