diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-13 18:05:38 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-13 18:05:38 +0000 |
commit | e03171e52ec4232369ab3b46e11d3a0abe1eb630 (patch) | |
tree | 6a57f6a0948032e6ec387c22d8b462215e6ca1e4 /core/fxcrt/fx_number_unittest.cpp | |
parent | 8bbfdf2fca7197a0eccfef7b6fc27c590a44e7f7 (diff) | |
parent | 326d96bf5d52fdcf790b467b13f58ba3df3e81e4 (diff) | |
download | pdfium-android14-platform-release.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/23916086'] into udc-platform-release.android-platform-14.0.0_r8android-platform-14.0.0_r7android-platform-14.0.0_r6android-platform-14.0.0_r5android-platform-14.0.0_r4android14-platform-release
Change-Id: If925f85c6a039b56ff549fd5327795f57b9cd12c
Diffstat (limited to 'core/fxcrt/fx_number_unittest.cpp')
-rw-r--r-- | core/fxcrt/fx_number_unittest.cpp | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/core/fxcrt/fx_number_unittest.cpp b/core/fxcrt/fx_number_unittest.cpp index a31dc55ac..deb4cf3c1 100644 --- a/core/fxcrt/fx_number_unittest.cpp +++ b/core/fxcrt/fx_number_unittest.cpp @@ -1,4 +1,4 @@ -// Copyright 2018 PDFium Authors. All rights reserved. +// Copyright 2018 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -46,39 +46,46 @@ TEST(fxnumber, FromFloat) { } TEST(fxnumber, FromStringUnsigned) { - { - FX_Number number(""); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - FX_Number number("0"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - FX_Number number("10"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - FX_Number number("4294967295"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - // Value overflows. - FX_Number number("4223423494965252"); - EXPECT_TRUE(number.IsInteger()); - EXPECT_FALSE(number.IsSigned()); - } - { - // No explicit sign will allow the number to go negative if we retrieve - // it as a signed value. This is needed for things like the encryption - // Permissions flag (Table 3.20 PDF 1.7 spec) - FX_Number number("4294965252"); - EXPECT_EQ(-2044, number.GetSigned()); - } + struct TestCase { + const char* input; + int expected_output; + }; + + auto test_func = [](pdfium::span<const TestCase> test_cases) { + for (const auto& test : test_cases) { + FX_Number number(test.input); + EXPECT_TRUE(number.IsInteger()); + EXPECT_FALSE(number.IsSigned()); + EXPECT_EQ(test.expected_output, number.GetSigned()); + } + }; + + static constexpr TestCase kNormalCases[] = { + {"", 0}, + {"0", 0}, + {"10", 10}, + }; + test_func(kNormalCases); + + static constexpr TestCase kOverflowCases[] = { + {"4223423494965252", 0}, + {"4294967296", 0}, + {"4294967297", 0}, + {"5000000000", 0}, + }; + test_func(kOverflowCases); + + // No explicit sign will allow the number to go negative if retrieved as a + // signed value. This is needed for things like the encryption permissions + // flag (Table 3.20 PDF 1.7 spec) + static constexpr TestCase kNegativeCases[] = { + {"4294965252", -2044}, + {"4294967247", -49}, + {"4294967248", -48}, + {"4294967292", -4}, + {"4294967295", -1}, + }; + test_func(kNegativeCases); } TEST(fxnumber, FromStringSigned) { |