LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/test/source/sheet - xsheetoutline.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 115 117 98.3 %
Date: 2013-07-09 Functions: 10 11 90.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  */
       9             : 
      10             : #include <test/sheet/xsheetoutline.hxx>
      11             : 
      12             : #include <com/sun/star/sheet/XSpreadsheet.hpp>
      13             : #include <com/sun/star/table/CellRangeAddress.hpp>
      14             : #include <com/sun/star/table/XCellRange.hpp>
      15             : 
      16             : #include <com/sun/star/sheet/XCellRangeAddressable.hpp>
      17             : #include <com/sun/star/table/TableOrientation.hpp>
      18             : 
      19             : #include <com/sun/star/sheet/XSheetCellRanges.hpp>
      20             : #include <com/sun/star/sheet/XCellRangesQuery.hpp>
      21             : 
      22             : #include "cppunit/extensions/HelperMacros.h"
      23             : #include <rtl/ustring.hxx>
      24             : 
      25             : using namespace css;
      26             : using namespace css::uno;
      27             : 
      28             : namespace apitest {
      29             : 
      30          15 : const OUString colLevel1 = "OutlineSheet.A1:Z1";
      31          15 : const OUString colLevel2 = "OutlineSheet.C1:W1";
      32          15 : const OUString colLevel3 = "OutlineSheet.E1:U1";
      33          15 : const OUString colLevel4 = "OutlineSheet.G1:S1";
      34             : 
      35          15 : const OUString rowLevel1 = "OutlineSheet.A1:A30";
      36          15 : const OUString rowLevel2 = "OutlineSheet.A3:A27";
      37          15 : const OUString rowLevel3 = "OutlineSheet.A5:A24";
      38          15 : const OUString rowLevel4 = "OutlineSheet.A7:A21";
      39             : 
      40          15 : uno::Reference< sheet::XSpreadsheet > aSheetGlobal;
      41             : 
      42          14 : OUString getVisibleAdress(OUString aLevelRangeString)
      43             : {
      44             : 
      45          14 :     uno::Reference<table::XCellRange> aSheetRangeAccess(aSheetGlobal, UNO_QUERY_THROW);
      46          28 :     uno::Reference<table::XCellRange> aLevelRange = aSheetRangeAccess->getCellRangeByName(aLevelRangeString);
      47             : 
      48          28 :     uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery(aLevelRange,UNO_QUERY_THROW);
      49          28 :     uno::Reference<sheet::XSheetCellRanges> xRanges = xCellRangesQuery->queryVisibleCells();
      50          14 :     OUString aResult = xRanges->getRangeAddressesAsString();
      51             : 
      52          28 :     return aResult;
      53             : 
      54             : }
      55             : 
      56          19 : table::CellRangeAddress getAddressFromRangeString(OUString aStringAddress)
      57             : {
      58             : 
      59          19 :     uno::Reference< table::XCellRange > aSheetRangeAccess(aSheetGlobal, UNO_QUERY_THROW);
      60          38 :     uno::Reference<table::XCellRange> aRange = aSheetRangeAccess->getCellRangeByName(aStringAddress);
      61             : 
      62          38 :     uno::Reference<sheet::XCellRangeAddressable> xCellRangeAddressable(aRange, UNO_QUERY_THROW);
      63          19 :     table::CellRangeAddress aLevelRangeAddress = xCellRangeAddressable->getRangeAddress();
      64             : 
      65          38 :     return aLevelRangeAddress;
      66             : 
      67             : }
      68             : 
      69             : 
      70             : 
      71           1 : void XSheetOutline::testHideDetail()
      72             : {
      73             : 
      74           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
      75           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
      76             : 
      77           1 :     aSheetGlobal = aSheet;
      78             : 
      79             :     // Column level 2
      80           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(colLevel2);
      81           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
      82             : 
      83           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Column level 2 not hidden", getVisibleAdress(colLevel2), OUString(""));
      84             : 
      85             :     // Row Level 2
      86           1 :     aLevelRangeAddress = getAddressFromRangeString(rowLevel2);
      87           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
      88             : 
      89           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Row level 2 not hidden", getVisibleAdress(rowLevel2), OUString(""));
      90             : 
      91           1 : }
      92             : 
      93           1 : void XSheetOutline::testShowDetail()
      94             : {
      95           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
      96           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
      97             : 
      98           1 :     aSheetGlobal = aSheet;
      99           1 :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
     100           1 :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
     101             : 
     102             :     // Row Level 2
     103           1 :     table::CellRangeAddress  aLevelRangeAddress = getAddressFromRangeString(rowLevel2);
     104           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     105             : 
     106           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Row level 2 still hidden", getVisibleAdress(rowLevel2), rowLevel2);
     107             : 
     108             :     // Column Level 2
     109           1 :     aLevelRangeAddress = getAddressFromRangeString(colLevel2);
     110           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     111             : 
     112           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Column level 2 still hidden", getVisibleAdress(colLevel2), colLevel2);
     113             : 
     114           1 : }
     115             : 
     116           1 : void XSheetOutline::testShowLevel()
     117             : {
     118             : 
     119           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     120           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     121             : 
     122           1 :     aSheetGlobal = aSheet;
     123             : 
     124           1 :     table::CellRangeAddress aLevelRangeAddress;
     125             : 
     126             :     // test columns
     127             : 
     128           1 :     table::CellRangeAddress aLevel1 = getAddressFromRangeString(colLevel1);
     129           1 :     table::CellRangeAddress aLevel2 = getAddressFromRangeString(colLevel2);
     130           1 :     table::CellRangeAddress aLevel3 = getAddressFromRangeString(colLevel3);
     131           1 :     table::CellRangeAddress aLevel4 = getAddressFromRangeString(colLevel4);
     132             : 
     133           1 :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
     134           1 :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel2));
     135           1 :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
     136             : 
     137           1 :     aSheetOutline->hideDetail(aLevel1);
     138           1 :     aSheetOutline->hideDetail(aLevel2);
     139           1 :     aSheetOutline->hideDetail(aLevel3);
     140           1 :     aSheetOutline->hideDetail(aLevel4);
     141             : 
     142           1 :     aSheetOutline->showLevel(2, table::TableOrientation_COLUMNS);
     143             : 
     144           1 :     std::cout << " verifiy showLevel col apres" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     145             : 
     146             :     // verify that level 2 and level 1 are shown --> column 0..3 & column 22..26
     147             :     // level 3 & 4 are hidden --> column 4..19
     148             : 
     149           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString("OutlineSheet.A1:D1"), getVisibleAdress("OutlineSheet.A1:D1"));
     150           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString("OutlineSheet.V1:Z1"), getVisibleAdress("OutlineSheet.V1:Z1"));
     151           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString(""), getVisibleAdress(colLevel3));
     152             : 
     153             : /* FIXME !!
     154             : 
     155             :     // test Rows
     156             : 
     157             :     aLevel1 = getAddressFromRangeString(rowLevel1);
     158             :     aLevel2 = getAddressFromRangeString(rowLevel2);
     159             :     aLevel3 = getAddressFromRangeString(rowLevel3);
     160             :     aLevel4 = getAddressFromRangeString(rowLevel4);
     161             : 
     162             :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
     163             :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
     164             :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel2));
     165             : 
     166             :     std::cout << " verifiy showLevel row avant" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     167             : 
     168             :     aSheetOutline->hideDetail(aLevel1);
     169             :     aSheetOutline->hideDetail(aLevel2);
     170             :     aSheetOutline->hideDetail(aLevel3);
     171             :     aSheetOutline->hideDetail(aLevel4);
     172             : 
     173             :     std::cout << " verifiy showLevel row juste avant" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     174             : 
     175             :     aSheetOutline->showLevel(2, table::TableOrientation_ROWS);
     176             : 
     177             :     std::cout << " verifiy showLevel row apres" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     178             : 
     179             :     // verify rows visible 0..3 & 24..29
     180             :     // verfiy rows hidden 4..23
     181             : 
     182             :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A1:A4"), getVisibleAdress("OutlineSheet.A1:A4"));
     183             :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A25:A30"), getVisibleAdress("OutlineSheet.A25:A30"));
     184             :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString(""), getVisibleAdress(rowLevel3));
     185             : 
     186             : */
     187             : 
     188           1 : }
     189             : 
     190           1 : void XSheetOutline::testGroup()
     191             : {
     192             : 
     193           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     194           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     195             : 
     196           1 :     aSheetGlobal = aSheet;
     197             : 
     198             :     // Column level 2
     199           2 :     OUString aNewString = "OutlineSheet.AB1:AG1";
     200           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(aNewString);
     201           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_COLUMNS);
     202             : 
     203           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     204             : 
     205           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testGroup Column still visible", getVisibleAdress(aNewString), OUString(""));
     206             : 
     207             :     // Row Level 2
     208           1 :     aNewString = "OutlineSheet.A50:A60";
     209           1 :     aLevelRangeAddress = getAddressFromRangeString(aNewString);
     210           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_ROWS);
     211             : 
     212           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     213             : 
     214           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testGroup Row still visible", getVisibleAdress(aNewString), OUString(""));
     215             : 
     216           1 : }
     217             : 
     218           1 : void XSheetOutline::testUngroup()
     219             : {
     220           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     221           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     222             : 
     223           1 :     aSheetGlobal = aSheet;
     224             : 
     225             :     // New Column level
     226           2 :     OUString aNewString = "OutlineSheet.BB1:BG1";
     227           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(aNewString);
     228           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_COLUMNS);
     229           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     230             : 
     231           1 :     aSheetOutline->ungroup(aLevelRangeAddress, table::TableOrientation_COLUMNS);
     232             : 
     233           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     234             :     // should remain hidden ?
     235             : 
     236           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testUnGroup Column becomes visible after ungroup", getVisibleAdress(aNewString), OUString(""));
     237             : 
     238             :     // New Row level
     239           1 :     aNewString = "OutlineSheet.A70:A80";
     240           1 :     aLevelRangeAddress = getAddressFromRangeString(aNewString);
     241           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_ROWS);
     242           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     243             : 
     244           1 :     aSheetOutline->ungroup(aLevelRangeAddress, table::TableOrientation_ROWS);
     245             : 
     246           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     247             :     // should remain hidden ?
     248             : 
     249           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testUnGroup Row becomes visible after ungroup", getVisibleAdress(aNewString), OUString(""));
     250             : 
     251           1 : }
     252             : 
     253           0 : void XSheetOutline::testAutoOutline()
     254             : {
     255           0 : }
     256             : 
     257           1 : void XSheetOutline::testClearOutline()
     258             : {
     259           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     260           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     261             : 
     262           1 :     aSheetGlobal = aSheet;
     263             : 
     264           1 :     aSheetOutline->clearOutline();
     265             : 
     266           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(colLevel1);
     267           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     268           1 :     aLevelRangeAddress = getAddressFromRangeString(rowLevel1);
     269           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     270             : 
     271           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testClearOutline Columns are hidden after clear", getVisibleAdress(colLevel1), colLevel1);
     272           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testClearOutline Rows are hidden after clear", getVisibleAdress(rowLevel1), rowLevel1);
     273             : 
     274           1 : }
     275             : 
     276          45 : }
     277             : 
     278             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10