gen_map_test_inl.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:8k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: gen_map_test_inl.h,v 1.2.36.3 2004/07/09 01:45:54 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef GEN_MAP_TEST_I
  50. #define GEN_MAP_TEST_I
  51. #include "./map_spec_tests.h"
  52. template <class T, class K, class V>
  53. inline
  54. GenMapTest<T, K, V>::GenMapTest()
  55. {}
  56. template <class T, class K, class V>
  57. inline
  58. GenMapTest<T, K, V>::~GenMapTest()
  59. {}
  60. // Store manipulation
  61. template <class T, class K, class V>
  62. inline
  63. bool GenMapTest<T, K, V>::CreateElement(int index)
  64. {
  65.     m_store.Create(index);
  66.     return true;
  67. }
  68. template <class T, class K, class V>
  69. inline
  70. bool GenMapTest<T, K, V>::ClearElements()
  71. {
  72.     m_store.Clear();
  73.     return true;
  74. }
  75. template <class T, class K, class V>
  76. inline
  77. void GenMapTest<T, K, V>::PrintElements()
  78. {
  79.     m_store.Print();
  80. }
  81. // Map manipulation
  82. template <class T, class K, class V>
  83. inline
  84. bool GenMapTest<T, K, V>::GetCount(int expected) const
  85. {
  86.     bool ret = (m_map.GetCount() == expected); 
  87.     
  88.     if (!ret)
  89.     {
  90. DPRINTF (D_ERROR,("GenMapTest<T, K, V>::GetCount() : got %d expected %dn",
  91.   m_map.GetCount(), 
  92.   expected));
  93.     }
  94.     return ret;
  95. }
  96. template <class T, class K, class V>
  97. inline
  98. bool GenMapTest<T, K, V>::IsEmpty(bool expected) const
  99. {
  100.     bool ret = ((m_map.IsEmpty() == TRUE) == expected);
  101.     if (!ret)
  102.     {
  103. DPRINTF (D_ERROR,("GenMapTest<T, K, V>::IsEmpty() : got %d expected %dn",
  104.   m_map.IsEmpty(), 
  105.   expected));
  106.     }
  107.     return ret;
  108. }
  109. template <class T, class K, class V>
  110. inline
  111. bool GenMapTest<T, K, V>::Lookup(int index, bool expected)
  112. {
  113.     bool ret = false;
  114.     V value;
  115.     BOOL result = m_map.Lookup(m_store.GetKey(index), value);
  116.     if ((result == TRUE) != expected)
  117.     {
  118. DPRINTF (D_ERROR,("GenMapTest<T, K, V>::Lookup() : got %d expected %dn",
  119.   result,
  120.   expected));
  121.     }
  122.     else if (expected && (value != m_store.GetValue(index)))
  123.     {
  124. char* pValueStr = ClassOps<V>().Print(value);
  125. char* pExpectStr = ClassOps<V>().Print(m_store.GetValue(index));
  126. DPRINTF (D_ERROR,("GenMapTest<T, K, V>::Lookup() : got '%s' expected '%s'n",
  127.   pValueStr,
  128.   pExpectStr));
  129. delete [] pValueStr;
  130. delete [] pExpectStr;
  131.     }
  132.     else
  133. ret = true;
  134.     return ret;
  135. }
  136. template <class T, class K, class V>
  137. inline
  138. bool GenMapTest<T, K, V>::SetAt(int index)
  139. {
  140.     bool ret = false;
  141.     
  142.     if (!m_store.IsSet(index))
  143.     {
  144. DPRINTF(D_ERROR, ("GenMapTest<T, K, V>::SetAt() : value %d is not in storen", 
  145.   index));
  146.     }
  147.     else
  148.     {
  149. m_map.SetAt(m_store.GetKey(index), m_store.GetValue(index));
  150. ret = true;
  151.     }
  152.     return ret;
  153. }
  154. template <class T, class K, class V>
  155. inline
  156. bool GenMapTest<T, K, V>::RemoveKey(int index, bool expected)
  157. {
  158.     bool ret = false;
  159.     if (!m_store.IsSet(index))
  160.     {
  161. DPRINTF(D_ERROR, ("GenMapTest<T, K, V>::RemoveKey() : value %d is not in storen", 
  162.   index));
  163.     }
  164.     else
  165.     {
  166. bool result = (m_map.RemoveKey(m_store.GetKey(index)) == TRUE);
  167. if (result != expected)
  168. {
  169.     DPRINTF (D_ERROR, ("GenMapTest<T, K, V>::RemoveKey() : got %d expected %dn",
  170.        result,
  171.        expected));
  172. }
  173. else
  174.     ret = true;
  175.     }
  176.     return ret;
  177. }
  178. template <class T, class K, class V>
  179. inline
  180. bool GenMapTest<T, K, V>::RemoveAll()
  181. {
  182.     m_map.RemoveAll();
  183.     return true;
  184. }
  185. template <class T, class K, class V>
  186. inline
  187. bool GenMapTest<T, K, V>::RhsArrayOp(int index, bool expected)
  188. {
  189.     bool ret = false;
  190.     if (!m_store.IsSet(index))
  191.     {
  192. DPRINTF(D_ERROR, ("GenMapTest<T, K, V>::RhsArrayOp() : value %d is not in storen", 
  193.   index));
  194.     }
  195.     else 
  196.     {
  197. V result = m_map[m_store.GetKey(index)];
  198. V expectedVal = m_store.GetValue(index);
  199. if (!expected)
  200. {
  201.     // If we are not expecting the value to be in the
  202.     // map, then the value returned should be all zeros
  203.     expectedVal = ClassOps<V>().Null();
  204. }
  205. if (result != expectedVal)
  206. {
  207.     char* pValueStr = ClassOps<V>().Print(result);
  208.     char* pExpectStr = ClassOps<V>().Print(expectedVal);
  209.     DPRINTF (D_ERROR,("GenMapTest<T, K, V>::RhsArrayOp() : got '%s' expected '%s'n",
  210.       pValueStr,
  211.       pExpectStr));
  212.     
  213.     delete [] pValueStr;
  214.     delete [] pExpectStr;
  215. }
  216. else
  217.     ret = true;
  218.     }
  219.     return ret;
  220. }
  221. template <class T, class K, class V>
  222. inline
  223. bool GenMapTest<T, K, V>::LhsArrayOp(int index)
  224. {
  225.     bool ret = false;
  226.     if (!m_store.IsSet(index))
  227.     {
  228. DPRINTF(D_ERROR, ("GenMapTest<T, K, V>::LhsArrayOp() : value %d is not in storen", 
  229.   index));
  230.     }
  231.     else 
  232.     {
  233. m_map[m_store.GetKey(index)] = m_store.GetValue(index);
  234. ret = true;
  235.     }
  236.     return ret;
  237. }
  238. template <class T, class K, class V>
  239. inline
  240. bool GenMapTest<T, K, V>::IsNull(int index, bool expected)
  241. {
  242.     bool ret = false;
  243.     if (!m_store.IsSet(index))
  244.     {
  245. DPRINTF(D_ERROR, ("GenMapTest<T, K, V>::IsNull() : value %d is not in storen", 
  246.   index));
  247.     }
  248.     else 
  249.     {
  250. V result;
  251. V expectedVal = ClassOps<V>().Null();
  252. if (!m_map.Lookup(m_store.GetKey(index), result))
  253. {
  254.     DPRINTF (D_ERROR,("GenMapTest<T, K, V>::IsNull() : lookup failedn"));
  255. }
  256. else
  257. {
  258.     bool valuesMatch = (result == expectedVal);
  259.     if (valuesMatch != expected)
  260.     {
  261. DPRINTF (D_ERROR,("GenMapTest<T, K, V>::IsNull() : got %d expected %dn",
  262.       valuesMatch,
  263.       expected));
  264.     }
  265.     else
  266. ret = true;
  267. }
  268.     }
  269.     return ret;
  270. }
  271. template <class T, class K, class V>
  272. inline
  273. bool GenMapTest<T, K, V>::RunMapSpecificTests()
  274. {
  275.     MapSpecificTests<T> mst;
  276.     return mst();
  277. }
  278. #endif // GEN_MAP_TEST_I