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