Merge vk-gl-cts/opengl-es-cts-3.2.3 into vk-gl-cts/opengl-es-cts-3.2.4
[platform/upstream/VK-GL-CTS.git] / framework / delibs / depool / dePoolSet.c
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 set class.
22  *//*--------------------------------------------------------------------*/
23
24 #include "dePoolSet.h"
25
26 #include <string.h>
27
28 DE_DECLARE_POOL_SET(deTestSet, deInt16);
29 DE_IMPLEMENT_POOL_SET(deTestSet, deInt16, deInt16Hash, deInt16Equal);
30
31 void dePoolSet_selfTest (void)
32 {
33         deMemPool*      pool    = deMemPool_createRoot(DE_NULL, 0);
34         deTestSet*      set     = deTestSet_create(pool);
35         int                     i;
36
37         /* Test exists() on empty set. */
38         DE_TEST_ASSERT(deTestSet_getNumElements(set) == 0);
39         for (i = 0; i < 15000; i++)
40                 DE_TEST_ASSERT(!deTestSet_exists(set, (deInt16)i));
41
42         /* Test insert(). */
43         for (i = 0; i < 5000; i++)
44                 deTestSet_insert(set, (deInt16)i);
45
46         DE_TEST_ASSERT(deTestSet_getNumElements(set) == 5000);
47         for (i = 0; i < 25000; i++)
48         {
49                 deBool inserted = deInBounds32(i, 0, 5000);
50                 deBool found    = deTestSet_exists(set, (deInt16)i);
51                 DE_TEST_ASSERT(found == inserted);
52         }
53
54         /* Test delete(). */
55         for (i = 0; i < 1000; i++)
56                 deTestSet_delete(set, (deInt16)i);
57
58         DE_TEST_ASSERT(deTestSet_getNumElements(set) == 4000);
59         for (i = 0; i < 25000; i++)
60         {
61                 deBool inserted = deInBounds32(i, 1000, 5000);
62                 deBool found    = deTestSet_exists(set, (deInt16)i);
63                 DE_TEST_ASSERT(found == inserted);
64         }
65
66         /* Test insert() after delete(). */
67         for (i = 10000; i < 12000; i++)
68                 deTestSet_insert(set, (deInt16)i);
69
70         DE_TEST_ASSERT(deTestSet_getNumElements(set) == 6000);
71
72         for (i = 0; i < 25000; i++)
73         {
74                 deBool inserted = (deInBounds32(i, 1000, 5000) || deInBounds32(i, 10000, 12000));
75                 deBool found    = deTestSet_exists(set, (deInt16)i);
76                 DE_TEST_ASSERT(found == inserted);
77         }
78
79         /* Test iterator. */
80         {
81                 deTestSetIter   iter;
82                 int                             numFound = 0;
83
84                 for (deTestSetIter_init(set, &iter); deTestSetIter_hasItem(&iter); deTestSetIter_next(&iter))
85                 {
86                         deInt16 key = deTestSetIter_getKey(&iter);
87                         DE_TEST_ASSERT(deInBounds32(key, 1000, 5000) || deInBounds32(key, 10000, 12000));
88                         DE_TEST_ASSERT(deTestSet_exists(set, key));
89                         numFound++;
90                 }
91
92                 DE_TEST_ASSERT(numFound == deTestSet_getNumElements(set));
93         }
94
95         deMemPool_destroy(pool);
96 }