PageRenderTime 52ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/registry/test/testmerge.cxx

https://bitbucket.org/markjenkins/libreoffice_ubuntu-debian-fixes
C++ | 414 lines | 304 code | 86 blank | 24 comment | 57 complexity | 9b9afa4abdd686dd9a201f10e56405bf MD5 | raw file
Possible License(s): GPL-3.0, LGPL-3.0, MPL-2.0-no-copyleft-exception, LGPL-2.1, BSD-3-Clause-No-Nuclear-License-2014
  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
  2. /*
  3. * This file is part of the LibreOffice project.
  4. *
  5. * This Source Code Form is subject to the terms of the Mozilla Public
  6. * License, v. 2.0. If a copy of the MPL was not distributed with this
  7. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  8. *
  9. * This file incorporates work covered by the following license notice:
  10. *
  11. * Licensed to the Apache Software Foundation (ASF) under one or more
  12. * contributor license agreements. See the NOTICE file distributed
  13. * with this work for additional information regarding copyright
  14. * ownership. The ASF licenses this file to you under the Apache
  15. * License, Version 2.0 (the "License"); you may not use this file
  16. * except in compliance with the License. You may obtain a copy of
  17. * the License at http://www.apache.org/licenses/LICENSE-2.0 .
  18. */
  19. #include <iostream>
  20. #include <stdio.h>
  21. #include <string.h>
  22. #include "registry/registry.hxx"
  23. #include "registry/reflread.hxx"
  24. #include "registry/reflwrit.hxx"
  25. #include "regdiagnose.h"
  26. #include <rtl/alloc.h>
  27. #include <rtl/ustring.hxx>
  28. using namespace std;
  29. using ::rtl::OUString;
  30. sal_Int32 lValue1 = 123456789;
  31. sal_Int32 lValue2 = 54321;
  32. sal_Int32 lValue3 = 111333111;
  33. sal_Int32 lValue4 = 333111333;
  34. sal_Char* sValue = (sal_Char*)"string Value";
  35. OUString wValue("unicode Value");
  36. void test_generateMerge1()
  37. {
  38. Registry *myRegistry = new Registry();
  39. RegistryKey rootKey, key1, key2, key3, key4, key5, key6, key7, key8, key9;
  40. REG_ENSURE(!myRegistry->create(OUString("merge1.rdb")), "testGenerateMerge1 error 1");
  41. REG_ENSURE(!myRegistry->openRootKey(rootKey), "testGenerateMerge1 error 2");
  42. REG_ENSURE(!rootKey.createKey(OUString("MergeKey1"), key1), "testGenerateMerge1 error 3");
  43. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey1"), key2), "testGenerateMerge1 error 4");
  44. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey1/KeyWithLongValue"), key3), "testGenerateMerge1 error 5");
  45. REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_LONG, &lValue1, sizeof(sal_Int32)), "testGenerateMerge1 error 5a");
  46. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey2"), key4), "testGenerateMerge1 error 6");
  47. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey2/KeyWithStringValue"), key5), "testGenerateMerge1 error 7");
  48. REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 7a");
  49. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey3"), key6), "testGenerateMerge1 error 8");
  50. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), key7), "testGenerateMerge1 error 9");
  51. REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_UNICODE, (void*)wValue.getStr(), ((wValue.getLength()+1)*sizeof(sal_Unicode))), "testGenerateMerge1 error 9a");
  52. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey4"), key8), "testGenerateMerge1 error 10");
  53. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), key9), "testGenerateMerge1 error 11");
  54. REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_BINARY, (void*)"abcdefghijklmnopqrstuvwxyz", 27), "testGenerateMerge1 error 11a");
  55. REG_ENSURE(!key1.closeKey() &&
  56. !key2.closeKey() &&
  57. !key3.closeKey() &&
  58. !key4.closeKey() &&
  59. !key5.closeKey() &&
  60. !key6.closeKey() &&
  61. !key7.closeKey() &&
  62. !key8.closeKey() &&
  63. !key9.closeKey(), "testGenerateMerge1 error 12");
  64. REG_ENSURE(!rootKey.createKey(OUString("MergeKey1u2"), key1), "testGenerateMerge1 error 13");
  65. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK1SubKey11"), key2), "testGenerateMerge1 error 14");
  66. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), key3), "testGenerateMerge1 error 15");
  67. REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_LONG, &lValue2, sizeof(sal_Int32)), "testGenerateMerge1 error 15a");
  68. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK1SubKey12"), key4), "testGenerateMerge1 error 16");
  69. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), key5), "testGenerateMerge1 error 17");
  70. REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 17a");
  71. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK1SubKey13"), key6), "testGenerateMerge1 error 18");
  72. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), key7), "testGenerateMerge1 error 19");
  73. REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_UNICODE, (void*)wValue.getStr(), ((wValue.getLength()+1)*sizeof(sal_Unicode))), "testGenerateMerge1 error 19a");
  74. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK12SubKey1u2"), key8), "testGenerateMerge1 error 20");
  75. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), key9), "testGenerateMerge1 error 21");
  76. REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_LONG, &lValue3, sizeof(sal_Int32)), "testGenerateMerge1 error 21a");
  77. REG_ENSURE(!rootKey.closeKey() &&
  78. !key1.closeKey() &&
  79. !key2.closeKey() &&
  80. !key3.closeKey() &&
  81. !key4.closeKey() &&
  82. !key5.closeKey() &&
  83. !key6.closeKey() &&
  84. !key7.closeKey() &&
  85. !key8.closeKey() &&
  86. !key9.closeKey(), "testGenerateMerge1 error 22");
  87. delete myRegistry;
  88. cout << "test_generateMerge1() Ok!\n";
  89. return;
  90. }
  91. void test_generateMerge2()
  92. {
  93. Registry *myRegistry = new Registry();
  94. RegistryKey rootKey, key1, key2, key3, key4, key5, key6, key7, key8, key9;
  95. REG_ENSURE(!myRegistry->create(OUString("merge2.rdb")), "testGenerateMerge2 error 1");
  96. REG_ENSURE(!myRegistry->openRootKey(rootKey), "testGenerateMerge2 error 2");
  97. REG_ENSURE(!rootKey.createKey(OUString("MergeKey2"), key1), "testGenerateMerge2 error 3");
  98. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey1"), key2), "testGenerateMerge2 error 4");
  99. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), key3), "testGenerateMerge2 error 5");
  100. REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_BINARY, (void*)"1234567890", 11), "testGenerateMerge1 error 5a");
  101. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey2"), key4), "testGenerateMerge2 error 6");
  102. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), key5), "testGenerateMerge2 error 7");
  103. REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_UNICODE, (void*)wValue.getStr(), ((wValue.getLength()+1)*sizeof(sal_Unicode))), "testGenerateMerge1 error 7a");
  104. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey3"), key6), "testGenerateMerge2 error 8");
  105. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey3/KeyWithStringValue"), key7), "testGenerateMerge2 error 9");
  106. REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 9a");
  107. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey4"), key8), "testGenerateMerge2 error 10");
  108. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey2/MK2SubKey4/KeyWithLongValue"), key9), "testGenerateMerge2 error 11");
  109. REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_LONG, &lValue1, sizeof(sal_Int32)), "testGenerateMerge1 error 11a");
  110. REG_ENSURE(!key1.closeKey() &&
  111. !key2.closeKey() &&
  112. !key3.closeKey() &&
  113. !key4.closeKey() &&
  114. !key5.closeKey() &&
  115. !key6.closeKey() &&
  116. !key7.closeKey() &&
  117. !key8.closeKey() &&
  118. !key9.closeKey(), "testGenerateMerge2 error 12");
  119. REG_ENSURE(!rootKey.createKey(OUString("MergeKey1u2"), key1), "testGenerateMerge2 error 13");
  120. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK2SubKey21"), key2), "testGenerateMerge2 error 14");
  121. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), key3), "testGenerateMerge2 error 15");
  122. REG_ENSURE(!key3.setValue(OUString(), RG_VALUETYPE_BINARY, (void*)"a1b2c3d4e5f6g7h8i9", 19), "testGenerateMerge1 error 15a");
  123. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK2SubKey22"), key4), "testGenerateMerge2 error 16");
  124. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), key5), "testGenerateMerge2 error 17");
  125. REG_ENSURE(!key5.setValue(OUString(), RG_VALUETYPE_LONG, &lValue2, sizeof(sal_Int32)), "testGenerateMerge1 error 17a");
  126. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK2SubKey23"), key6), "testGenerateMerge2 error 18");
  127. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), key7), "testGenerateMerge2 error 19");
  128. REG_ENSURE(!key7.setValue(OUString(), RG_VALUETYPE_STRING, sValue, strlen(sValue)+1), "testGenerateMerge1 error 19a");
  129. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK12SubKey1u2"), key8), "testGenerateMerge2 error 20");
  130. REG_ENSURE(!rootKey.createKey(OUString("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), key9), "testGenerateMerge2 error 21");
  131. REG_ENSURE(!key9.setValue(OUString(), RG_VALUETYPE_LONG, &lValue4, sizeof(sal_Int32)), "testGenerateMerge1 error 21a");
  132. REG_ENSURE(!rootKey.closeKey() &&
  133. !key1.closeKey() &&
  134. !key2.closeKey() &&
  135. !key3.closeKey() &&
  136. !key4.closeKey() &&
  137. !key5.closeKey() &&
  138. !key6.closeKey() &&
  139. !key7.closeKey() &&
  140. !key8.closeKey() &&
  141. !key9.closeKey(), "testGenerateMerge2 error 22");
  142. delete myRegistry;
  143. cout << "test_generateMerge2() Ok!\n";
  144. return;
  145. }
  146. void test_merge()
  147. {
  148. Registry *myRegistry = new Registry();
  149. RegistryKey rootKey, key1, mkey1, key2, mkey2, key1u2, mkey1u2;
  150. REG_ENSURE(!myRegistry->create(OUString("mergetest.rdb")), "testMerge error 1");
  151. REG_ENSURE(myRegistry->getName() == "mergetest.rdb", "testMerge error 1.a)");
  152. REG_ENSURE(!myRegistry->openRootKey(rootKey), "testMerge error 2");
  153. REG_ENSURE(!myRegistry->loadKey(rootKey, OUString("/stardiv/IchbineinMergeKey"),
  154. OUString("merge1.rdb")), "testMerge error 3");
  155. REG_ENSURE(!myRegistry->mergeKey(rootKey, OUString("/stardiv/IchbineinMergeKey"),
  156. OUString("merge2.rdb")), "testMerge error 4");
  157. ///////////////////////////////////////////////////////////////////////////
  158. REG_ENSURE(!rootKey.openKey(OUString("/stardiv/IchbineinMergeKey"), key1), "testMerge error 5");
  159. REG_ENSURE(!key1.openKey(OUString("MergeKey1"), mkey1), "testMerge error 6");
  160. REG_ENSURE(!mkey1.closeKey(), "testMerge error 7");
  161. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey1"), mkey1), "testMerge error 8");
  162. REG_ENSURE(!mkey1.closeKey(), "testMerge error 9");
  163. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey1/KeyWithLongValue"), mkey1), "testMerge error 10");
  164. REG_ENSURE(!mkey1.closeKey(), "testMerge error 11");
  165. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey2"), mkey1), "testMerge error 12");
  166. REG_ENSURE(!mkey1.closeKey(), "testMerge error 13");
  167. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey2/KeyWithStringValue"), mkey1), "testMerge error 14");
  168. REG_ENSURE(!mkey1.closeKey(), "testMerge error 15");
  169. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey3"), mkey1), "testMerge error 16");
  170. REG_ENSURE(!mkey1.closeKey(), "testMerge error 17");
  171. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), mkey1), "testMerge error 18");
  172. REG_ENSURE(!mkey1.closeKey(), "testMerge error 19");
  173. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey4"), mkey1), "testMerge error 20");
  174. REG_ENSURE(!mkey1.closeKey(), "testMerge error 21");
  175. REG_ENSURE(!key1.openKey(OUString("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), mkey1), "testMerge error 22");
  176. REG_ENSURE(!mkey1.closeKey(), "testMerge error 23");
  177. REG_ENSURE(!key1.closeKey(), "testMerge error 24");
  178. ///////////////////////////////////////////////////////////////////////////
  179. REG_ENSURE(!rootKey.openKey(OUString("/stardiv/IchbineinMergeKey"), key2), "testMerge error 25");
  180. REG_ENSURE(!key2.openKey(OUString("MergeKey2"), mkey2), "testMerge error 26");
  181. REG_ENSURE(!mkey2.closeKey(), "testMerge error 27");
  182. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey1"), mkey2), "testMerge error 28");
  183. REG_ENSURE(!mkey2.closeKey(), "testMerge error 29");
  184. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), mkey2), "testMerge error 30");
  185. REG_ENSURE(!mkey2.closeKey(), "testMerge error 31");
  186. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey2"), mkey2), "testMerge error 31");
  187. REG_ENSURE(!mkey2.closeKey(), "testMerge error 33");
  188. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), mkey2), "testMerge error 34");
  189. REG_ENSURE(!mkey2.closeKey(), "testMerge error 35");
  190. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey3"), mkey2), "testMerge error 36");
  191. REG_ENSURE(!mkey2.closeKey(), "testMerge error 37");
  192. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey3/KeyWithStringValue"), mkey2), "testMerge error 38");
  193. REG_ENSURE(!mkey2.closeKey(), "testMerge error 39");
  194. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey4"), mkey2), "testMerge error 40");
  195. REG_ENSURE(!mkey2.closeKey(), "testMerge error 41");
  196. REG_ENSURE(!key2.openKey(OUString("/MergeKey2/MK2SubKey4/KeyWithLongValue"), mkey2), "testMerge error 42");
  197. REG_ENSURE(!mkey2.closeKey(), "testMerge error 43");
  198. REG_ENSURE(!key2.closeKey(), "testMerge error 44");
  199. ///////////////////////////////////////////////////////////////////////////
  200. REG_ENSURE(!rootKey.openKey(OUString("/stardiv/IchbineinMergeKey"), key1u2), "testMerge error 40");
  201. REG_ENSURE(!key1u2.openKey(OUString("MergeKey1u2"), mkey1u2), "testMerge error 41");
  202. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 42");
  203. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK1SubKey11"), mkey1u2), "testMerge error 43");
  204. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 44");
  205. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), mkey1u2), "testMerge error 45");
  206. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 46");
  207. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK1SubKey12"), mkey1u2), "testMerge error 47");
  208. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 48");
  209. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), mkey1u2), "testMerge error 49");
  210. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 50");
  211. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK1SubKey13"), mkey1u2), "testMerge error 51");
  212. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 52");
  213. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), mkey1u2), "testMerge error 53");
  214. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 54");
  215. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK2SubKey21"), mkey1u2), "testMerge error 55");
  216. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 56");
  217. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), mkey1u2), "testMerge error 57");
  218. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 58");
  219. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK2SubKey22"), mkey1u2), "testMerge error 59");
  220. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 60");
  221. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), mkey1u2), "testMerge error 61");
  222. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 62");
  223. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK2SubKey23"), mkey1u2), "testMerge error 63");
  224. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 64");
  225. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), mkey1u2), "testMerge error 65");
  226. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 66");
  227. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK12SubKey1u2"), mkey1u2), "testMerge error 67");
  228. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 68");
  229. REG_ENSURE(!key1u2.openKey(OUString("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), mkey1u2), "testMerge error 69");
  230. REG_ENSURE(!mkey1u2.closeKey(), "testMerge error 70");
  231. REG_ENSURE(!key1u2.closeKey(), "testMerge error 71");
  232. ///////////////////////////////////////////////////////////////////////////
  233. RegValueType valueType;
  234. sal_uInt32 valueSize;
  235. sal_Int32 int32Value;
  236. sal_uInt8 *Value;
  237. REG_ENSURE(!rootKey.openKey(OUString("/stardiv/IchbineinMergeKey"), key1), "testMerge error 72");
  238. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1/MK1SubKey1/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 73");
  239. REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 74");
  240. REG_ENSURE(!key1.getValue(OUString("/MergeKey1/MK1SubKey1/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 74.a)");
  241. REG_ENSURE(int32Value == lValue1, "testMerge error 74.b)");
  242. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1/MK1SubKey2/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 75");
  243. REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 76");
  244. Value = new sal_uInt8[valueSize];
  245. REG_ENSURE(!key1.getValue(OUString("/MergeKey1/MK1SubKey2/KeyWithStringValue"), (RegValue)Value), "testMerge error 76.a)");
  246. REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 76.b)");
  247. delete [] Value;
  248. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), &valueType, &valueSize), "testMerge error 77");
  249. REG_ENSURE(valueType == RG_VALUETYPE_UNICODE && valueSize == (wValue.getLength()+1)*sizeof(sal_Unicode), "testMerge error 78");
  250. Value = new sal_uInt8[valueSize];
  251. REG_ENSURE(!key1.getValue(OUString("/MergeKey1/MK1SubKey3/KeyWithUnicodeValue"), (RegValue)Value), "testMerge error 78.a)");
  252. REG_ENSURE(wValue.equals( (const sal_Unicode*)Value ), "testMerge error 78.b)");
  253. delete [] Value;
  254. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), &valueType, &valueSize), "testMerge error 79");
  255. REG_ENSURE(valueType == RG_VALUETYPE_BINARY && valueSize == 27, "testMerge error 80");
  256. Value = new sal_uInt8[valueSize];
  257. REG_ENSURE(!key1.getValue(OUString("/MergeKey1/MK1SubKey4/KeyWithBinaryValue"), (RegValue)Value), "testMerge error 80.a)");
  258. REG_ENSURE(strcmp((const sal_Char*)Value, "abcdefghijklmnopqrstuvwxyz") == 0, "testMerge error 80.b)");
  259. delete [] Value;
  260. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), &valueType, &valueSize), "testMerge error 81");
  261. REG_ENSURE(valueType == RG_VALUETYPE_BINARY && valueSize == 11, "testMerge error 82");
  262. Value = new sal_uInt8[valueSize];
  263. REG_ENSURE(!key1.getValue(OUString("/MergeKey2/MK2SubKey1/KeyWithBinaryValue"), (RegValue)Value), "testMerge error 82.a)");
  264. REG_ENSURE(strcmp((const sal_Char*)Value, "1234567890") == 0, "testMerge error 82.b)");
  265. delete [] Value;
  266. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), &valueType, &valueSize), "testMerge error 83");
  267. REG_ENSURE(valueType == RG_VALUETYPE_UNICODE&& valueSize == (wValue.getLength()+1)*sizeof(sal_Unicode), "testMerge error 84");
  268. Value = new sal_uInt8[valueSize];
  269. REG_ENSURE(!key1.getValue(OUString("/MergeKey2/MK2SubKey2/KeyWithUnicodeValue"), (RegValue)Value), "testMerge error 84.a)");
  270. REG_ENSURE(wValue.equals( (const sal_Unicode*)Value ), "testMerge error 84.b)");
  271. delete [] Value;
  272. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey2/MK2SubKey3/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 85");
  273. REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 86");
  274. Value = new sal_uInt8[valueSize];
  275. REG_ENSURE(!key1.getValue(OUString("/MergeKey2/MK2SubKey3/KeyWithStringValue"), (RegValue)Value), "testMerge error 86.a)");
  276. REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 86.b)");
  277. delete [] Value;
  278. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey2/MK2SubKey4/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 87");
  279. REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 88");
  280. REG_ENSURE(!key1.getValue(OUString("/MergeKey2/MK2SubKey4/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 88.a)");
  281. REG_ENSURE(int32Value == lValue1, "testMerge error 88.b)");
  282. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 89");
  283. REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 90");
  284. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK1SubKey11/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 90.a)");
  285. REG_ENSURE(int32Value == lValue2, "testMerge error 90.b)");
  286. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 91");
  287. REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 92");
  288. Value = new sal_uInt8[valueSize];
  289. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK1SubKey12/KeyWithStringValue"), (RegValue)Value), "testMerge error 92.a)");
  290. REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 92.b)");
  291. delete [] Value;
  292. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), &valueType, &valueSize), "testMerge error 93");
  293. REG_ENSURE(valueType == RG_VALUETYPE_UNICODE && valueSize == (wValue.getLength()+1)*sizeof(sal_Unicode), "testMerge error 94");
  294. Value = new sal_uInt8[valueSize];
  295. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK1SubKey13/KeyWithUnicodeValue"), (RegValue)Value), "testMerge error 94.a)");
  296. REG_ENSURE(wValue.equals( (const sal_Unicode*)Value ), "testMerge error 94.b)");
  297. delete [] Value;
  298. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), &valueType, &valueSize), "testMerge error 95");
  299. REG_ENSURE(valueType == RG_VALUETYPE_BINARY && valueSize == 19, "testMerge error 96");
  300. Value = new sal_uInt8[valueSize];
  301. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK2SubKey21/KeyWithBinaryValue"), (RegValue)Value), "testMerge error 96.a)");
  302. REG_ENSURE(strcmp((const sal_Char*)Value, "a1b2c3d4e5f6g7h8i9") == 0, "testMerge error 96.b)");
  303. delete [] Value;
  304. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 97");
  305. REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 98");
  306. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK2SubKey22/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 98.a)");
  307. REG_ENSURE(int32Value == lValue2, "testMerge error 98.b)");
  308. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), &valueType, &valueSize), "testMerge error 99");
  309. REG_ENSURE(valueType == RG_VALUETYPE_STRING && valueSize == strlen(sValue)+1, "testMerge error 100");
  310. Value = new sal_uInt8[valueSize];
  311. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK2SubKey23/KeyWithStringValue"), (RegValue)Value), "testMerge error 100.a)");
  312. REG_ENSURE(strcmp((const sal_Char*)Value, sValue) == 0, "testMerge error 100.b)");
  313. delete [] Value;
  314. REG_ENSURE(!key1.getValueInfo(OUString("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), &valueType, &valueSize), "testMerge error 101");
  315. REG_ENSURE(valueType == RG_VALUETYPE_LONG && valueSize == sizeof(sal_Int32), "testMerge error 102");
  316. REG_ENSURE(!key1.getValue(OUString("/MergeKey1u2/MK12SubKey1u2/KeyWithLongValue"), (RegValue)&int32Value), "testMerge error 102.a)");
  317. REG_ENSURE(int32Value == lValue4, "testMerge error 102.b)");
  318. REG_ENSURE(!key1.closeKey(), "testMerge error 24");
  319. ///////////////////////////////////////////////////////////////////////////
  320. REG_ENSURE(!rootKey.closeKey(), "testMerge error 10");
  321. REG_ENSURE(!myRegistry->destroy( OUString("merge1.rdb") ), "test_registry_CppApi error 11");
  322. REG_ENSURE(!myRegistry->destroy( OUString("merge2.rdb") ), "test_registry_CppApi error 12");
  323. REG_ENSURE(!myRegistry->destroy( OUString() ), "test_registry_CppApi error 13");
  324. delete myRegistry;
  325. cout << "test_merge() Ok!\n";
  326. return;
  327. }
  328. /* vim:set shiftwidth=4 softtabstop=4 expandtab: */