diff --git a/core/fxcrt/fx_number_unittest.cpp b/core/fxcrt/fx_number_unittest.cpp
index a31dc55..00652c5 100644
--- a/core/fxcrt/fx_number_unittest.cpp
+++ b/core/fxcrt/fx_number_unittest.cpp
@@ -46,39 +46,46 @@
 }
 
 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) {
