gen_map_test_inl.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:7k
源码类别:

Symbian

开发平台:

C/C++

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