Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
cpdf_number_unittest.cpp
Go to the documentation of this file.
1
// Copyright 2024 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
"core/fpdfapi/parser/cpdf_number.h"
6
7
#
include
<
limits
>
8
9
#
include
"core/fxcrt/bytestring.h"
10
#
include
"core/fxcrt/fx_stream.h"
11
#
include
"core/fxcrt/notreached.h"
12
#
include
"core/fxcrt/retain_ptr.h"
13
#
include
"testing/gtest/include/gtest/gtest.h"
14
15
namespace
{
16
17
class
ByteStringArchiveStream :
public
IFX_ArchiveStream
{
18
public
:
19
ByteStringArchiveStream() =
default
;
20
~ByteStringArchiveStream()
override
=
default
;
21
22
// IFX_ArchiveStream:
23
bool
WriteBlock(pdfium::span<
const
uint8_t> buffer)
override
{
24
str_ += ByteStringView(buffer);
25
return
true
;
26
}
27
FX_FILESIZE
CurrentOffset()
const
override
{
NOTREACHED_NORETURN
(); }
28
29
const
ByteString
& str()
const
{
return
str_; }
30
31
private
:
32
ByteString
str_;
33
};
34
35
}
// namespace
36
37
TEST
(
CPDFNumber
,
WriteToFloat
) {
38
{
39
ByteStringArchiveStream output_stream;
40
auto
number =
pdfium
::MakeRetain<CPDF_Number>(0.0f);
41
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
42
EXPECT_EQ(
" 0"
, output_stream.str());
43
}
44
{
45
ByteStringArchiveStream output_stream;
46
auto
number =
pdfium
::MakeRetain<CPDF_Number>(1.0f);
47
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
48
EXPECT_EQ(
" 1"
, output_stream.str());
49
}
50
{
51
ByteStringArchiveStream output_stream;
52
auto
number =
pdfium
::MakeRetain<CPDF_Number>(-7.5f);
53
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
54
EXPECT_EQ(
" -7.5"
, output_stream.str());
55
}
56
{
57
ByteStringArchiveStream output_stream;
58
// `number` cannot be represented as a float without losing precision.
59
auto
number =
pdfium
::MakeRetain<CPDF_Number>(38.895285f);
60
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
61
EXPECT_EQ(
" 38.895287"
, output_stream.str());
62
}
63
{
64
ByteStringArchiveStream output_stream;
65
// `number` cannot be represented as a float without losing precision.
66
auto
number =
pdfium
::MakeRetain<CPDF_Number>(-77.037232f);
67
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
68
EXPECT_EQ(
" -77.037231"
, output_stream.str());
69
}
70
{
71
ByteStringArchiveStream output_stream;
72
auto
number =
73
pdfium
::MakeRetain<CPDF_Number>(
std
::numeric_limits<
float
>::max());
74
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
75
EXPECT_EQ(
" 340282350000000000000000000000000000000"
, output_stream.str());
76
}
77
{
78
ByteStringArchiveStream output_stream;
79
auto
number =
80
pdfium
::MakeRetain<CPDF_Number>(
std
::numeric_limits<
float
>::min());
81
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
82
EXPECT_EQ(
" .0000000000000000000000000000000000000117549435"
,
83
output_stream.str());
84
}
85
}
86
87
TEST
(
CPDFNumber
,
WriteToInt
) {
88
{
89
ByteStringArchiveStream output_stream;
90
auto
number =
pdfium
::MakeRetain<CPDF_Number>(0);
91
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
92
EXPECT_EQ(
" 0"
, output_stream.str());
93
}
94
{
95
ByteStringArchiveStream output_stream;
96
auto
number =
pdfium
::MakeRetain<CPDF_Number>(1);
97
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
98
EXPECT_EQ(
" 1"
, output_stream.str());
99
}
100
{
101
ByteStringArchiveStream output_stream;
102
auto
number =
pdfium
::MakeRetain<CPDF_Number>(-99);
103
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
104
EXPECT_EQ(
" -99"
, output_stream.str());
105
}
106
{
107
ByteStringArchiveStream output_stream;
108
auto
number =
pdfium
::MakeRetain<CPDF_Number>(1234);
109
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
110
EXPECT_EQ(
" 1234"
, output_stream.str());
111
}
112
{
113
ByteStringArchiveStream output_stream;
114
auto
number =
pdfium
::MakeRetain<CPDF_Number>(-54321);
115
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
116
EXPECT_EQ(
" -54321"
, output_stream.str());
117
}
118
{
119
ByteStringArchiveStream output_stream;
120
auto
number =
121
pdfium
::MakeRetain<CPDF_Number>(
std
::numeric_limits<
int
>::max());
122
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
123
EXPECT_EQ(
" 2147483647"
, output_stream.str());
124
}
125
{
126
ByteStringArchiveStream output_stream;
127
auto
number =
128
pdfium
::MakeRetain<CPDF_Number>(
std
::numeric_limits<
int
>::min());
129
ASSERT_TRUE(number->WriteTo(&output_stream,
/*encryptor=*/
nullptr
));
130
EXPECT_EQ(
" -2147483648"
, output_stream.str());
131
}
132
}
ByteString
fxcrt::ByteString ByteString
Definition
bytestring.h:180
IFX_ArchiveStream
Definition
fx_stream.h:32
pdfium::CFDETextOutLargeBitmapTest
Definition
cfde_textout_unittest.cpp:117
TEST
TEST(FXCRYPT, MD5GenerateEmtpyData)
Definition
fx_crypt_unittest.cpp:50
FX_FILESIZE
#define FX_FILESIZE
Definition
fx_types.h:19
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
NOTREACHED_NORETURN
#define NOTREACHED_NORETURN()
Definition
notreached.h:22
qtwebengine
src
3rdparty
chromium
third_party
pdfium
core
fpdfapi
parser
cpdf_number_unittest.cpp
Generated on
for Qt by
1.18.0