1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #include "HistoryOptTest.hxx" 25 #include <unotools/historyoptions_const.hxx> 26 27 #include <com/sun/star/uno/Sequence.hxx> 28 #include <com/sun/star/beans/PropertyValue.hpp> 29 #include <com/sun/star/beans/XPropertySet.hpp> 30 #include <com/sun/star/container/XNameAccess.hpp> 31 #include <com/sun/star/container/XNameContainer.hpp> 32 33 #include <comphelper/configurationhelper.hxx> 34 #include <comphelper/sequenceashashmap.hxx> 35 #include <unotools/processfactory.hxx> 36 37 namespace css = ::com::sun::star; 38 39 //============================================================================= 40 static const ::rtl::OUString MESSAGE_CLEAR_FAILED = ::rtl::OUString::createFromAscii("Clearing the list failed."); 41 static const ::rtl::OUString MESSAGE_SETSIZE_FAILED = ::rtl::OUString::createFromAscii("Setting a new size for a list failed."); 42 static const ::rtl::OUString MESSAGE_MISS_HISTORY = ::rtl::OUString::createFromAscii("Could not get config access to history list inside config."); 43 static const ::rtl::OUString MESSAGE_MISS_ITEMLIST = ::rtl::OUString::createFromAscii("Could not get config access to item list inside config."); 44 static const ::rtl::OUString MESSAGE_MISS_ORDERLIST = ::rtl::OUString::createFromAscii("Could not get config access to order list inside config."); 45 static const ::rtl::OUString MESSAGE_MISS_ITEM = ::rtl::OUString::createFromAscii("Could not locate item."); 46 static const ::rtl::OUString MESSAGE_UNEXPECTED_ITEM = ::rtl::OUString::createFromAscii("Found an unexpected item."); 47 static const ::rtl::OUString MESSAGE_WRONG_ORDER = ::rtl::OUString::createFromAscii("Wrong order in history list."); 48 49 //============================================================================= 50 HistoryOptTest::HistoryOptTest() 51 : m_aConfigItem ( ) 52 , m_eList (ePICKLIST) 53 , m_xHistoriesXCU( ) 54 , m_xCommonXCU ( ) 55 { 56 } 57 58 //============================================================================= 59 HistoryOptTest::~HistoryOptTest() 60 { 61 m_xHistoriesXCU.clear(); 62 m_xCommonXCU.clear(); 63 } 64 65 //============================================================================= 66 void HistoryOptTest::checkPicklist() 67 { 68 impl_testHistory(ePICKLIST, 4); 69 } 70 71 //============================================================================= 72 void HistoryOptTest::checkURLHistory() 73 { 74 impl_testHistory(eHISTORY, 10); 75 } 76 77 //============================================================================= 78 void HistoryOptTest::checkHelpBookmarks() 79 { 80 impl_testHistory(eHELPBOOKMARKS, 100); 81 } 82 83 //============================================================================= 84 void HistoryOptTest::impl_testHistory(EHistoryType eHistory , 85 ::sal_Int32 nMaxItems) 86 { 87 try 88 { 89 m_eList = eHistory; 90 ::sal_Int32 c = nMaxItems; 91 ::sal_Int32 i = 0; 92 93 impl_clearList( ); 94 impl_setSize (c); 95 96 // a) fill list completely and check if all items could be really created. 97 // But dont check its order here! Because every new item will change that order. 98 for (i=0; i<c; ++i) 99 { 100 impl_appendItem(i); 101 if ( ! impl_existsItem(i)) 102 throw css::uno::Exception(MESSAGE_MISS_ITEM, 0); 103 } 104 105 // b) Check order of all items in list now. 106 // It must be reverse to the item number ... 107 // item max = index 0 108 // item max-1 = index 1 109 // ... 110 for (i=0; i<c; ++i) 111 { 112 ::sal_Int32 nExpectedIndex = (c-1)-i; 113 if ( ! impl_existsItemAtIndex(i, nExpectedIndex)) 114 throw css::uno::Exception(MESSAGE_WRONG_ORDER, 0); 115 } 116 117 // c) increase prio of "first" item so it will switch 118 // to "second" and "second" will switch to "first" :-) 119 // Check also if all other items was not touched. 120 ::sal_Int32 nFirstItem = (c-1); 121 ::sal_Int32 nSecondItem = (c-2); 122 impl_appendItem(nSecondItem); 123 124 if ( 125 ( ! impl_existsItemAtIndex(nSecondItem, 0)) || 126 ( ! impl_existsItemAtIndex(nFirstItem , 1)) 127 ) 128 throw css::uno::Exception(MESSAGE_WRONG_ORDER, 0); 129 130 for (i=0; i<nSecondItem; ++i) 131 { 132 ::sal_Int32 nExpectedIndex = (c-1)-i; 133 if ( ! impl_existsItemAtIndex(i, nExpectedIndex)) 134 throw css::uno::Exception(MESSAGE_WRONG_ORDER, 0); 135 } 136 137 // d) Check if appending new items will destroy the oldest one. 138 ::sal_Int32 nNewestItem = c; 139 ::sal_Int32 nOldestItem = 0; 140 141 impl_appendItem(nNewestItem); 142 143 if ( ! impl_existsItemAtIndex(nNewestItem, 0)) 144 throw css::uno::Exception(MESSAGE_WRONG_ORDER, 0); 145 146 if (impl_existsItem(nOldestItem)) 147 throw css::uno::Exception(MESSAGE_UNEXPECTED_ITEM, 0); 148 149 // e) Check if decreasing list size will remove oldest items. 150 // Note: impl_setSize() will make sure that 3 items exists only. 151 // Otherwhise it throws an exception. If we further check 152 // positions of three items no further items must be checked. 153 // They can't exists :-) 154 ::sal_Int32 nNewSize = 3; 155 impl_setSize(nNewSize); 156 if ( 157 ( ! impl_existsItemAtIndex(nNewestItem, 0)) || 158 ( ! impl_existsItemAtIndex(nSecondItem, 1)) || 159 ( ! impl_existsItemAtIndex(nFirstItem , 2)) 160 ) 161 throw css::uno::Exception(MESSAGE_WRONG_ORDER, 0); 162 163 // finally we should try to clean up all used structures so the same office can be used 164 // without problems :-) 165 impl_clearList(); 166 } 167 catch (const css::uno::Exception& ex) 168 { 169 impl_clearList(); 170 throw ex; 171 } 172 173 } 174 175 //============================================================================= 176 void HistoryOptTest::impl_clearList() 177 { 178 m_aConfigItem.Clear(m_eList); 179 ::sal_Int32 nCount = m_aConfigItem.GetList(m_eList).getLength(); 180 181 if (nCount != 0) 182 throw css::uno::Exception(MESSAGE_CLEAR_FAILED, 0); 183 184 css::uno::Reference< css::container::XNameAccess > xList; 185 xList = impl_getItemList(); 186 nCount = xList->getElementNames().getLength(); 187 188 if (nCount != 0) 189 throw css::uno::Exception(MESSAGE_CLEAR_FAILED, 0); 190 191 xList = impl_getOrderList(); 192 nCount = xList->getElementNames().getLength(); 193 194 if (nCount != 0) 195 throw css::uno::Exception(MESSAGE_CLEAR_FAILED, 0); 196 } 197 198 //============================================================================= 199 void HistoryOptTest::impl_setSize(::sal_Int32 nSize) 200 { 201 m_aConfigItem.SetSize (m_eList, nSize); 202 203 // a) size info returned by GetSize() means "MaxSize" 204 // so it must match exactly ! 205 ::sal_Int32 nCheck = m_aConfigItem.GetSize(m_eList); 206 if (nCheck != nSize) 207 throw css::uno::Exception(MESSAGE_SETSIZE_FAILED, 0); 208 209 // b) current size of used XCU lists reflects the current state of 210 // history list and not max size. So it can be less then size ! 211 css::uno::Reference< css::container::XNameAccess > xList; 212 xList = impl_getItemList(); 213 nCheck = xList->getElementNames().getLength(); 214 if (nCheck > nSize) 215 throw css::uno::Exception(MESSAGE_SETSIZE_FAILED, 0); 216 217 xList = impl_getOrderList(); 218 nCheck = xList->getElementNames().getLength(); 219 if (nCheck > nSize) 220 throw css::uno::Exception(MESSAGE_SETSIZE_FAILED, 0); 221 } 222 223 //============================================================================= 224 void HistoryOptTest::impl_appendItem(::sal_Int32 nItem) 225 { 226 const ::rtl::OUString sURL = impl_createItemURL (nItem); 227 const ::rtl::OUString sTitle = impl_createItemTitle (nItem); 228 const ::rtl::OUString sPassword = impl_createItemPassword(nItem); 229 230 m_aConfigItem.AppendItem(m_eList, sURL, ::rtl::OUString(), sTitle, sPassword); 231 } 232 233 //============================================================================= 234 ::rtl::OUString HistoryOptTest::impl_createItemURL(::sal_Int32 nItem) 235 { 236 ::rtl::OUStringBuffer sURL(256); 237 sURL.appendAscii("file:///ooo_api_test/non_existing_test_url_"); 238 sURL.append ((::sal_Int32)nItem ); 239 sURL.appendAscii(".odt" ); 240 241 return sURL.makeStringAndClear(); 242 } 243 244 //============================================================================= 245 ::rtl::OUString HistoryOptTest::impl_createItemTitle(::sal_Int32 nItem) 246 { 247 ::rtl::OUStringBuffer sTitle(256); 248 sTitle.appendAscii("Non Existing Test Item Nr "); 249 sTitle.append ((::sal_Int32)nItem ); 250 251 return sTitle.makeStringAndClear(); 252 } 253 254 //============================================================================= 255 ::rtl::OUString HistoryOptTest::impl_createItemPassword(::sal_Int32 nItem) 256 { 257 ::rtl::OUStringBuffer sPassword(256); 258 sPassword.appendAscii("Password_" ); 259 sPassword.append ((::sal_Int32)nItem); 260 261 return sPassword.makeStringAndClear(); 262 } 263 264 //============================================================================= 265 ::sal_Bool HistoryOptTest::impl_existsItem(::sal_Int32 nItem) 266 { 267 const ::rtl::OUString sURL = impl_createItemURL(nItem); 268 const css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > lItems = m_aConfigItem.GetList(m_eList); 269 const ::sal_Int32 c = lItems.getLength (); 270 ::sal_Int32 i = 0; 271 ::sal_Bool bFound = sal_False; 272 273 for (i=0; i<c; ++i) 274 { 275 const ::comphelper::SequenceAsHashMap aItem(lItems[i]); 276 const ::rtl::OUString& sCheck = aItem.getUnpackedValueOrDefault(s_sURL, ::rtl::OUString()); 277 278 bFound = sCheck.equals(sURL); 279 if (bFound) 280 break; 281 } 282 283 if ( ! bFound) 284 return sal_False; 285 bFound = sal_False; 286 287 try 288 { 289 css::uno::Reference< css::container::XNameAccess > xItemList = impl_getItemList(); 290 css::uno::Reference< css::container::XNameAccess > xItem ; 291 xItemList->getByName(sURL) >>= xItem; 292 293 bFound = xItem.is(); 294 } 295 catch(const css::container::NoSuchElementException&) 296 {} 297 298 return bFound; 299 } 300 301 //============================================================================= 302 ::sal_Bool HistoryOptTest::impl_existsItemAtIndex(::sal_Int32 nItem , 303 ::sal_Int32 nIndex) 304 { 305 const ::rtl::OUString sURL = impl_createItemURL(nItem); 306 const css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > lItems = m_aConfigItem.GetList(m_eList); 307 const ::sal_Int32 c = lItems.getLength (); 308 ::sal_Bool bFound = sal_False; 309 310 if (nIndex >= c) 311 return sal_False; 312 313 const ::comphelper::SequenceAsHashMap aItem(lItems[nIndex]); 314 ::rtl::OUString sCheck = aItem.getUnpackedValueOrDefault(s_sURL, ::rtl::OUString()); 315 316 bFound = sCheck.equals(sURL); 317 if ( ! bFound) 318 return sal_False; 319 bFound = sal_False; 320 321 try 322 { 323 css::uno::Reference< css::container::XNameAccess > xItemList = impl_getItemList(); 324 css::uno::Reference< css::container::XNameAccess > xItem ; 325 xItemList->getByName(sURL) >>= xItem; 326 327 bFound = xItem.is(); 328 } 329 catch(const css::container::NoSuchElementException&) 330 {} 331 332 if ( ! bFound) 333 return sal_False; 334 bFound = sal_False; 335 336 try 337 { 338 const ::rtl::OUString sOrder = ::rtl::OUString::valueOf(nIndex); 339 css::uno::Reference< css::container::XNameAccess > xOrderList = impl_getOrderList(); 340 css::uno::Reference< css::container::XNameAccess > xOrder ; 341 xOrderList->getByName(sOrder) >>= xOrder; 342 343 if (xOrder.is()) 344 { 345 xOrder->getByName(s_sHistoryItemRef) >>= sCheck; 346 bFound = sCheck.equals(sURL); 347 } 348 } 349 catch(const css::container::NoSuchElementException&) 350 {} 351 352 return bFound; 353 } 354 355 //============================================================================= 356 css::uno::Reference< css::container::XNameAccess > HistoryOptTest::impl_getItemList() 357 { 358 css::uno::Reference< css::container::XNameAccess > xHistory = impl_getNewHistory(); 359 css::uno::Reference< css::container::XNameAccess > xList ; 360 xHistory->getByName (s_sItemList) >>= xList; 361 362 if ( ! xList.is()) 363 throw css::uno::Exception(MESSAGE_MISS_ITEMLIST, 0); 364 365 return xList; 366 } 367 368 //============================================================================= 369 css::uno::Reference< css::container::XNameAccess > HistoryOptTest::impl_getOrderList() 370 { 371 css::uno::Reference< css::container::XNameAccess > xHistory = impl_getNewHistory(); 372 css::uno::Reference< css::container::XNameAccess > xList ; 373 xHistory->getByName (s_sOrderList) >>= xList; 374 375 if ( ! xList.is()) 376 throw css::uno::Exception(MESSAGE_MISS_ORDERLIST, 0); 377 378 return xList; 379 } 380 381 //============================================================================= 382 css::uno::Reference< css::container::XNameAccess > HistoryOptTest::impl_getNewHistory() 383 { 384 if ( ! m_xHistoriesXCU.is()) 385 { 386 m_xHistoriesXCU = css::uno::Reference< css::container::XNameAccess >( 387 ::comphelper::ConfigurationHelper::openConfig( 388 ::utl::getProcessServiceFactory(), 389 s_sHistories, 390 ::comphelper::ConfigurationHelper::E_STANDARD), 391 css::uno::UNO_QUERY_THROW); 392 } 393 394 css::uno::Reference< css::container::XNameAccess > xHistory; 395 396 switch (m_eList) 397 { 398 case ePICKLIST : 399 m_xHistoriesXCU->getByName(s_sPickList) >>= xHistory; 400 break; 401 402 case eHISTORY : 403 m_xHistoriesXCU->getByName(s_sURLHistory) >>= xHistory; 404 break; 405 406 case eHELPBOOKMARKS : 407 m_xHistoriesXCU->getByName(s_sHelpBookmarks) >>= xHistory; 408 break; 409 } 410 411 if ( ! xHistory.is()) 412 throw css::uno::Exception(MESSAGE_MISS_HISTORY, 0); 413 414 return xHistory; 415 } 416 417 //============================================================================= 418 css::uno::Reference< css::container::XNameAccess > HistoryOptTest::impl_getOldHistory() 419 { 420 if ( ! m_xCommonXCU.is()) 421 { 422 m_xCommonXCU = css::uno::Reference< css::container::XNameAccess >( 423 ::comphelper::ConfigurationHelper::openConfig( 424 ::utl::getProcessServiceFactory(), 425 s_sCommonHistory, 426 ::comphelper::ConfigurationHelper::E_STANDARD), 427 css::uno::UNO_QUERY_THROW); 428 } 429 430 css::uno::Reference< css::container::XNameAccess > xHistory; 431 432 switch (m_eList) 433 { 434 case ePICKLIST : 435 m_xCommonXCU->getByName(s_sPickList) >>= xHistory; 436 break; 437 438 case eHISTORY : 439 m_xCommonXCU->getByName(s_sURLHistory) >>= xHistory; 440 break; 441 442 case eHELPBOOKMARKS : 443 m_xCommonXCU->getByName(s_sHelpBookmarks) >>= xHistory; 444 break; 445 } 446 447 if ( ! xHistory.is()) 448 throw css::uno::Exception(MESSAGE_MISS_HISTORY, 0); 449 450 return xHistory; 451 } 452 453 /* 454 //============================================================================= 455 // clear the list in XML directly when using the new Histories.xcs 456 void HistoryOptTest::impl_clearList(const ::rtl::OUString& sList) 457 { 458 css::uno::Reference< css::container::XNameAccess > xListAccess; 459 css::uno::Reference< css::container::XNameContainer > xItemOrder; 460 css::uno::Reference< css::beans::XPropertySet > xFirstItem; 461 css::uno::Sequence< ::rtl::OUString > sFileList; 462 463 if (sList.equalsAscii("PickList")) 464 m_xCfg->getByName(s_sPickList) >>= xListAccess; 465 466 else if (sList.equalsAscii("URLHistory")) 467 m_xCfg->getByName(s_sURLHistory) >>= xListAccess; 468 469 else if (sList.equalsAscii("HelpBookmarks")) 470 m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess; 471 472 if (xListAccess.is()) 473 { 474 xListAccess->getByName(s_sItemList) >>= xItemOrder ; 475 sFileList = xItemOrder->getElementNames(); 476 for(sal_Int32 i=0; i<sFileList.getLength(); ++i) 477 xItemOrder->removeByName(sFileList[i]); 478 479 xListAccess->getByName(s_sOrderList) >>= xItemOrder ; 480 sFileList = xItemOrder->getElementNames(); 481 for(sal_Int32 j=0; j<sFileList.getLength(); ++j) 482 xItemOrder->removeByName(sFileList[j]); 483 484 xFirstItem = css::uno::Reference< css::beans::XPropertySet >(xListAccess, css::uno::UNO_QUERY); 485 xFirstItem->setPropertyValue( s_sFirstItem, css::uno::makeAny((sal_Int32)0) ); 486 487 ::comphelper::ConfigurationHelper::flush(m_xCfg); 488 } 489 } 490 491 //============================================================================= 492 // use configuration API (not ConfigItem!) to verify the results within XML ! 493 sal_Bool HistoryOptTest::impl_isListEmpty(const ::rtl::OUString& sList) 494 { 495 css::uno::Reference< css::container::XNameAccess > xListAccess; 496 css::uno::Reference< css::container::XNameAccess > xItemList; 497 css::uno::Reference< css::container::XNameAccess > xOrderList; 498 sal_Bool bRet = sal_True; 499 500 if (sList.equalsAscii("PickList")) 501 m_xCfg->getByName(s_sPickList) >>= xListAccess; 502 503 else if (sList.equalsAscii("URLHistory")) 504 m_xCfg->getByName(s_sURLHistory) >>= xListAccess; 505 506 else if (sList.equalsAscii("HelpBookmarks")) 507 m_xCfg->getByName(s_sHelpBookmarks) >>= xListAccess; 508 509 if (xListAccess.is()) 510 { 511 xListAccess->getByName(s_sItemList) >>= xItemList; 512 xListAccess->getByName(s_sOrderList) >>= xOrderList; 513 514 css::uno::Sequence< ::rtl::OUString > sItemList = xItemList->getElementNames(); 515 css::uno::Sequence< ::rtl::OUString > sOrderList = xOrderList->getElementNames(); 516 if (sItemList.getLength()!=0 || sOrderList.getLength()!=0) 517 bRet = sal_False; 518 } 519 520 return bRet; 521 } 522 523 //============================================================================= 524 // append a item: use configuration API (not ConfigItem!) to verify the results within XML ! 525 void HistoryOptTest::impl_appendItem(const ::rtl::OUString& sList) 526 {//to do... 527 } 528 529 //============================================================================= 530 // test SvtHistoryOptions::GetSize() 531 void HistoryOptTest::impl_checkGetSize(const ::rtl::OUString& sList) 532 { 533 css::uno::Reference< css::beans::XPropertySet > xSet(m_xCommonXCU, css::uno::UNO_QUERY); 534 535 sal_uInt32 nSize = 0; 536 sal_uInt32 nSize_ = 0; 537 538 if (sList.equalsAscii("PickList")) 539 { 540 nSize = aHistoryOpt.GetSize(ePICKLIST); 541 542 xSet->setPropertyValue(s_sPickListSize, css::uno::makeAny(nSize+1)); 543 ::comphelper::ConfigurationHelper::flush(m_xCommonXCU); 544 545 nSize_ = aHistoryOpt.GetSize(ePICKLIST); 546 if (nSize_ == nSize) 547 throw css::uno::RuntimeException( 548 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetSize(ePICKLIST) error!")), 0); 549 } 550 551 else if (sList.equalsAscii("URLHistory")) 552 { 553 nSize = aHistoryOpt.GetSize(eHISTORY); 554 555 xSet->setPropertyValue(s_sURLHistorySize, css::uno::makeAny(nSize+1)); 556 ::comphelper::ConfigurationHelper::flush(m_xCommonXCU); 557 558 nSize_ = aHistoryOpt.GetSize(eHISTORY); 559 560 if (nSize_ == nSize) 561 throw css::uno::RuntimeException( 562 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetSize(eHISTORY) error!")), 0); 563 } 564 565 else if (sList.equalsAscii("HelpBookmarks")) 566 { 567 nSize = aHistoryOpt.GetSize(eHELPBOOKMARKS); 568 569 xSet->setPropertyValue(s_sHelpBookmarksSize, css::uno::makeAny(nSize+1)); 570 ::comphelper::ConfigurationHelper::flush(m_xCommonXCU); 571 572 nSize_ = aHistoryOpt.GetSize(eHELPBOOKMARKS); 573 574 if (nSize_ == nSize) 575 throw css::uno::RuntimeException( 576 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetSize(eHELPBOOKMARKS) error!")), 0); 577 } 578 } 579 580 //============================================================================= 581 // test SvtHistoryOptions::SetSize() 582 void HistoryOptTest::impl_checkSetSize(const ::rtl::OUString& sList) 583 { 584 css::uno::Reference< css::beans::XPropertySet > xSet(m_xCommonXCU, css::uno::UNO_QUERY); 585 586 sal_uInt32 nSize = 0; 587 sal_uInt32 nSize_ = 0; 588 589 if (sList.equalsAscii("PickList")) 590 { 591 xSet->getPropertyValue(s_sPickListSize) >>= nSize; 592 aHistoryOpt.SetSize(ePICKLIST, (nSize+1)); 593 xSet->getPropertyValue(s_sPickListSize) >>= nSize_; 594 595 if (nSize_ == nSize) //old config item will throw error 596 throw css::uno::RuntimeException( 597 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SetSize(ePICKLIST) error!")), 0); 598 } 599 600 else if (sList.equalsAscii("URLHistory")) 601 { 602 xSet->getPropertyValue(s_sURLHistorySize) >>= nSize; 603 aHistoryOpt.SetSize(eHISTORY, (nSize+1)); 604 xSet->getPropertyValue(s_sURLHistorySize) >>= nSize_; 605 606 if (nSize_ == nSize) //old config item will throw error 607 throw css::uno::RuntimeException( 608 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SetSize(eHISTORY) error!")), 0); 609 } 610 611 else if (sList.equalsAscii("HelpBookmarks")) 612 { 613 xSet->getPropertyValue(s_sHelpBookmarksSize) >>= nSize; 614 aHistoryOpt.SetSize(eHELPBOOKMARKS, (nSize+1)); 615 xSet->getPropertyValue(s_sHelpBookmarksSize) >>= nSize_; 616 617 if (nSize_ == nSize) //old config item will throw error 618 throw css::uno::RuntimeException( 619 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SetSize(eHELPBOOKMARKS) error!")), 0); 620 } 621 } 622 623 //============================================================================= 624 // test SvtHistoryOptions::Clear() 625 void HistoryOptTest::impl_checkClear(const ::rtl::OUString& sList) 626 { 627 if (sList.equalsAscii("PickList")) 628 { 629 aHistoryOpt.Clear(ePICKLIST); 630 if ( !impl_isListEmpty(s_sPickList) ) 631 throw css::uno::RuntimeException( 632 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Clear(ePICKLIST) error!")), 0); 633 } 634 635 else if (sList.equalsAscii("URLHistory")) 636 { 637 aHistoryOpt.Clear(eHISTORY); 638 if ( !impl_isListEmpty(s_sURLHistory) ) 639 throw css::uno::RuntimeException( 640 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Clear(eHISTORY) error!")), 0); 641 } 642 643 else if (sList.equalsAscii("HelpBookmarks")) 644 { 645 aHistoryOpt.Clear(eHELPBOOKMARKS); 646 if ( !impl_isListEmpty(s_sHelpBookmarks) ) 647 throw css::uno::RuntimeException( 648 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Clear(eHELPBOOKMARKS) error!")), 0); 649 } 650 } 651 652 //============================================================================= 653 // test SvtHistoryOptions::GetList() 654 void HistoryOptTest::impl_checkGetList(const ::rtl::OUString& sList) 655 { 656 if (sList.equalsAscii("PickList")) 657 { 658 impl_clearList(s_sPickList); 659 aHistoryOpt.AppendItem( ePICKLIST , 660 ::rtl::OUString::createFromAscii("file:///c/test1"), 661 ::rtl::OUString::createFromAscii(""), 662 ::rtl::OUString::createFromAscii(""), 663 ::rtl::OUString::createFromAscii("") ); 664 css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aHistoryList = aHistoryOpt.GetList( ePICKLIST ); 665 666 if ( aHistoryList.getLength()==0 ) 667 throw css::uno::RuntimeException( 668 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetList(ePICKLIST) error!")), 0); 669 } 670 671 else if (sList.equalsAscii("URLHistory")) 672 { 673 impl_clearList(s_sURLHistory); 674 aHistoryOpt.AppendItem( eHISTORY , 675 ::rtl::OUString::createFromAscii("file:///c/test1"), 676 ::rtl::OUString::createFromAscii(""), 677 ::rtl::OUString::createFromAscii(""), 678 ::rtl::OUString::createFromAscii("") ); 679 css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aHistoryList = aHistoryOpt.GetList( eHISTORY ); 680 681 if ( aHistoryList.getLength()==0 ) 682 throw css::uno::RuntimeException( 683 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetList(eHISTORY) error!")), 0); 684 } 685 686 else if (sList.equalsAscii("HelpBookmarks")) 687 { 688 impl_clearList(s_sHelpBookmarks); 689 aHistoryOpt.AppendItem( eHELPBOOKMARKS , 690 ::rtl::OUString::createFromAscii("file:///c/test1"), 691 ::rtl::OUString::createFromAscii(""), 692 ::rtl::OUString::createFromAscii(""), 693 ::rtl::OUString::createFromAscii("") ); 694 css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aHistoryList = aHistoryOpt.GetList( eHELPBOOKMARKS ); 695 696 if ( aHistoryList.getLength()==0 ) 697 throw css::uno::RuntimeException( 698 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GetList(eHELPBOOKMARKS) error!")), 0); 699 } 700 } 701 702 void HistoryOptTest::impl_checkAppendItem(const ::rtl::OUString& sList) 703 { 704 if (sList.equalsAscii("PickList")) 705 { 706 impl_clearList(s_sPickList); 707 sal_Int32 nListSize = aHistoryOpt.GetSize(ePICKLIST); 708 709 for (sal_Int32 i=0; i<nListSize; ++i) 710 aHistoryOpt.AppendItem( ePICKLIST , 711 ::rtl::OUString::valueOf(i), 712 ::rtl::OUString::createFromAscii(""), 713 ::rtl::OUString::createFromAscii(""), 714 ::rtl::OUString::createFromAscii("") ); 715 716 aHistoryOpt.AppendItem( ePICKLIST , 717 ::rtl::OUString::valueOf(nListSize), 718 ::rtl::OUString::createFromAscii(""), 719 ::rtl::OUString::createFromAscii(""), 720 ::rtl::OUString::createFromAscii("") ); 721 } 722 723 else if (sList.equalsAscii("URLHistory")) 724 { 725 impl_clearList(s_sURLHistory); 726 sal_Int32 nListSize = aHistoryOpt.GetSize(eHISTORY); 727 728 for (sal_Int32 i=0; i<nListSize; ++i) 729 aHistoryOpt.AppendItem( eHISTORY , 730 ::rtl::OUString::valueOf(i), 731 ::rtl::OUString::createFromAscii(""), 732 ::rtl::OUString::createFromAscii(""), 733 ::rtl::OUString::createFromAscii("") ); 734 735 aHistoryOpt.AppendItem( eHISTORY , 736 ::rtl::OUString::valueOf(nListSize), 737 ::rtl::OUString::createFromAscii(""), 738 ::rtl::OUString::createFromAscii(""), 739 ::rtl::OUString::createFromAscii("") ); 740 } 741 742 else if (sList.equalsAscii("HelpBookmarks")) 743 { 744 //impl_clearList(s_sHelpBookmarks); 745 //sal_Int32 nListSize = aHistoryOpt.GetSize(eHELPBOOKMARKS); 746 747 //for (sal_Int32 i=0; i<nListSize; ++i) 748 // aHistoryOpt.AppendItem( eHELPBOOKMARKS , 749 // ::rtl::OUString::valueOf(i), 750 // ::rtl::OUString::createFromAscii(""), 751 // ::rtl::OUString::createFromAscii(""), 752 // ::rtl::OUString::createFromAscii("") ); 753 754 //aHistoryOpt.AppendItem( eHELPBOOKMARKS , 755 // ::rtl::OUString::valueOf(nListSize), 756 // ::rtl::OUString::createFromAscii(""), 757 // ::rtl::OUString::createFromAscii(""), 758 // ::rtl::OUString::createFromAscii("") ); 759 } 760 } 761 762 //============================================================================= 763 void HistoryOptTest::impl_checkPicklist() 764 { 765 impl_checkGetSize(s_sPickList); 766 impl_checkSetSize(s_sPickList); 767 768 impl_checkClear(s_sPickList); 769 impl_checkGetList(s_sPickList); 770 impl_checkAppendItem(s_sPickList); 771 } 772 773 //============================================================================= 774 void HistoryOptTest::impl_checkURLHistory() 775 { 776 impl_checkGetSize(s_sURLHistory); 777 impl_checkSetSize(s_sURLHistory); 778 779 impl_checkClear(s_sURLHistory); 780 impl_checkGetList(s_sURLHistory); 781 impl_checkAppendItem(s_sURLHistory); 782 } 783 784 //============================================================================= 785 void HistoryOptTest::impl_checkHelpBookmarks() 786 { 787 impl_checkGetSize(s_sHelpBookmarks); 788 impl_checkSetSize(s_sHelpBookmarks); 789 790 impl_checkClear(s_sHelpBookmarks); 791 impl_checkGetList(s_sHelpBookmarks); 792 impl_checkAppendItem(s_sHelpBookmarks); 793 } 794 */ 795