1 /* ///////////////////////////////////////////////////////////////////////
2 * File: expr_varray_test.h
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
12 #ifndef EXTL_MATH_EXPR_VARRAY_TEST_H
13 #define EXTL_MATH_EXPR_VARRAY_TEST_H
15 #ifndef EXTL_MATH_EXPR_VARRAY_H
16 # error This file must be included of expr_varray.h
19 /* ///////////////////////////////////////////////////////////////////////
20 * ::unit_test namespace
23 EXTL_TEST_NAME_BEGIN_NAMESPACE(expr_varray_test
)
25 /* ///////////////////////////////////////////////////////////////////////
28 struct expr_varray_test
32 typedef buffer_selector
<int>::buffer_type buffer_type
;
33 typedef basic_varray
<int, buffer_type
> array_type
;
35 array_type
ar(1, 1000);
36 array_type
ar2(1, 1000);
38 expr_varray
<int, array_type
> par(ar
);
39 expr_varray
<int, array_type
> par2(ar2
);
44 EXTL_TEST_TRACE(_T("//////////////////////////////////////////////////////////////////////////"));
45 EXTL_TEST_TRACE(_T("expr_varray Test:\n"));
48 for (i = 0; i < 10000; ++i)
50 ar2 = ar + ar + ar + ar;
53 EXTL_TEST_TRACE(_T("basic_varray: %d"), t.ms());
55 // Slowly now, need optimization
57 for (i = 0; i < 10000; ++i)
59 par2 = par + par + par + par;
63 EXTL_TEST_TRACE(_T("expr_varray: %d\n"), t.ms());
66 for (i = 0; i < 10000; ++i)
68 int volatile a = (ar + ar + ar + ar)[0];
71 EXTL_TEST_TRACE(_T("(ar + ar + ar + ar)[0]: %d"), t.ms());
74 for (i = 0; i < 10000; ++i)
76 int volatile a = ar[0] + ar[0] + ar[0] + ar[0];
79 EXTL_TEST_TRACE(_T("ar[0] + ar[0] + ar[0] + ar[0]: %d"), t.ms());
82 for (i = 0; i < 10000; ++i)
84 int volatile a = (par + par + par + par)[0];
88 EXTL_TEST_TRACE(_T("(par + par + par + par)[0]: %d\n"), t.ms());*/
90 par2
= par
+ par
+ par
- par
;
91 EXTL_ASSERT(ar2
[10] == 2);
93 #ifdef EXTL_MATH_EOP_SCALAR_SUPPORT
94 par2
= par
+ par
+ par
- par
* 5;
95 EXTL_ASSERT(ar2
[10] == -2);
100 expr_varray_test g_expr_varray_test
;
102 /* ///////////////////////////////////////////////////////////////////////
103 * ::unit_test namespace
105 EXTL_TEST_NAME_END_NAMESPACE(expr_varray_test
)
108 /* //////////////////////////////////////////////////////////////////// */
109 #endif /* EXTL_MATH_EXPR_VARRAY_TEST_H */
110 /* //////////////////////////////////////////////////////////////////// */