xref: /aosp_15_r20/external/deqp/framework/delibs/depool/dePoolHashArray.c (revision 35238bce31c2a825756842865a792f8cf7f89930)
1 /*-------------------------------------------------------------------------
2  * drawElements Memory Pool Library
3  * --------------------------------
4  *
5  * Copyright 2014 The Android Open Source Project
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  *//*!
20  * \file
21  * \brief Memory pool hash-array class.
22  *//*--------------------------------------------------------------------*/
23 
24 #include "dePoolHashArray.h"
25 
26 #include <string.h>
27 
28 DE_DECLARE_POOL_HASH_ARRAY(deTestHashArray, int16_t, int, deInt16Array, deIntArray);
29 DE_IMPLEMENT_POOL_HASH_ARRAY(deTestHashArray, int16_t, int, deInt16Array, deIntArray, deInt16Hash, deInt16Equal);
30 
dePoolHashArray_selfTest(void)31 void dePoolHashArray_selfTest(void)
32 {
33     deMemPool *pool            = deMemPool_createRoot(DE_NULL, 0);
34     deTestHashArray *hashArray = deTestHashArray_create(pool);
35     deInt16Array *keyArray     = deInt16Array_create(pool);
36     deIntArray *valueArray     = deIntArray_create(pool);
37     int iter;
38 
39     for (iter = 0; iter < 3; iter++)
40     {
41         int i;
42 
43         /* Insert a bunch of values. */
44         DE_TEST_ASSERT(deTestHashArray_getNumElements(hashArray) == 0);
45         for (i = 0; i < 20; i++)
46         {
47             deTestHashArray_insert(hashArray, (int16_t)(-i ^ 0x5), 2 * i + 5);
48         }
49         DE_TEST_ASSERT(deTestHashArray_getNumElements(hashArray) == 20);
50 
51         deTestHashArray_copyToArray(hashArray, keyArray, DE_NULL);
52         deTestHashArray_copyToArray(hashArray, DE_NULL, valueArray);
53         DE_TEST_ASSERT(deInt16Array_getNumElements(keyArray) == 20);
54         DE_TEST_ASSERT(deIntArray_getNumElements(valueArray) == 20);
55 
56         for (i = 0; i < 20; i++)
57         {
58             DE_TEST_ASSERT(deInt16Array_get(keyArray, i) == (int16_t)(-i ^ 0x5));
59             DE_TEST_ASSERT(deIntArray_get(valueArray, i) == 2 * i + 5);
60         }
61 
62         deTestHashArray_reset(hashArray);
63         DE_TEST_ASSERT(deTestHashArray_getNumElements(hashArray) == 0);
64 
65         deTestHashArray_copyToArray(hashArray, keyArray, DE_NULL);
66         deTestHashArray_copyToArray(hashArray, DE_NULL, valueArray);
67 
68         DE_TEST_ASSERT(deInt16Array_getNumElements(keyArray) == 0);
69         DE_TEST_ASSERT(deIntArray_getNumElements(valueArray) == 0);
70     }
71 
72     deMemPool_destroy(pool);
73 }
74