xref: /aoo41x/main/registry/test/testmerge.cxx (revision 51134e9e)
1*51134e9eSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*51134e9eSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*51134e9eSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*51134e9eSAndrew Rist  * distributed with this work for additional information
6*51134e9eSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*51134e9eSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*51134e9eSAndrew Rist  * "License"); you may not use this file except in compliance
9*51134e9eSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*51134e9eSAndrew Rist  *
11*51134e9eSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*51134e9eSAndrew Rist  *
13*51134e9eSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*51134e9eSAndrew Rist  * software distributed under the License is distributed on an
15*51134e9eSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*51134e9eSAndrew Rist  * KIND, either express or implied.  See the License for the
17*51134e9eSAndrew Rist  * specific language governing permissions and limitations
18*51134e9eSAndrew Rist  * under the License.
19*51134e9eSAndrew Rist  *
20*51134e9eSAndrew Rist  *************************************************************/
21*51134e9eSAndrew Rist 
22*51134e9eSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_registry.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <iostream>
28cdf0e10cSrcweir #include <stdio.h>
29cdf0e10cSrcweir #include <string.h>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include "registry/registry.hxx"
32cdf0e10cSrcweir #include "registry/reflread.hxx"
33cdf0e10cSrcweir #include "registry/reflwrit.hxx"
34cdf0e10cSrcweir #include "regdiagnose.h"
35cdf0e10cSrcweir #include <rtl/alloc.h>
36cdf0e10cSrcweir #include <rtl/ustring.hxx>
37cdf0e10cSrcweir 
38cdf0e10cSrcweir 
39cdf0e10cSrcweir using namespace std;
40cdf0e10cSrcweir using namespace rtl;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir sal_Int32 lValue1   = 123456789;
43cdf0e10cSrcweir sal_Int32 lValue2   = 54321;
44cdf0e10cSrcweir sal_Int32 lValue3   = 111333111;
45cdf0e10cSrcweir sal_Int32 lValue4   = 333111333;
46cdf0e10cSrcweir sal_Char* sValue    = (sal_Char*)"string Value";
47cdf0e10cSrcweir OUString wValue = rtl::OUString::createFromAscii( "unicode Value" );
48cdf0e10cSrcweir 
49cdf0e10cSrcweir 
test_generateMerge1()50cdf0e10cSrcweir void test_generateMerge1()
51cdf0e10cSrcweir {
52cdf0e10cSrcweir     Registry *myRegistry = new Registry();
53cdf0e10cSrcweir 
54cdf0e10cSrcweir     RegistryKey rootKey, key1, key2, key3, key4, key5, key6, key7, key8, key9;
55cdf0e10cSrcweir 
56cdf0e10cSrcweir     REG_ENSURE(!myRegistry->create(OUString::createFromAscii("merge1.rdb")), "testGenerateMerge1 error 1");
57cdf0e10cSrcweir     REG_ENSURE(!myRegistry->openRootKey(rootKey), "testGenerateMerge1 error 2");
58cdf0e10cSrcweir 
59cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("MergeKey1"), key1), "testGenerateMerge1 error 3");
60cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey1"), key2), "testGenerateMerge1 error 4");
61cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey1/KeyWithLongValue"), key3), "testGenerateMerge1 error 5");
62cdf0e10cSrcweir     REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_LONG, &lValue1, sizeof(sal_Int32)), "testGenerateMerge1 error 5a");
63cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey2"), key4), "testGenerateMerge1 error 6");
64cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey2/KeyWithStringValue"), key5), "testGenerateMerge1 error 7");
65cdf0e10cSrcweir     REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 7a");
66cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey3"), key6), "testGenerateMerge1 error 8");
67cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), key7), "testGenerateMerge1 error 9");
68cdf0e10cSrcweir     REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_UNICODE, (void*)wValue.getStr(), ((wValue.getLength()+1)*sizeof(sal_Unicode))), "testGenerateMerge1 error 9a");
69cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey4"), key8), "testGenerateMerge1 error 10");
70cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), key9), "testGenerateMerge1 error 11");
71cdf0e10cSrcweir     REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_BINARY, (void*)"abcdefghijklmnopqrstuvwxyz", 27), "testGenerateMerge1 error 11a");
72cdf0e10cSrcweir 
73cdf0e10cSrcweir 
74cdf0e10cSrcweir     REG_ENSURE(!key1.closeKey() &&
75cdf0e10cSrcweir                 !key2.closeKey() &&
76cdf0e10cSrcweir                 !key3.closeKey() &&
77cdf0e10cSrcweir                 !key4.closeKey() &&
78cdf0e10cSrcweir                 !key5.closeKey() &&
79cdf0e10cSrcweir                 !key6.closeKey() &&
80cdf0e10cSrcweir                 !key7.closeKey() &&
81cdf0e10cSrcweir                 !key8.closeKey() &&
82cdf0e10cSrcweir                 !key9.closeKey(), "testGenerateMerge1 error 12");
83cdf0e10cSrcweir 
84cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("MergeKey1u2"), key1), "testGenerateMerge1 error 13");
85cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey11"), key2), "testGenerateMerge1 error 14");
86cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), key3), "testGenerateMerge1 error 15");
87cdf0e10cSrcweir     REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_LONG, &lValue2, sizeof(sal_Int32)), "testGenerateMerge1 error 15a");
88cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey12"), key4), "testGenerateMerge1 error 16");
89cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), key5), "testGenerateMerge1 error 17");
90cdf0e10cSrcweir     REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 17a");
91cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey13"), key6), "testGenerateMerge1 error 18");
92cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), key7), "testGenerateMerge1 error 19");
93cdf0e10cSrcweir     REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_UNICODE, (void*)wValue.getStr(), ((wValue.getLength()+1)*sizeof(sal_Unicode))), "testGenerateMerge1 error 19a");
94cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2"), key8), "testGenerateMerge1 error 20");
95cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), key9), "testGenerateMerge1 error 21");
96cdf0e10cSrcweir     REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_LONG, &lValue3, sizeof(sal_Int32)), "testGenerateMerge1 error 21a");
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     REG_ENSURE(!rootKey.closeKey() &&
99cdf0e10cSrcweir                 !key1.closeKey() &&
100cdf0e10cSrcweir                 !key2.closeKey() &&
101cdf0e10cSrcweir                 !key3.closeKey() &&
102cdf0e10cSrcweir                 !key4.closeKey() &&
103cdf0e10cSrcweir                 !key5.closeKey() &&
104cdf0e10cSrcweir                 !key6.closeKey() &&
105cdf0e10cSrcweir                 !key7.closeKey() &&
106cdf0e10cSrcweir                 !key8.closeKey() &&
107cdf0e10cSrcweir                 !key9.closeKey(), "testGenerateMerge1 error 22");
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 
110cdf0e10cSrcweir     delete myRegistry;
111cdf0e10cSrcweir 
112cdf0e10cSrcweir     cout << "test_generateMerge1() Ok!\n";
113cdf0e10cSrcweir     return;
114cdf0e10cSrcweir }
115cdf0e10cSrcweir 
test_generateMerge2()116cdf0e10cSrcweir void test_generateMerge2()
117cdf0e10cSrcweir {
118cdf0e10cSrcweir     Registry *myRegistry = new Registry();
119cdf0e10cSrcweir 
120cdf0e10cSrcweir     RegistryKey rootKey, key1, key2, key3, key4, key5, key6, key7, key8, key9;
121cdf0e10cSrcweir 
122cdf0e10cSrcweir     REG_ENSURE(!myRegistry->create(OUString::createFromAscii("merge2.rdb")), "testGenerateMerge2 error 1");
123cdf0e10cSrcweir     REG_ENSURE(!myRegistry->openRootKey(rootKey), "testGenerateMerge2 error 2");
124cdf0e10cSrcweir 
125cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("MergeKey2"), key1), "testGenerateMerge2 error 3");
126cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey1"), key2), "testGenerateMerge2 error 4");
127cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), key3), "testGenerateMerge2 error 5");
128cdf0e10cSrcweir     REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_BINARY, (void*)"1234567890", 11), "testGenerateMerge1 error 5a");
129cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey2"), key4), "testGenerateMerge2 error 6");
130cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), key5), "testGenerateMerge2 error 7");
131cdf0e10cSrcweir     REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_UNICODE, (void*)wValue.getStr(), ((wValue.getLength()+1)*sizeof(sal_Unicode))), "testGenerateMerge1 error 7a");
132cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey3"), key6), "testGenerateMerge2 error 8");
133cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey3/KeyWithStringValue"), key7), "testGenerateMerge2 error 9");
134cdf0e10cSrcweir     REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 9a");
135cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey4"), key8), "testGenerateMerge2 error 10");
136cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey2/MK2SubKey4/KeyWithLongValue"), key9), "testGenerateMerge2 error 11");
137cdf0e10cSrcweir     REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_LONG, &lValue1, sizeof(sal_Int32)), "testGenerateMerge1 error 11a");
138cdf0e10cSrcweir 
139cdf0e10cSrcweir     REG_ENSURE(!key1.closeKey() &&
140cdf0e10cSrcweir                 !key2.closeKey() &&
141cdf0e10cSrcweir                 !key3.closeKey() &&
142cdf0e10cSrcweir                 !key4.closeKey() &&
143cdf0e10cSrcweir                 !key5.closeKey() &&
144cdf0e10cSrcweir                 !key6.closeKey() &&
145cdf0e10cSrcweir                 !key7.closeKey() &&
146cdf0e10cSrcweir                 !key8.closeKey() &&
147cdf0e10cSrcweir                 !key9.closeKey(), "testGenerateMerge2 error 12");
148cdf0e10cSrcweir 
149cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("MergeKey1u2"), key1), "testGenerateMerge2 error 13");
150cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey21"), key2), "testGenerateMerge2 error 14");
151cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), key3), "testGenerateMerge2 error 15");
152cdf0e10cSrcweir     REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_BINARY, (void*)"a1b2c3d4e5f6g7h8i9", 19), "testGenerateMerge1 error 15a");
153cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey22"), key4), "testGenerateMerge2 error 16");
154cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), key5), "testGenerateMerge2 error 17");
155cdf0e10cSrcweir     REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_LONG, &lValue2, sizeof(sal_Int32)), "testGenerateMerge1 error 17a");
156cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey23"), key6), "testGenerateMerge2 error 18");
157cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), key7), "testGenerateMerge2 error 19");
158cdf0e10cSrcweir     REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 19a");
159cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2"), key8), "testGenerateMerge2 error 20");
160cdf0e10cSrcweir     REG_ENSURE(!rootKey.createKey(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), key9), "testGenerateMerge2 error 21");
161cdf0e10cSrcweir     REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_LONG, &lValue4, sizeof(sal_Int32)), "testGenerateMerge1 error 21a");
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     REG_ENSURE(!rootKey.closeKey() &&
164cdf0e10cSrcweir                 !key1.closeKey() &&
165cdf0e10cSrcweir                 !key2.closeKey() &&
166cdf0e10cSrcweir                 !key3.closeKey() &&
167cdf0e10cSrcweir                 !key4.closeKey() &&
168cdf0e10cSrcweir                 !key5.closeKey() &&
169cdf0e10cSrcweir                 !key6.closeKey() &&
170cdf0e10cSrcweir                 !key7.closeKey() &&
171cdf0e10cSrcweir                 !key8.closeKey() &&
172cdf0e10cSrcweir                 !key9.closeKey(), "testGenerateMerge2 error 22");
173cdf0e10cSrcweir 
174cdf0e10cSrcweir 
175cdf0e10cSrcweir     delete myRegistry;
176cdf0e10cSrcweir 
177cdf0e10cSrcweir     cout << "test_generateMerge2() Ok!\n";
178cdf0e10cSrcweir     return;
179cdf0e10cSrcweir }
180cdf0e10cSrcweir 
test_merge()181cdf0e10cSrcweir void test_merge()
182cdf0e10cSrcweir {
183cdf0e10cSrcweir     Registry *myRegistry = new Registry();
184cdf0e10cSrcweir 
185cdf0e10cSrcweir     RegistryKey rootKey, key1, mkey1, key2, mkey2, key1u2, mkey1u2;
186cdf0e10cSrcweir 
187cdf0e10cSrcweir     REG_ENSURE(!myRegistry->create(OUString::createFromAscii("mergetest.rdb")), "testMerge error 1");
188cdf0e10cSrcweir     REG_ENSURE(myRegistry->getName().equals(OUString::createFromAscii("mergetest.rdb")), "testMerge error 1.a)");
189cdf0e10cSrcweir     REG_ENSURE(!myRegistry->openRootKey(rootKey), "testMerge error 2");
190cdf0e10cSrcweir     REG_ENSURE(!myRegistry->loadKey(rootKey, OUString::createFromAscii("/stardiv/IchbineinMergeKey"),
191cdf0e10cSrcweir 				OUString::createFromAscii("merge1.rdb")), "testMerge error 3");
192cdf0e10cSrcweir     REG_ENSURE(!myRegistry->mergeKey(rootKey, OUString::createFromAscii("/stardiv/IchbineinMergeKey"),
193cdf0e10cSrcweir 				OUString::createFromAscii("merge2.rdb")), "testMerge error 4");
194cdf0e10cSrcweir 
195cdf0e10cSrcweir     ///////////////////////////////////////////////////////////////////////////
196cdf0e10cSrcweir 
197cdf0e10cSrcweir     REG_ENSURE(!rootKey.openKey(OUString::createFromAscii("/stardiv/IchbineinMergeKey"), key1), "testMerge error 5");
198cdf0e10cSrcweir 
199cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("MergeKey1"), mkey1), "testMerge error 6");
200cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 7");
201cdf0e10cSrcweir 
202cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey1"), mkey1), "testMerge error 8");
203cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 9");
204cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey1/KeyWithLongValue"), mkey1), "testMerge error 10");
205cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 11");
206cdf0e10cSrcweir 
207cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey2"), mkey1), "testMerge error 12");
208cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 13");
209cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey2/KeyWithStringValue"), mkey1), "testMerge error 14");
210cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 15");
211cdf0e10cSrcweir 
212cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey3"), mkey1), "testMerge error 16");
213cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 17");
214cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), mkey1), "testMerge error 18");
215cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 19");
216cdf0e10cSrcweir 
217cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey4"), mkey1), "testMerge error 20");
218cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 21");
219cdf0e10cSrcweir     REG_ENSURE(!key1.openKey(OUString::createFromAscii("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), mkey1), "testMerge error 22");
220cdf0e10cSrcweir     REG_ENSURE(!mkey1.closeKey(), "testMerge error 23");
221cdf0e10cSrcweir 
222cdf0e10cSrcweir     REG_ENSURE(!key1.closeKey(), "testMerge error 24");
223cdf0e10cSrcweir 
224cdf0e10cSrcweir     ///////////////////////////////////////////////////////////////////////////
225cdf0e10cSrcweir 
226cdf0e10cSrcweir     REG_ENSURE(!rootKey.openKey(OUString::createFromAscii("/stardiv/IchbineinMergeKey"), key2), "testMerge error 25");
227cdf0e10cSrcweir 
228cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("MergeKey2"), mkey2), "testMerge error 26");
229cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 27");
230cdf0e10cSrcweir 
231cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey1"), mkey2), "testMerge error 28");
232cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 29");
233cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), mkey2), "testMerge error 30");
234cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 31");
235cdf0e10cSrcweir 
236cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey2"), mkey2), "testMerge error 31");
237cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 33");
238cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), mkey2), "testMerge error 34");
239cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 35");
240cdf0e10cSrcweir 
241cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey3"), mkey2), "testMerge error 36");
242cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 37");
243cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey3/KeyWithStringValue"), mkey2), "testMerge error 38");
244cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 39");
245cdf0e10cSrcweir 
246cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey4"), mkey2), "testMerge error 40");
247cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 41");
248cdf0e10cSrcweir     REG_ENSURE(!key2.openKey(OUString::createFromAscii("/MergeKey2/MK2SubKey4/KeyWithLongValue"), mkey2), "testMerge error 42");
249cdf0e10cSrcweir     REG_ENSURE(!mkey2.closeKey(), "testMerge error 43");
250cdf0e10cSrcweir 
251cdf0e10cSrcweir     REG_ENSURE(!key2.closeKey(), "testMerge error 44");
252cdf0e10cSrcweir 
253cdf0e10cSrcweir     ///////////////////////////////////////////////////////////////////////////
254cdf0e10cSrcweir 
255cdf0e10cSrcweir     REG_ENSURE(!rootKey.openKey(OUString::createFromAscii("/stardiv/IchbineinMergeKey"), key1u2), "testMerge error 40");
256cdf0e10cSrcweir 
257cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("MergeKey1u2"), mkey1u2), "testMerge error 41");
258cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 42");
259cdf0e10cSrcweir 
260cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey11"), mkey1u2), "testMerge error 43");
261cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 44");
262cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), mkey1u2), "testMerge error 45");
263cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 46");
264cdf0e10cSrcweir 
265cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey12"), mkey1u2), "testMerge error 47");
266cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 48");
267cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), mkey1u2), "testMerge error 49");
268cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 50");
269cdf0e10cSrcweir 
270cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey13"), mkey1u2), "testMerge error 51");
271cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 52");
272cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), mkey1u2), "testMerge error 53");
273cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 54");
274cdf0e10cSrcweir 
275cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey21"), mkey1u2), "testMerge error 55");
276cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 56");
277cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), mkey1u2), "testMerge error 57");
278cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 58");
279cdf0e10cSrcweir 
280cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey22"), mkey1u2), "testMerge error 59");
281cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 60");
282cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), mkey1u2), "testMerge error 61");
283cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 62");
284cdf0e10cSrcweir 
285cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey23"), mkey1u2), "testMerge error 63");
286cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 64");
287cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), mkey1u2), "testMerge error 65");
288cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 66");
289cdf0e10cSrcweir 
290cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2"), mkey1u2), "testMerge error 67");
291cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 68");
292cdf0e10cSrcweir     REG_ENSURE(!key1u2.openKey(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), mkey1u2), "testMerge error 69");
293cdf0e10cSrcweir     REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 70");
294cdf0e10cSrcweir 
295cdf0e10cSrcweir     REG_ENSURE(!key1u2.closeKey(), "testMerge error 71");
296cdf0e10cSrcweir 
297cdf0e10cSrcweir     ///////////////////////////////////////////////////////////////////////////
298cdf0e10cSrcweir 
299cdf0e10cSrcweir     RegValueType    valueType;
300cdf0e10cSrcweir     sal_uInt32          valueSize;
301cdf0e10cSrcweir     sal_Int32           int32Value;
302cdf0e10cSrcweir     sal_uInt8           *Value;
303cdf0e10cSrcweir 
304cdf0e10cSrcweir     REG_ENSURE(!rootKey.openKey(OUString::createFromAscii("/stardiv/IchbineinMergeKey"), key1), "testMerge error 72");
305cdf0e10cSrcweir 
306cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1/MK1SubKey1/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 73");
307cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 74");
308cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1/MK1SubKey1/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 74.a)");
309cdf0e10cSrcweir     REG_ENSURE(int32Value == lValue1, "testMerge error 74.b)");
310cdf0e10cSrcweir 
311cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1/MK1SubKey2/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 75");
312cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 76");
313cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
314cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1/MK1SubKey2/KeyWithStringValue"), (RegValue)Value), "testMerge error 76.a)");
315cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 76.b)");
316cdf0e10cSrcweir     delete [] Value;
317cdf0e10cSrcweir 
318cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), &valueType, &valueSize), "testMerge error 77");
319cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_UNICODE && valueSize == (wValue.getLength()+1)*sizeof(sal_Unicode), "testMerge error 78");
320cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
321cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), (RegValue)Value), "testMerge error 78.a)");
322cdf0e10cSrcweir     REG_ENSURE(wValue.equals( (const sal_Unicode*)Value ), "testMerge error 78.b)");
323cdf0e10cSrcweir     delete [] Value;
324cdf0e10cSrcweir 
325cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), &valueType, &valueSize), "testMerge error 79");
326cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_BINARY && valueSize == 27, "testMerge error 80");
327cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
328cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), (RegValue)Value), "testMerge error 80.a)");
329cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, "abcdefghijklmnopqrstuvwxyz") == 0, "testMerge error 80.b)");
330cdf0e10cSrcweir     delete [] Value;
331cdf0e10cSrcweir 
332cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), &valueType, &valueSize), "testMerge error 81");
333cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_BINARY && valueSize == 11, "testMerge error 82");
334cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
335cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), (RegValue)Value), "testMerge error 82.a)");
336cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, "1234567890") == 0, "testMerge error 82.b)");
337cdf0e10cSrcweir     delete [] Value;
338cdf0e10cSrcweir 
339cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), &valueType, &valueSize), "testMerge error 83");
340cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_UNICODE&& valueSize == (wValue.getLength()+1)*sizeof(sal_Unicode), "testMerge error 84");
341cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
342cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), (RegValue)Value), "testMerge error 84.a)");
343cdf0e10cSrcweir     REG_ENSURE(wValue.equals( (const sal_Unicode*)Value ), "testMerge error 84.b)");
344cdf0e10cSrcweir     delete [] Value;
345cdf0e10cSrcweir 
346cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey2/MK2SubKey3/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 85");
347cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 86");
348cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
349cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey2/MK2SubKey3/KeyWithStringValue"), (RegValue)Value), "testMerge error 86.a)");
350cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 86.b)");
351cdf0e10cSrcweir     delete [] Value;
352cdf0e10cSrcweir 
353cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey2/MK2SubKey4/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 87");
354cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 88");
355cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey2/MK2SubKey4/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 88.a)");
356cdf0e10cSrcweir     REG_ENSURE(int32Value == lValue1, "testMerge error 88.b)");
357cdf0e10cSrcweir 
358cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 89");
359cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 90");
360cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 90.a)");
361cdf0e10cSrcweir     REG_ENSURE(int32Value == lValue2, "testMerge error 90.b)");
362cdf0e10cSrcweir 
363cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 91");
364cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 92");
365cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
366cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), (RegValue)Value), "testMerge error 92.a)");
367cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 92.b)");
368cdf0e10cSrcweir     delete [] Value;
369cdf0e10cSrcweir 
370cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), &valueType, &valueSize), "testMerge error 93");
371cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_UNICODE && valueSize == (wValue.getLength()+1)*sizeof(sal_Unicode), "testMerge error 94");
372cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
373cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), (RegValue)Value), "testMerge error 94.a)");
374cdf0e10cSrcweir     REG_ENSURE(wValue.equals( (const sal_Unicode*)Value ), "testMerge error 94.b)");
375cdf0e10cSrcweir     delete [] Value;
376cdf0e10cSrcweir 
377cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), &valueType, &valueSize), "testMerge error 95");
378cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_BINARY && valueSize == 19, "testMerge error 96");
379cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
380cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), (RegValue)Value), "testMerge error 96.a)");
381cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, "a1b2c3d4e5f6g7h8i9") == 0, "testMerge error 96.b)");
382cdf0e10cSrcweir     delete [] Value;
383cdf0e10cSrcweir 
384cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 97");
385cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 98");
386cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 98.a)");
387cdf0e10cSrcweir     REG_ENSURE(int32Value == lValue2, "testMerge error 98.b)");
388cdf0e10cSrcweir 
389cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 99");
390cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 100");
391cdf0e10cSrcweir     Value = new sal_uInt8[valueSize];
392cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), (RegValue)Value), "testMerge error 100.a)");
393cdf0e10cSrcweir     REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 100.b)");
394cdf0e10cSrcweir     delete [] Value;
395cdf0e10cSrcweir 
396cdf0e10cSrcweir     REG_ENSURE(!key1.getValueInfo(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 101");
397cdf0e10cSrcweir     REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 102");
398cdf0e10cSrcweir     REG_ENSURE(!key1.getValue(OUString::createFromAscii("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 102.a)");
399cdf0e10cSrcweir     REG_ENSURE(int32Value == lValue4, "testMerge error 102.b)");
400cdf0e10cSrcweir 
401cdf0e10cSrcweir 
402cdf0e10cSrcweir     REG_ENSURE(!key1.closeKey(), "testMerge error 24");
403cdf0e10cSrcweir 
404cdf0e10cSrcweir     ///////////////////////////////////////////////////////////////////////////
405cdf0e10cSrcweir 
406cdf0e10cSrcweir     REG_ENSURE(!rootKey.closeKey(), "testMerge error 10");
407cdf0e10cSrcweir 
408cdf0e10cSrcweir     REG_ENSURE(!myRegistry->destroy( OUString::createFromAscii("merge1.rdb") ), "test_registry_CppApi error 11");
409cdf0e10cSrcweir     REG_ENSURE(!myRegistry->destroy( OUString::createFromAscii("merge2.rdb") ), "test_registry_CppApi error 12");
410cdf0e10cSrcweir     REG_ENSURE(!myRegistry->destroy( OUString() ), "test_registry_CppApi error 13");
411cdf0e10cSrcweir 
412cdf0e10cSrcweir     delete myRegistry;
413cdf0e10cSrcweir 
414cdf0e10cSrcweir     cout << "test_merge() Ok!\n";
415cdf0e10cSrcweir     return;
416cdf0e10cSrcweir }
417cdf0e10cSrcweir 
418cdf0e10cSrcweir 
419