1 /* ///////////////////////////////////////////////////////////////////////
2 * File: scoped_buffer_test.h
7 * Brief: The Unit-testing
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
12 #ifndef EXTL_MEMORY_SCOPED_BUFFER_TEST_H
13 #define EXTL_MEMORY_SCOPED_BUFFER_TEST_H
15 /* ///////////////////////////////////////////////////////////////////////
18 #include "../math/rand.h"
19 #include "../counter/clock_counter.h"
24 /* ///////////////////////////////////////////////////////////////////////
28 EXTL_TEST_NAME_BEGIN_NAMESPACE(scoped_buffer_test
)
30 /* ///////////////////////////////////////////////////////////////////////
33 struct scoped_buffer_test_obj
35 scoped_buffer_test_obj()
37 //printf("constructor\n");
39 ~scoped_buffer_test_obj()
41 //printf("destructor\n");
44 static int scoped_buffer_test()
46 #ifdef EXTL_TEMPLATE_CLASS_DEFAULT_ARGUMENT_SUPPORT
47 typedef scoped_buffer
<int> buffer_type
;
48 typedef scoped_buffer
<e_tchar_t
> char_buffer_type
;
49 typedef scoped_buffer
<scoped_buffer_test_obj
, 1> obj_buffer_type
;
52 typedef scoped_buffer
< int
53 , EXTL_MEMORY_SCOPED_BUFFER_DEFAULT_GROW_SIZE
54 , allocator_selector
<int>::allocator_type
55 , memory_traits_selector
<int>::memory_traits_type
56 , initialiser_selector
<int>::initialiser_type
58 typedef scoped_buffer
< e_tchar_t
59 , EXTL_MEMORY_SCOPED_BUFFER_DEFAULT_GROW_SIZE
60 , allocator_selector
<e_tchar_t
>::allocator_type
61 , memory_traits_selector
<e_tchar_t
>::memory_traits_type
62 , initialiser_selector
<e_tchar_t
>::initialiser_type
64 typedef scoped_buffer
< scoped_buffer_test_obj
65 , EXTL_MEMORY_SCOPED_BUFFER_DEFAULT_GROW_SIZE
66 , allocator_selector
<scoped_buffer_test_obj
>::allocator_type
67 , memory_traits_selector
<scoped_buffer_test_obj
>::memory_traits_type
68 , initialiser_selector
<scoped_buffer_test_obj
>::initialiser_type
72 EXTL_TEST_TRACE(_T("/* //////////////////////////////////////////////////////////////////// */"));
73 EXTL_TEST_TRACE(_T("scoped_buffer Test:\n"));
75 clock_counter counter
;
77 rand_selector::rand_type
r1(100);
78 rand_selector::rand_type
r2(100);
79 rand_selector::rand_type
r3(100);
81 // scoped_buffer<> test
84 for(i
=0; i
< 50000; i
++)
86 buf
.resize(r1
.generate(0, 256));
89 EXTL_TEST_TRACE(_T("scoped_buffer<>::resize(0 - 256) time:%d ms"), counter
.ms());
93 for(i
=0; i
< 50000; i
++)
95 buf
.resize(r2
.generate(0, 1024));
98 EXTL_TEST_TRACE(_T("scoped_buffer<>::resize(0 - 1024) time:%d ms"), counter
.ms());
102 for(i
=0; i
< 50000; i
++)
104 buf
.resize(r3
.generate(0, 8 * 1024));
107 EXTL_TEST_TRACE(_T("scoped_buffer<>::resize(0 - 8 * 1024) time:%d ms\n"), counter
.ms());
111 EXTL_NS_STD(vector
)<int> vec
;
116 for(i
=0; i
< 50000; i
++)
118 vec
.resize(r1
.generate(0, 256));
121 EXTL_TEST_TRACE(_T("vector<>::resize(0 - 256) time:%d ms"), counter
.ms());
125 for(i
=0; i
< 50000; i
++)
127 vec
.resize(r2
.generate(0, 1024));
130 EXTL_TEST_TRACE(_T("vector<>::resize(0 - 1024) time:%d ms"), counter
.ms());
134 for(i
=0; i
< 50000; i
++)
136 vec
.resize(r3
.generate(0, 8 * 1024));
139 EXTL_TEST_TRACE(_T("vector<>::resize(0 - 8 * 1024) time:%d ms\n"), counter
.ms());
143 for(i
=0; i
< 100000; i
++)
148 EXTL_TEST_TRACE(_T("scoped_buffer<>::swap() time:%d ms"), counter
.ms());
151 EXTL_NS_STD(vector
)<int> vec2
;
153 for(i
=0; i
< 100000; i
++)
158 EXTL_TEST_TRACE(_T("vector<>::swap() time:%d ms\n"), counter
.ms());
161 // char_buffer_type test
163 b
.assign(_T("123456789"), 10);
164 EXTL_TEST_TRACE(_T("assgin() test:%s"), b
.data());
165 b
.insert(b
.begin(), _T('0'));
166 EXTL_TEST_TRACE(_T("insert() test:%s"), b
.data());
167 b
.pop_back(); // pop '\0'
168 b
.push_back(_T('0'));
169 b
.push_back(_T('\0'));
170 EXTL_TEST_TRACE(_T("pop_back and push_back() test:%s"), b
.data());
171 b
.reverse(0, b
.size() - 1);
172 EXTL_TEST_TRACE(_T("reverse() test:%s"), b
.data());
174 obj_buffer_type objs
;
175 objs
.push_back(scoped_buffer_test_obj());
176 EXTL_ASSERT(objs
.size() == 1);
181 int scoped_buffer_test_ret
= scoped_buffer_test();
183 /* ///////////////////////////////////////////////////////////////////////
186 EXTL_TEST_NAME_END_NAMESPACE(scoped_buffer_test
)
188 /* //////////////////////////////////////////////////////////////////// */
189 #endif /* EXTL_MEMORY_SCOPED_BUFFER_TEST_H */
190 /* //////////////////////////////////////////////////////////////////// */