Add some unit tests for CXFA_Measurement.

Change-Id: I42b44f77f9ef61fd4eb7d13ebfe39be42e0bbb98
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/52710
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/parser/BUILD.gn b/xfa/fxfa/parser/BUILD.gn
index d88482b..fc70cfc 100644
--- a/xfa/fxfa/parser/BUILD.gn
+++ b/xfa/fxfa/parser/BUILD.gn
@@ -704,6 +704,7 @@
   sources = [
     "cxfa_document_parser_unittest.cpp",
     "cxfa_localevalue_unittest.cpp",
+    "cxfa_measurement_unittest.cpp",
     "cxfa_node_unittest.cpp",
     "cxfa_nodeiteratortemplate_unittest.cpp",
     "cxfa_xmllocale_unittest.cpp",
diff --git a/xfa/fxfa/parser/cxfa_measurement_unittest.cpp b/xfa/fxfa/parser/cxfa_measurement_unittest.cpp
new file mode 100644
index 0000000..7a84eb1
--- /dev/null
+++ b/xfa/fxfa/parser/cxfa_measurement_unittest.cpp
@@ -0,0 +1,46 @@
+// Copyright 2019 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "xfa/fxfa/parser/cxfa_measurement.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+TEST(CXFAMeasurementTest, ToString) {
+  CXFA_Measurement measurement;
+
+  measurement.Set(0.1f, XFA_Unit::Percent);
+  EXPECT_STREQ(L"0.1%", measurement.ToString().c_str());
+  measurement.Set(1.0f, XFA_Unit::Em);
+  EXPECT_STREQ(L"1em", measurement.ToString().c_str());
+  measurement.Set(1.1f, XFA_Unit::Pt);
+  EXPECT_STREQ(L"1.1pt", measurement.ToString().c_str());
+  measurement.Set(1.0000001f, XFA_Unit::In);
+  EXPECT_STREQ(L"1.0000001in", measurement.ToString().c_str());
+  measurement.Set(1234.0f, XFA_Unit::Pc);
+  EXPECT_STREQ(L"1234pc", measurement.ToString().c_str());
+  measurement.Set(987654321.0123456789f, XFA_Unit::Cm);
+  EXPECT_STREQ(L"9.8765434e+08cm", measurement.ToString().c_str());
+  measurement.Set(0.0f, XFA_Unit::Mm);
+  EXPECT_STREQ(L"0mm", measurement.ToString().c_str());
+  measurement.Set(-2.0f, XFA_Unit::Mp);
+  EXPECT_STREQ(L"-2mp", measurement.ToString().c_str());
+}
+
+TEST(CXFAMeasurementTest, GetUnitFromString) {
+  EXPECT_EQ(XFA_Unit::Percent, CXFA_Measurement::GetUnitFromString(L"%"));
+  EXPECT_EQ(XFA_Unit::Em, CXFA_Measurement::GetUnitFromString(L"em"));
+  EXPECT_EQ(XFA_Unit::Pt, CXFA_Measurement::GetUnitFromString(L"pt"));
+  EXPECT_EQ(XFA_Unit::In, CXFA_Measurement::GetUnitFromString(L"in"));
+  EXPECT_EQ(XFA_Unit::Pc, CXFA_Measurement::GetUnitFromString(L"pc"));
+  EXPECT_EQ(XFA_Unit::Cm, CXFA_Measurement::GetUnitFromString(L"cm"));
+  EXPECT_EQ(XFA_Unit::Mm, CXFA_Measurement::GetUnitFromString(L"mm"));
+  EXPECT_EQ(XFA_Unit::Mp, CXFA_Measurement::GetUnitFromString(L"mp"));
+
+  EXPECT_EQ(XFA_Unit::Unknown, CXFA_Measurement::GetUnitFromString(L""));
+  EXPECT_EQ(XFA_Unit::Unknown, CXFA_Measurement::GetUnitFromString(L"foo"));
+  EXPECT_EQ(XFA_Unit::Unknown, CXFA_Measurement::GetUnitFromString(L"!"));
+  EXPECT_EQ(XFA_Unit::Unknown, CXFA_Measurement::GetUnitFromString(L"CM"));
+  EXPECT_EQ(XFA_Unit::Unknown, CXFA_Measurement::GetUnitFromString(L"Cm"));
+  EXPECT_EQ(XFA_Unit::Unknown, CXFA_Measurement::GetUnitFromString(L"cM"));
+}