Blob Blame History Raw
From 8cef5dbaf83e049e929d6319acb785bdaac447a5 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Wed, 4 Nov 2015 10:59:08 +0100
Subject: [PATCH 274/398] CppunitTest_desktop_lib: test absolute positions for
 row/column headers

Change-Id: If2526647221fef2c6b18b21b589192239d8a89ad
(cherry picked from commit 2bed1867531fc91d1bd20da226d3fa012356125d)
---
 desktop/qa/desktop_lib/test_desktop_lib.cxx | 54 ++++++++++++++++++++++++++---
 1 file changed, 49 insertions(+), 5 deletions(-)

diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 4c23ecb50b73..8c622a577231 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -363,6 +363,35 @@ void DesktopLOKTest::testPasteWriter()
 
 void DesktopLOKTest::testRowColumnHeaders()
 {
+    /*
+     * Payload example:
+     *
+     * {
+     *     "rows": [
+     *         {
+     *             "size": "254.987250637468",
+     *             "text": "1"
+     *         },
+     *         {
+     *             "size": "509.974501274936",
+     *             "text": "2"
+     *         }
+     *     ],
+     *     "columns": [
+     *         {
+     *             "size": "1274.93625318734",
+     *             "text": "A"
+     *         },
+     *         {
+     *             "size": "2549.87250637468",
+     *             "text": "B"
+     *         }
+     *     ]
+     * }
+     *
+     * "size" defines the bottom/right boundary of a row/column in twips (size between 0 and boundary)
+     * "text" has the header label in UTF-8
+     */
     LibLODocument_Impl* pDocument = loadDoc("search.ods");
     boost::property_tree::ptree aTree;
     char* pJSON = pDocument->m_pDocumentClass->getCommandValues(pDocument, ".uno:ViewRowColumnHeaders");
@@ -371,23 +400,38 @@ void DesktopLOKTest::testRowColumnHeaders()
     CPPUNIT_ASSERT(!aStream.str().empty());
 
     boost::property_tree::read_json(aStream, aTree);
+    sal_Int32 nPrevious = 0;
     for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("rows"))
     {
         sal_Int32 nSize = OString(rValue.second.get<std::string>("size").c_str()).toInt32();
         CPPUNIT_ASSERT(nSize > 0);
         OString aText(rValue.second.get<std::string>("text").c_str());
-        // This failed, as the first item did not contain the text of the first row.
-        CPPUNIT_ASSERT_EQUAL(OString("1"), aText);
-        break;
+        if (!nPrevious)
+            // This failed, as the first item did not contain the text of the first row.
+            CPPUNIT_ASSERT_EQUAL(OString("1"), aText);
+        else
+        {
+            // Make sure that size is absolute: the first two items have the same relative size.
+            CPPUNIT_ASSERT(nPrevious < nSize);
+            break;
+        }
+        nPrevious = nSize;
     }
 
+    nPrevious = 0;
     for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("columns"))
     {
         sal_Int32 nSize = OString(rValue.second.get<std::string>("size").c_str()).toInt32();
         CPPUNIT_ASSERT(nSize > 0);
         OString aText(rValue.second.get<std::string>("text").c_str());
-        CPPUNIT_ASSERT_EQUAL(OString("A"), aText);
-        break;
+        if (!nPrevious)
+            CPPUNIT_ASSERT_EQUAL(OString("A"), aText);
+        else
+        {
+            CPPUNIT_ASSERT(nPrevious < nSize);
+            break;
+        }
+        nPrevious = nSize;
     }
 }
 
-- 
2.12.0