mirror of https://github.com/ARMmbed/mbed-os.git
Refreshed STL test
parent
39e75c042f
commit
ce8543ecc8
|
@ -1,54 +1,126 @@
|
|||
/*
|
||||
start
|
||||
one
|
||||
two
|
||||
three
|
||||
elements in the map:
|
||||
a1 => 50
|
||||
c3 => 150
|
||||
{success}
|
||||
{end}
|
||||
*/
|
||||
#include "test_env.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
|
||||
using namespace std;
|
||||
#define BUFFER_SIZE 128
|
||||
#define TABLE_SIZE(TAB) (sizeof(TAB) / sizeof(TAB[0]))
|
||||
|
||||
int main() {
|
||||
printf("start"NL);
|
||||
queue<string> queueObject;
|
||||
queueObject.push("one");
|
||||
queueObject.push("two");
|
||||
queueObject.push("three");
|
||||
#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,1,4231,999,4123,32760,99999
|
||||
#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999
|
||||
#define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910
|
||||
#define FLOATS_STR "0.002","0.92430","15.91320","791.77368","6208.2","25719.4952","426815.982588","6429271.046","42468024.93","212006462.910"
|
||||
|
||||
while (!queueObject.empty()) {
|
||||
string& s = queueObject.front();
|
||||
printf("%s"NL, s.c_str());
|
||||
queueObject.pop();
|
||||
template <class T, class F>
|
||||
void BubbleSort(T& array, size_t array_size, F functor)
|
||||
{
|
||||
bool flag = true;
|
||||
size_t numLength = array_size;
|
||||
for(size_t i = 1; (i <= numLength) && flag; i++) {
|
||||
flag = false;
|
||||
for (size_t j = 0; j < (numLength - 1); j++) {
|
||||
if (functor(array[j+1], array[j])) {
|
||||
int temp = array[j];
|
||||
array[j] = array[j + 1];
|
||||
array[j+1] = temp;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
map<string,string> m;
|
||||
map<string,string>::iterator it;
|
||||
|
||||
m["a1"] = "50";
|
||||
m["b2"] = "100";
|
||||
m["c3"] = "150";
|
||||
m["d4"] = "200";
|
||||
|
||||
it = m.find("b2");
|
||||
if (it == m.end()) {
|
||||
printf("lookup error"NL);
|
||||
}
|
||||
|
||||
m.erase(it);
|
||||
m.erase(m.find("d4"));
|
||||
|
||||
printf("elements in the map:"NL);
|
||||
printf("a1 => %s"NL, m.find("a1")->second.c_str());
|
||||
printf("c3 => %s"NL, m.find("c3")->second.c_str());
|
||||
|
||||
notify_completion(true);
|
||||
}
|
||||
|
||||
struct printInt {
|
||||
void operator()(int i) {
|
||||
printf("%d ", i);
|
||||
}
|
||||
};
|
||||
|
||||
struct printFloat {
|
||||
void operator()(float f) {
|
||||
printf("%f ", f);
|
||||
}
|
||||
};
|
||||
|
||||
struct printString {
|
||||
void operator()(char* s) {
|
||||
printf("%s ", s);
|
||||
}
|
||||
};
|
||||
|
||||
struct greaterAbs {
|
||||
bool operator()(int a, int b) {
|
||||
return abs(a) > abs(b);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
char buffer[BUFFER_SIZE] = {0};
|
||||
int p_integers[] = {POSITIVE_INTEGERS};
|
||||
int n_integers[] = {NEGATIVE_INTEGERS};
|
||||
float floats[] = {FLOATS};
|
||||
|
||||
//std::vector<int> v_nints(n_integers, n_integers + TABLE_SIZE(n_integers));
|
||||
//std::vector<int> v_floats(floats, floats + TABLE_SIZE(floats));
|
||||
|
||||
bool result = true;
|
||||
|
||||
{
|
||||
std::vector<int> v_pints(p_integers, p_integers + TABLE_SIZE(p_integers));
|
||||
bool equal_result = std::equal(v_pints.begin(), v_pints.end(), p_integers);
|
||||
result = result && equal_result;
|
||||
printf("[%s] Fill vector with data\r\n", equal_result ? "OK" : "FAIL");
|
||||
}
|
||||
|
||||
{
|
||||
char* floats_str[] = {FLOATS_STR};
|
||||
float floats_transform[TABLE_SIZE(floats_str)] = {0.0};
|
||||
std::transform(floats_str, floats_str + TABLE_SIZE(floats_str), floats_transform, atof);
|
||||
bool equal_result = std::equal(floats_transform, floats_transform + TABLE_SIZE(floats_transform), floats);
|
||||
result = result && equal_result;
|
||||
printf("[%s] Transform float strings\r\n", equal_result ? "OK" : "FAIL");
|
||||
|
||||
std::for_each(floats_str, floats_str + TABLE_SIZE(floats_str), printString());
|
||||
printf("\r\n");
|
||||
std::for_each(floats_transform, floats_transform + TABLE_SIZE(floats_transform), printFloat());
|
||||
printf("\r\n");
|
||||
}
|
||||
|
||||
{
|
||||
std::vector<int> v_nints_1(n_integers, n_integers + TABLE_SIZE(n_integers));
|
||||
std::vector<int> v_nints_2(n_integers, n_integers + TABLE_SIZE(n_integers));
|
||||
{
|
||||
BubbleSort(v_nints_1, v_nints_1.size(), std::greater<int>());
|
||||
std::sort(v_nints_2.begin(), v_nints_2.end(), std::greater<int>());
|
||||
bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin());
|
||||
result = result && equal_result;
|
||||
printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL");
|
||||
|
||||
std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt());
|
||||
printf("\r\n");
|
||||
std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt());
|
||||
printf("\r\n");
|
||||
}
|
||||
|
||||
{
|
||||
BubbleSort(v_nints_1, v_nints_1.size(), greaterAbs());
|
||||
std::sort(v_nints_2.begin(), v_nints_2.end(), greaterAbs());
|
||||
bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin());
|
||||
result = result && equal_result;
|
||||
printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL");
|
||||
|
||||
std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt());
|
||||
printf("\r\n");
|
||||
std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt());
|
||||
printf("\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
notify_completion(result);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ TESTS = [
|
|||
"id": "MBED_A3", "description": "C++ STL",
|
||||
"source_dir": join(TEST_DIR, "mbed", "stl"),
|
||||
"dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
|
||||
"automated": False,
|
||||
"automated": True,
|
||||
},
|
||||
{
|
||||
"id": "MBED_A4", "description": "I2C TMP102",
|
||||
|
@ -518,7 +518,6 @@ TESTS = [
|
|||
"automated": True,
|
||||
},
|
||||
|
||||
|
||||
# CMSIS RTOS tests
|
||||
{
|
||||
"id": "CMSIS_RTOS_1", "description": "Basic",
|
||||
|
|
Loading…
Reference in New Issue