]>
git.gir.st - tmk_keyboard.git/blob - tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp
10 #define BUFFER_SIZE 128
11 #define TABLE_SIZE(TAB) (sizeof(TAB) / sizeof(TAB[0]))
13 #define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,1,4231,999,4123,32760,99999
14 #define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999
15 #define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910
16 #define FLOATS_STR "0.002","0.92430","15.91320","791.77368","6208.2","25719.4952","426815.982588","6429271.046","42468024.93","212006462.910"
18 template <class T
, class F
>
19 void BubbleSort(T
& array
, size_t array_size
, F functor
)
22 size_t numLength
= array_size
;
23 for(size_t i
= 1; (i
<= numLength
) && flag
; i
++) {
25 for (size_t j
= 0; j
< (numLength
- 1); j
++) {
26 if (functor(array
[j
+1], array
[j
])) {
28 array
[j
] = array
[j
+ 1];
37 void operator()(int i
) {
43 void operator()(float f
) {
49 void operator()(char* s
) {
55 bool operator()(int a
, int b
) {
56 return abs(a
) > abs(b
);
63 int p_integers
[] = {POSITIVE_INTEGERS
};
64 int n_integers
[] = {NEGATIVE_INTEGERS
};
65 float floats
[] = {FLOATS
};
69 std::vector
<int> v_pints(p_integers
, p_integers
+ TABLE_SIZE(p_integers
));
70 bool equal_result
= std::equal(v_pints
.begin(), v_pints
.end(), p_integers
);
71 result
= result
&& equal_result
;
72 printf("[%s] Fill vector with data\r\n", equal_result
? "OK" : "FAIL");
76 char* floats_str
[] = {FLOATS_STR
};
77 float floats_transform
[TABLE_SIZE(floats_str
)] = {0.0};
78 std::transform(floats_str
, floats_str
+ TABLE_SIZE(floats_str
), floats_transform
, atof
);
79 bool equal_result
= std::equal(floats_transform
, floats_transform
+ TABLE_SIZE(floats_transform
), floats
);
80 result
= result
&& equal_result
;
81 printf("[%s] Transform float strings\r\n", equal_result
? "OK" : "FAIL");
83 std::for_each(floats_str
, floats_str
+ TABLE_SIZE(floats_str
), printString());
85 std::for_each(floats_transform
, floats_transform
+ TABLE_SIZE(floats_transform
), printFloat());
90 std::vector
<int> v_nints_1(n_integers
, n_integers
+ TABLE_SIZE(n_integers
));
91 std::vector
<int> v_nints_2(n_integers
, n_integers
+ TABLE_SIZE(n_integers
));
93 BubbleSort(v_nints_1
, v_nints_1
.size(), std::greater
<int>());
94 std::sort(v_nints_2
.begin(), v_nints_2
.end(), std::greater
<int>());
95 bool equal_result
= std::equal(v_nints_1
.begin(), v_nints_1
.end(), v_nints_2
.begin());
96 result
= result
&& equal_result
;
97 printf("[%s] Sort integers\r\n", equal_result
? "OK" : "FAIL");
99 std::for_each(v_nints_1
.begin(), v_nints_1
.end(), printInt());
101 std::for_each(v_nints_2
.begin(), v_nints_2
.end(), printInt());
106 BubbleSort(v_nints_1
, v_nints_1
.size(), greaterAbs());
107 std::sort(v_nints_2
.begin(), v_nints_2
.end(), greaterAbs());
108 bool equal_result
= std::equal(v_nints_1
.begin(), v_nints_1
.end(), v_nints_2
.begin());
109 result
= result
&& equal_result
;
110 printf("[%s] Sort integers\r\n", equal_result
? "OK" : "FAIL");
112 std::for_each(v_nints_1
.begin(), v_nints_1
.end(), printInt());
114 std::for_each(v_nints_2
.begin(), v_nints_2
.end(), printInt());
119 notify_completion(result
);