remove \r
[extl.git] / extl / memory / test / scoped_buffer_test.h
blob9469fa8bf0d27df530363ebe2ce4313892c0f304
1 /* ///////////////////////////////////////////////////////////////////////
2 * File: scoped_buffer_test.h
4 * Created: 08.03.06
5 * Updated: 08.12.22
7 * Brief: The Unit-testing
9 * [<Home>]
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 /* ///////////////////////////////////////////////////////////////////////
16 * Includes
18 #include "../math/rand.h"
19 #include "../counter/clock_counter.h"
20 #ifndef EXTL_NO_STL
21 # include <vector>
22 #endif
24 /* ///////////////////////////////////////////////////////////////////////
25 * ::test namespace
27 EXTL_BEGIN_NAMESPACE
28 EXTL_TEST_NAME_BEGIN_NAMESPACE(scoped_buffer_test)
30 /* ///////////////////////////////////////////////////////////////////////
31 * Unit-testing
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;
51 #else
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
57 > buffer_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
63 > char_buffer_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
69 > obj_buffer_type;
70 #endif
72 EXTL_TEST_TRACE(_T("/* //////////////////////////////////////////////////////////////////// */"));
73 EXTL_TEST_TRACE(_T("scoped_buffer Test:\n"));
75 clock_counter counter;
76 volatile int i = 0;
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
82 buffer_type buf;
83 counter.begin();
84 for(i=0; i < 50000; i++)
86 buf.resize(r1.generate(0, 256));
88 counter.end();
89 EXTL_TEST_TRACE(_T("scoped_buffer<>::resize(0 - 256) time:%d ms"), counter.ms());
91 buf.destroy();
92 counter.begin();
93 for(i=0; i < 50000; i++)
95 buf.resize(r2.generate(0, 1024));
97 counter.end();
98 EXTL_TEST_TRACE(_T("scoped_buffer<>::resize(0 - 1024) time:%d ms"), counter.ms());
100 buf.destroy();
101 counter.begin();
102 for(i=0; i < 50000; i++)
104 buf.resize(r3.generate(0, 8 * 1024));
106 counter.end();
107 EXTL_TEST_TRACE(_T("scoped_buffer<>::resize(0 - 8 * 1024) time:%d ms\n"), counter.ms());
109 #ifndef EXTL_NO_STL
110 // vector<> test
111 EXTL_NS_STD(vector)<int> vec;
112 r1.reset();
113 r2.reset();
114 r3.reset();
115 counter.begin();
116 for(i=0; i < 50000; i++)
118 vec.resize(r1.generate(0, 256));
120 counter.end();
121 EXTL_TEST_TRACE(_T("vector<>::resize(0 - 256) time:%d ms"), counter.ms());
123 vec.clear();
124 counter.begin();
125 for(i=0; i < 50000; i++)
127 vec.resize(r2.generate(0, 1024));
129 counter.end();
130 EXTL_TEST_TRACE(_T("vector<>::resize(0 - 1024) time:%d ms"), counter.ms());
132 vec.clear();
133 counter.begin();
134 for(i=0; i < 50000; i++)
136 vec.resize(r3.generate(0, 8 * 1024));
138 counter.end();
139 EXTL_TEST_TRACE(_T("vector<>::resize(0 - 8 * 1024) time:%d ms\n"), counter.ms());
140 #endif
141 buffer_type buf2;
142 counter.begin();
143 for(i=0; i < 100000; i++)
145 buf2.swap(buf);
147 counter.end();
148 EXTL_TEST_TRACE(_T("scoped_buffer<>::swap() time:%d ms"), counter.ms());
150 #ifndef EXTL_NO_STL
151 EXTL_NS_STD(vector)<int> vec2;
152 counter.begin();
153 for(i=0; i < 100000; i++)
155 vec2.swap(vec);
157 counter.end();
158 EXTL_TEST_TRACE(_T("vector<>::swap() time:%d ms\n"), counter.ms());
159 #endif
161 // char_buffer_type test
162 char_buffer_type b;
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);
178 return 0;
181 int scoped_buffer_test_ret = scoped_buffer_test();
183 /* ///////////////////////////////////////////////////////////////////////
184 * ::test namespace
186 EXTL_TEST_NAME_END_NAMESPACE(scoped_buffer_test)
187 EXTL_END_NAMESPACE
188 /* //////////////////////////////////////////////////////////////////// */
189 #endif /* EXTL_MEMORY_SCOPED_BUFFER_TEST_H */
190 /* //////////////////////////////////////////////////////////////////// */