LCOV - code coverage report
Current view: top level - test/source/sheet - xsheetoutline.cxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 115 117 98.3 %
Date: 2014-04-11 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          20 : const OUString colLevel1 = "OutlineSheet.A1:Z1";
      31          20 : const OUString colLevel2 = "OutlineSheet.C1:W1";
      32          20 : const OUString colLevel3 = "OutlineSheet.E1:U1";
      33          20 : const OUString colLevel4 = "OutlineSheet.G1:S1";
      34             : 
      35          20 : const OUString rowLevel1 = "OutlineSheet.A1:A30";
      36          20 : const OUString rowLevel2 = "OutlineSheet.A3:A27";
      37          20 : const OUString rowLevel3 = "OutlineSheet.A5:A24";
      38          20 : const OUString rowLevel4 = "OutlineSheet.A7:A21";
      39             : 
      40          20 : uno::Reference< sheet::XSpreadsheet > aSheetGlobal;
      41             : 
      42          14 : OUString getVisibleAdress(const 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(const 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           1 : void XSheetOutline::testHideDetail()
      70             : {
      71             : 
      72           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
      73           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
      74             : 
      75           1 :     aSheetGlobal = aSheet;
      76             : 
      77             :     // Column level 2
      78           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(colLevel2);
      79           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
      80             : 
      81           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Column level 2 not hidden", getVisibleAdress(colLevel2), OUString(""));
      82             : 
      83             :     // Row Level 2
      84           1 :     aLevelRangeAddress = getAddressFromRangeString(rowLevel2);
      85           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
      86             : 
      87           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Row level 2 not hidden", getVisibleAdress(rowLevel2), OUString(""));
      88             : 
      89           1 : }
      90             : 
      91           1 : void XSheetOutline::testShowDetail()
      92             : {
      93           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
      94           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
      95             : 
      96           1 :     aSheetGlobal = aSheet;
      97           1 :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
      98           1 :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
      99             : 
     100             :     // Row Level 2
     101           1 :     table::CellRangeAddress  aLevelRangeAddress = getAddressFromRangeString(rowLevel2);
     102           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     103             : 
     104           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Row level 2 still hidden", getVisibleAdress(rowLevel2), rowLevel2);
     105             : 
     106             :     // Column Level 2
     107           1 :     aLevelRangeAddress = getAddressFromRangeString(colLevel2);
     108           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     109             : 
     110           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("Column level 2 still hidden", getVisibleAdress(colLevel2), colLevel2);
     111             : 
     112           1 : }
     113             : 
     114           1 : void XSheetOutline::testShowLevel()
     115             : {
     116             : 
     117           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     118           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     119             : 
     120           1 :     aSheetGlobal = aSheet;
     121             : 
     122           1 :     table::CellRangeAddress aLevelRangeAddress;
     123             : 
     124             :     // test columns
     125             : 
     126           1 :     table::CellRangeAddress aLevel1 = getAddressFromRangeString(colLevel1);
     127           1 :     table::CellRangeAddress aLevel2 = getAddressFromRangeString(colLevel2);
     128           1 :     table::CellRangeAddress aLevel3 = getAddressFromRangeString(colLevel3);
     129           1 :     table::CellRangeAddress aLevel4 = getAddressFromRangeString(colLevel4);
     130             : 
     131           1 :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
     132           1 :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel2));
     133           1 :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
     134             : 
     135           1 :     aSheetOutline->hideDetail(aLevel1);
     136           1 :     aSheetOutline->hideDetail(aLevel2);
     137           1 :     aSheetOutline->hideDetail(aLevel3);
     138           1 :     aSheetOutline->hideDetail(aLevel4);
     139             : 
     140           1 :     aSheetOutline->showLevel(2, table::TableOrientation_COLUMNS);
     141             : 
     142           1 :     std::cout << " verifiy showLevel col apres" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     143             : 
     144             :     // verify that level 2 and level 1 are shown --> column 0..3 & column 22..26
     145             :     // level 3 & 4 are hidden --> column 4..19
     146             : 
     147           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString("OutlineSheet.A1:D1"), getVisibleAdress("OutlineSheet.A1:D1"));
     148           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString("OutlineSheet.V1:Z1"), getVisibleAdress("OutlineSheet.V1:Z1"));
     149           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString(""), getVisibleAdress(colLevel3));
     150             : 
     151             : /* FIXME !!
     152             : 
     153             :     // test Rows
     154             : 
     155             :     aLevel1 = getAddressFromRangeString(rowLevel1);
     156             :     aLevel2 = getAddressFromRangeString(rowLevel2);
     157             :     aLevel3 = getAddressFromRangeString(rowLevel3);
     158             :     aLevel4 = getAddressFromRangeString(rowLevel4);
     159             : 
     160             :     aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
     161             :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
     162             :     aSheetOutline->showDetail(getAddressFromRangeString(rowLevel2));
     163             : 
     164             :     std::cout << " verifiy showLevel row avant" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     165             : 
     166             :     aSheetOutline->hideDetail(aLevel1);
     167             :     aSheetOutline->hideDetail(aLevel2);
     168             :     aSheetOutline->hideDetail(aLevel3);
     169             :     aSheetOutline->hideDetail(aLevel4);
     170             : 
     171             :     std::cout << " verifiy showLevel row juste avant" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     172             : 
     173             :     aSheetOutline->showLevel(2, table::TableOrientation_ROWS);
     174             : 
     175             :     std::cout << " verifiy showLevel row apres" << OUStringToOString(getVisibleAdress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
     176             : 
     177             :     // verify rows visible 0..3 & 24..29
     178             :     // verfiy rows hidden 4..23
     179             : 
     180             :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A1:A4"), getVisibleAdress("OutlineSheet.A1:A4"));
     181             :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A25:A30"), getVisibleAdress("OutlineSheet.A25:A30"));
     182             :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString(""), getVisibleAdress(rowLevel3));
     183             : 
     184             : */
     185             : 
     186           1 : }
     187             : 
     188           1 : void XSheetOutline::testGroup()
     189             : {
     190             : 
     191           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     192           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     193             : 
     194           1 :     aSheetGlobal = aSheet;
     195             : 
     196             :     // Column level 2
     197           2 :     OUString aNewString = "OutlineSheet.AB1:AG1";
     198           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(aNewString);
     199           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_COLUMNS);
     200             : 
     201           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     202             : 
     203           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testGroup Column still visible", getVisibleAdress(aNewString), OUString(""));
     204             : 
     205             :     // Row Level 2
     206           1 :     aNewString = "OutlineSheet.A50:A60";
     207           1 :     aLevelRangeAddress = getAddressFromRangeString(aNewString);
     208           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_ROWS);
     209             : 
     210           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     211             : 
     212           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testGroup Row still visible", getVisibleAdress(aNewString), OUString(""));
     213             : 
     214           1 : }
     215             : 
     216           1 : void XSheetOutline::testUngroup()
     217             : {
     218           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     219           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     220             : 
     221           1 :     aSheetGlobal = aSheet;
     222             : 
     223             :     // New Column level
     224           2 :     OUString aNewString = "OutlineSheet.BB1:BG1";
     225           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(aNewString);
     226           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_COLUMNS);
     227           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     228             : 
     229           1 :     aSheetOutline->ungroup(aLevelRangeAddress, table::TableOrientation_COLUMNS);
     230             : 
     231           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     232             :     // should remain hidden ?
     233             : 
     234           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testUnGroup Column becomes visible after ungroup", getVisibleAdress(aNewString), OUString(""));
     235             : 
     236             :     // New Row level
     237           1 :     aNewString = "OutlineSheet.A70:A80";
     238           1 :     aLevelRangeAddress = getAddressFromRangeString(aNewString);
     239           1 :     aSheetOutline->group(aLevelRangeAddress, table::TableOrientation_ROWS);
     240           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     241             : 
     242           1 :     aSheetOutline->ungroup(aLevelRangeAddress, table::TableOrientation_ROWS);
     243             : 
     244           1 :     aSheetOutline->showDetail(aLevelRangeAddress);
     245             :     // should remain hidden ?
     246             : 
     247           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testUnGroup Row becomes visible after ungroup", getVisibleAdress(aNewString), OUString(""));
     248             : 
     249           1 : }
     250             : 
     251           0 : void XSheetOutline::testAutoOutline()
     252             : {
     253           0 : }
     254             : 
     255           1 : void XSheetOutline::testClearOutline()
     256             : {
     257           1 :     uno::Reference< sheet::XSpreadsheet > aSheet(init(), UNO_QUERY_THROW);
     258           2 :     uno::Reference< sheet::XSheetOutline > aSheetOutline(aSheet, UNO_QUERY_THROW);
     259             : 
     260           1 :     aSheetGlobal = aSheet;
     261             : 
     262           1 :     aSheetOutline->clearOutline();
     263             : 
     264           1 :     table::CellRangeAddress aLevelRangeAddress = getAddressFromRangeString(colLevel1);
     265           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     266           1 :     aLevelRangeAddress = getAddressFromRangeString(rowLevel1);
     267           1 :     aSheetOutline->hideDetail(aLevelRangeAddress);
     268             : 
     269           1 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testClearOutline Columns are hidden after clear", getVisibleAdress(colLevel1), colLevel1);
     270           2 :     CPPUNIT_ASSERT_EQUAL_MESSAGE("testClearOutline Rows are hidden after clear", getVisibleAdress(rowLevel1), rowLevel1);
     271             : 
     272           1 : }
     273             : 
     274          60 : }
     275             : 
     276             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10