Skip to content

Commit d0406d3

Browse files
added example to validate kvstore apis
1 parent d61b9e8 commit d0406d3

File tree

2 files changed

+559
-0
lines changed

2 files changed

+559
-0
lines changed

Diff for: examples/KVStoreValidation/KVStoreValidation.ino

+282
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
/*
2+
* This file is part of Arduino_KVStore.
3+
*
4+
* The purpose of this example is to test all the apis available on KVStore
5+
* on every supported platform and check their conformity to the standard.
6+
* It is not intended to showcase the usage of the apis
7+
*
8+
* Copyright (c) 2024 Arduino SA
9+
*
10+
* This Source Code Form is subject to the terms of the Mozilla Public
11+
* License, v. 2.0. If a copy of the MPL was not distributed with this
12+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
13+
*/
14+
#include "test.h"
15+
16+
KVStore kvstore;
17+
18+
void setup() {
19+
Serial.begin(115200);
20+
while(!Serial);
21+
Serial.println();
22+
delay(3000);
23+
24+
// Open kvstore
25+
if (!kvstore.begin()) {
26+
Serial.println("Cannot initialize kvstore");
27+
Serial.println("Make sure your WiFi firmware version is greater than 0.3.0");
28+
while(1) {};
29+
}
30+
31+
// Remove all kvstore under the opened namespace
32+
Serial.print("Clearing content of kvstore: ");
33+
Serial.println(kvstore.clear());
34+
35+
Serial.println("Testing Char operations");
36+
if(!test_kvstore<char>(0x50,
37+
std::bind(&KVStore::putChar, &kvstore, std::placeholders::_1, std::placeholders::_2),
38+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
39+
return kvstore.getChar(key);
40+
}, &kvstore)) {
41+
42+
Serial.println("Char test failed");
43+
kvstore.remove(KEY);
44+
}
45+
46+
Serial.println();
47+
Serial.println();
48+
Serial.println();
49+
50+
Serial.println("Testing UChar operations");
51+
if(!test_kvstore<char>(0x50,
52+
std::bind(&KVStore::putUChar, &kvstore, std::placeholders::_1, std::placeholders::_2),
53+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
54+
return kvstore.getUChar(key);
55+
}, &kvstore)) {
56+
57+
Serial.println("UChar test failed");
58+
kvstore.remove(KEY);
59+
}
60+
61+
Serial.println();
62+
Serial.println();
63+
Serial.println();
64+
65+
Serial.println("Testing Short operations");
66+
if(!test_kvstore<int16_t>(0x5050,
67+
std::bind(&KVStore::putShort, &kvstore, std::placeholders::_1, std::placeholders::_2),
68+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
69+
return kvstore.getShort(key);
70+
}, &kvstore)) {
71+
72+
Serial.println("Short test failed");
73+
kvstore.remove(KEY);
74+
}
75+
76+
Serial.println();
77+
Serial.println();
78+
Serial.println();
79+
80+
Serial.println("Testing UShort operations");
81+
if(!test_kvstore<uint16_t>(0x5050,
82+
std::bind(&KVStore::putUShort, &kvstore, std::placeholders::_1, std::placeholders::_2),
83+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
84+
return kvstore.getUShort(key);
85+
}, &kvstore)) {
86+
87+
Serial.println("UShort test failed");
88+
kvstore.remove(KEY);
89+
}
90+
91+
Serial.println();
92+
Serial.println();
93+
Serial.println();
94+
95+
Serial.println("Testing Int operations");
96+
if(!test_kvstore<int32_t>(0x50505050,
97+
std::bind(&KVStore::putInt, &kvstore, std::placeholders::_1, std::placeholders::_2),
98+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
99+
return kvstore.getInt(key);
100+
}, &kvstore)) {
101+
102+
Serial.println("Int test failed");
103+
kvstore.remove(KEY);
104+
}
105+
106+
Serial.println();
107+
Serial.println();
108+
Serial.println();
109+
110+
Serial.println("Testing Int operations with negative value");
111+
if(!test_kvstore<int32_t>(-12345678,
112+
std::bind(&KVStore::putInt, &kvstore, std::placeholders::_1, std::placeholders::_2),
113+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
114+
return kvstore.getInt(key);
115+
}, &kvstore)) {
116+
117+
Serial.println("Int test failed");
118+
kvstore.remove(KEY);
119+
}
120+
121+
Serial.println();
122+
Serial.println();
123+
Serial.println();
124+
125+
Serial.println("Testing UInt operations");
126+
if(!test_kvstore<uint32_t>(0x50505050,
127+
std::bind(&KVStore::putUInt, &kvstore, std::placeholders::_1, std::placeholders::_2),
128+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
129+
return kvstore.getUInt(key);
130+
}, &kvstore)) {
131+
132+
Serial.println("UInt test failed");
133+
kvstore.remove(KEY);
134+
}
135+
136+
Serial.println();
137+
Serial.println();
138+
Serial.println();
139+
140+
Serial.println("Testing Long operations");
141+
if(!test_kvstore<int32_t>(0x50505050,
142+
std::bind(&KVStore::putLong, &kvstore, std::placeholders::_1, std::placeholders::_2),
143+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
144+
return kvstore.getLong(key);
145+
}, &kvstore)) {
146+
147+
Serial.println("Long test failed");
148+
kvstore.remove(KEY);
149+
}
150+
151+
Serial.println();
152+
Serial.println();
153+
Serial.println();
154+
155+
Serial.println("Testing ULong operations");
156+
if(!test_kvstore<uint32_t>(0x50505050,
157+
std::bind(&KVStore::putULong, &kvstore, std::placeholders::_1, std::placeholders::_2),
158+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
159+
return kvstore.getULong(key);
160+
}, &kvstore)) {
161+
162+
Serial.println("ULong test failed");
163+
kvstore.remove(KEY);
164+
}
165+
166+
Serial.println();
167+
Serial.println();
168+
Serial.println();
169+
170+
Serial.println("Testing Long64 operations");
171+
if(!test_kvstore<int64_t>(0x5050505050505050,
172+
std::bind(&KVStore::putLong64, &kvstore, std::placeholders::_1, std::placeholders::_2),
173+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
174+
return kvstore.getLong64(key);
175+
}, &kvstore)) {
176+
177+
Serial.println("Long64 test failed");
178+
kvstore.remove(KEY);
179+
}
180+
181+
Serial.println();
182+
Serial.println();
183+
Serial.println();
184+
185+
Serial.println("Testing ULong64 operations");
186+
if(!test_kvstore<uint64_t>(0x5050505050505050,
187+
std::bind(&KVStore::putULong64, &kvstore, std::placeholders::_1, std::placeholders::_2),
188+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
189+
return kvstore.getULong64(key);
190+
}, &kvstore)) {
191+
192+
Serial.println("ULong64 test failed");
193+
kvstore.remove(KEY);
194+
}
195+
196+
Serial.println();
197+
Serial.println();
198+
Serial.println();
199+
200+
Serial.println("Testing Float operations");
201+
if(!test_kvstore<float>(0x50505050,
202+
std::bind(&KVStore::putFloat, &kvstore, std::placeholders::_1, std::placeholders::_2),
203+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
204+
return kvstore.getFloat(key);
205+
}, &kvstore)) {
206+
207+
Serial.println("Float test failed");
208+
kvstore.remove(KEY);
209+
}
210+
211+
Serial.println();
212+
Serial.println();
213+
Serial.println();
214+
215+
Serial.println("Testing Double operations");
216+
if(!test_kvstore<double>(0x5050505050505050,
217+
std::bind(&KVStore::putDouble, &kvstore, std::placeholders::_1, std::placeholders::_2),
218+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
219+
return kvstore.getDouble(key);
220+
}, &kvstore)) {
221+
222+
Serial.println("Double test failed");
223+
kvstore.remove(KEY);
224+
}
225+
226+
Serial.println();
227+
Serial.println();
228+
Serial.println();
229+
230+
Serial.println("Testing Bool operations");
231+
if(!test_kvstore<bool>(true,
232+
std::bind(&KVStore::putBool, &kvstore, std::placeholders::_1, std::placeholders::_2),
233+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
234+
return kvstore.getBool(key);
235+
}, &kvstore)) {
236+
237+
Serial.println("Bool test failed");
238+
kvstore.remove(KEY);
239+
}
240+
241+
Serial.println();
242+
Serial.println();
243+
Serial.println();
244+
245+
Serial.println("Testing C - String operations");
246+
if(!test_kvstore("la mia stringsa asdasdafasdjdsnajdnaskjlasda\n\n\r\nsdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjl\r\nOK\r\nERROR",
247+
&kvstore)) {
248+
Serial.println("C - String test failed");
249+
kvstore.remove(KEY);
250+
}
251+
252+
Serial.println();
253+
Serial.println();
254+
Serial.println();
255+
256+
Serial.println("Testing Arduino - String operations");
257+
if(!test_kvstore<String>("la mia stringsa asdasdafasdjdsnajdnaskjlasda\n\n\r\nsdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjlasdasdafasdjdsnajdnaskjl\r\nOK\r\nERROR",
258+
std::bind(static_cast<size_t(KVStore::*)(const char* const&, String)>(&KVStore::putString), &kvstore, std::placeholders::_1, std::placeholders::_2),
259+
[&kvstore](const char* key) { // we need a lambda, because it requires a default value from apis
260+
return kvstore.getString(key);
261+
}, &kvstore)) {
262+
263+
Serial.println("Arduino - String test failed");
264+
kvstore.remove(KEY);
265+
}
266+
267+
Serial.println();
268+
Serial.println();
269+
Serial.println();
270+
271+
Serial.println("Testing byte buffer operations");
272+
uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B};
273+
if(!test_kvstore(buffer, sizeof(buffer), &kvstore)) {
274+
Serial.println("byte buffer test failed");
275+
kvstore.remove(KEY);
276+
}
277+
278+
kvstore.end();
279+
Serial.println("\n\nTesting finished");
280+
}
281+
282+
void loop() {}

0 commit comments

Comments
 (0)