Skip to content

Commit 1a48772

Browse files
committed
Add unit tests for the CloudProtocol v2 CBOR conversion
1 parent 7ca0d13 commit 1a48772

File tree

1 file changed

+175
-0
lines changed

1 file changed

+175
-0
lines changed

test/cbor.test.js

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,3 +206,178 @@ it('Generate a valid cbor for multiple properties with basename', () => {
206206
console.log(cborHex);
207207
expect(cborHex).toStrictEqual(output);
208208
});
209+
210+
211+
// CloudProtocol v2
212+
213+
it('[CloudProtocol v2] Generate a valid cbor for a senml string property with basename', () => {
214+
const output = '0x81,0xA4,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x73,0x74,0x72,0x69,0x6E,0x67,0x61,0x33,0x71,0x74,0x65,0x73,0x74,0x5F,0x73,0x74,0x72,0x69,0x6E,0x67,0x20,0x76,0x61,0x6C,0x75,0x65,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
215+
const senMl = ArduinoCloud.getSenml(deviceId, 'test_string', 'test_string value', timestamp);
216+
console.log([senMl]);
217+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
218+
console.log(cborbase64);
219+
const cborHex = base64toHEX(cborbase64);
220+
console.log(cborHex);
221+
expect(cborHex).toStrictEqual(output);
222+
});
223+
224+
it('[CloudProtocol v2] Generate a valid cbor for a senml string property without basename', () => {
225+
const output = '0x81,0xA3,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x73,0x74,0x72,0x69,0x6E,0x67,0x61,0x33,0x71,0x74,0x65,0x73,0x74,0x5F,0x73,0x74,0x72,0x69,0x6E,0x67,0x20,0x76,0x61,0x6C,0x75,0x65,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
226+
const senMl = ArduinoCloud.getSenml(null, 'test_string', 'test_string value', timestamp);
227+
console.log([senMl]);
228+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
229+
console.log(cborbase64);
230+
const cborHex = base64toHEX(cborbase64);
231+
console.log(cborHex);
232+
expect(cborHex).toStrictEqual(output);
233+
});
234+
235+
236+
it('[CloudProtocol v2] Generate a valid cbor for a senml unsigned int property with basename', () => {
237+
const output = '0x81,0xA4,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x75,0x69,0x6E,0x74,0x61,0x32,0x03,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
238+
const senMl = ArduinoCloud.getSenml(deviceId, 'test_uint', 3, timestamp);
239+
console.log([senMl]);
240+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
241+
console.log(cborbase64);
242+
const cborHex = base64toHEX(cborbase64);
243+
console.log(cborHex);
244+
expect(cborHex).toStrictEqual(output);
245+
});
246+
247+
248+
it('[CloudProtocol v2] Generate a valid cbor for a senml unsigned int property without basename', () => {
249+
const output = '0x81,0xA3,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x75,0x69,0x6E,0x74,0x61,0x32,0x03,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
250+
const senMl = ArduinoCloud.getSenml(null, 'test_uint', 3, timestamp);
251+
console.log([senMl]);
252+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
253+
console.log(cborbase64);
254+
const cborHex = base64toHEX(cborbase64);
255+
console.log(cborHex);
256+
expect(cborHex).toStrictEqual(output);
257+
});
258+
259+
it('[CloudProtocol v2] Generate a valid cbor for a senml signed int property with basename', () => {
260+
const output = '0x81,0xA4,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x73,0x69,0x6E,0x74,0x61,0x32,0x22,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
261+
const senMl = ArduinoCloud.getSenml(deviceId, 'test_sint', -3, timestamp);
262+
console.log([senMl]);
263+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
264+
console.log(cborbase64);
265+
const cborHex = base64toHEX(cborbase64);
266+
console.log(cborHex);
267+
expect(cborHex).toStrictEqual(output);
268+
});
269+
270+
it('[CloudProtocol v2] Generate a valid cbor for a senml signed int property without basename', () => {
271+
const output = '0x81,0xA3,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x73,0x69,0x6E,0x74,0x61,0x32,0x22,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
272+
const senMl = ArduinoCloud.getSenml(null, 'test_sint', -3, timestamp);
273+
console.log([senMl]);
274+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
275+
console.log(cborbase64);
276+
const cborHex = base64toHEX(cborbase64);
277+
console.log(cborHex);
278+
expect(cborHex).toStrictEqual(output);
279+
});
280+
281+
282+
it('[CloudProtocol v2] Generate a valid cbor for a senml float property with basename', () => {
283+
const output = '0x81,0xA4,0x61,0x30,0x6A,0x74,0x65,0x73,0x74,0x5F,0x66,0x6C,0x6F,0x61,0x74,0x61,0x32,0xFB,0x40,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
284+
const senMl = ArduinoCloud.getSenml(deviceId, 'test_float', 3.5, timestamp);
285+
console.log([senMl]);
286+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
287+
console.log(cborbase64);
288+
const cborHex = base64toHEX(cborbase64);
289+
console.log(cborHex);
290+
expect(cborHex).toStrictEqual(output);
291+
});
292+
293+
it('[CloudProtocol v2] Generate a valid cbor for a senml float property without basename', () => {
294+
const output = '0x81,0xA3,0x61,0x30,0x6A,0x74,0x65,0x73,0x74,0x5F,0x66,0x6C,0x6F,0x61,0x74,0x61,0x32,0xFB,0x40,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
295+
const senMl = ArduinoCloud.getSenml(null, 'test_float', 3.5, timestamp);
296+
console.log([senMl]);
297+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
298+
console.log(cborbase64);
299+
const cborHex = base64toHEX(cborbase64);
300+
console.log(cborHex);
301+
expect(cborHex).toStrictEqual(output);
302+
});
303+
304+
305+
it('[CloudProtocol v2] Generate a valid cbor for a senml double property with basename', () => {
306+
const output = '0x81,0xA4,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x64,0x6F,0x75,0x62,0x6C,0x65,0x61,0x32,0xFB,0x40,0x08,0xFC,0xD6,0xE9,0xBA,0x37,0xB3,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
307+
const senMl = ArduinoCloud.getSenml(deviceId, 'test_double', 3.1234567890123456, timestamp);
308+
console.log([senMl]);
309+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
310+
console.log(cborbase64);
311+
const cborHex = base64toHEX(cborbase64);
312+
console.log(cborHex);
313+
expect(cborHex).toStrictEqual(output);
314+
});
315+
316+
it('[CloudProtocol v2] Generate a valid cbor for a senml double property without basename', () => {
317+
const output = '0x81,0xA3,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x64,0x6F,0x75,0x62,0x6C,0x65,0x61,0x32,0xFB,0x40,0x08,0xFC,0xD6,0xE9,0xBA,0x37,0xB3,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
318+
const senMl = ArduinoCloud.getSenml(null, 'test_double', 3.1234567890123456, timestamp);
319+
console.log([senMl]);
320+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
321+
console.log(cborbase64);
322+
const cborHex = base64toHEX(cborbase64);
323+
console.log(cborHex);
324+
expect(cborHex).toStrictEqual(output);
325+
});
326+
327+
it('[CloudProtocol v2] Generate a valid cbor for a senml boolean property with basename', () => {
328+
const output = '0x81,0xA4,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x62,0x6F,0x6F,0x6C,0x61,0x34,0xF5,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
329+
const senMl = ArduinoCloud.getSenml(deviceId, 'test_bool', true, timestamp);
330+
console.log([senMl]);
331+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
332+
console.log(cborbase64);
333+
const cborHex = base64toHEX(cborbase64);
334+
console.log(cborHex);
335+
expect(cborHex).toStrictEqual(output);
336+
});
337+
338+
it('[CloudProtocol v2] Generate a valid cbor for a senml boolean property without basename', () => {
339+
const output = '0x81,0xA3,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x62,0x6F,0x6F,0x6C,0x61,0x34,0xF5,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
340+
const senMl = ArduinoCloud.getSenml(null, 'test_bool', true, timestamp);
341+
console.log([senMl]);
342+
const cborbase64 = ArduinoCloud.getCborValue([senMl]);
343+
console.log(cborbase64);
344+
const cborHex = base64toHEX(cborbase64);
345+
console.log(cborHex);
346+
expect(cborHex).toStrictEqual(output);
347+
});
348+
349+
350+
it('[CloudProtocol v2] Generate a valid cbor for multiple properties with basename', () => {
351+
const output = '0x86,0xA4,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x75,0x69,0x6E,0x74,0x61,0x32,0x04,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,0xA4,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x73,0x69,0x6E,0x74,0x61,0x32,0x23,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,0xA4,0x61,0x30,0x6A,0x74,0x65,0x73,0x74,0x5F,0x66,0x6C,0x6F,0x61,0x74,0x61,0x32,0xFB,0x40,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,0xA4,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x73,0x74,0x72,0x69,0x6E,0x67,0x61,0x33,0x6A,0x74,0x65,0x73,0x74,0x20,0x76,0x61,0x6C,0x75,0x65,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,0xA4,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x62,0x6F,0x6F,0x6C,0x61,0x34,0xF5,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,0xA4,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x64,0x6F,0x75,0x62,0x6C,0x65,0x61,0x32,0xFB,0x7F,0xEF,0xFF,0xFC,0x57,0xCA,0x82,0xAE,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0x62,0x2D,0x32,0x78,0x2D,0x75,0x72,0x6E,0x3A,0x75,0x75,0x69,0x64,0x3A,0x31,0x66,0x34,0x63,0x65,0x64,0x37,0x30,0x2D,0x35,0x33,0x61,0x64,0x2D,0x34,0x62,0x32,0x39,0x2D,0x62,0x32,0x32,0x31,0x2D,0x31,0x62,0x30,0x61,0x62,0x62,0x64,0x66,0x63,0x37,0x35,0x37,';
352+
const senMlUInt = ArduinoCloud.getSenml(deviceId, 'test_uint', 4, timestamp);
353+
const senMlSInt = ArduinoCloud.getSenml(deviceId, 'test_sint', -4, timestamp);
354+
const senMlFloat = ArduinoCloud.getSenml(deviceId, 'test_float', 4.5, timestamp);
355+
const senMlString = ArduinoCloud.getSenml(deviceId, 'test_string', 'test value', timestamp);
356+
const senMlBool = ArduinoCloud.getSenml(deviceId, 'test_bool', true, timestamp);
357+
const senMlDouble = ArduinoCloud.getSenml(deviceId, 'test_double', 1.79769e+308, timestamp);
358+
const senMl = [senMlUInt, senMlSInt, senMlFloat, senMlString, senMlBool, senMlDouble];
359+
console.log(senMl);
360+
const cborbase64 = ArduinoCloud.getCborValue(senMl);
361+
console.log(cborbase64);
362+
const cborHex = base64toHEX(cborbase64);
363+
console.log(cborHex);
364+
expect(cborHex).toStrictEqual(output);
365+
});
366+
367+
368+
it('[CloudProtocol v2] Generate a valid cbor for multiple properties with basename', () => {
369+
const output = '0x86,0xA3,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x75,0x69,0x6E,0x74,0x61,0x32,0x04,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0xA3,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x73,0x69,0x6E,0x74,0x61,0x32,0x23,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0xA3,0x61,0x30,0x6A,0x74,0x65,0x73,0x74,0x5F,0x66,0x6C,0x6F,0x61,0x74,0x61,0x32,0xFB,0x40,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0xA3,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x73,0x74,0x72,0x69,0x6E,0x67,0x61,0x33,0x6A,0x74,0x65,0x73,0x74,0x20,0x76,0x61,0x6C,0x75,0x65,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0xA3,0x61,0x30,0x69,0x74,0x65,0x73,0x74,0x5F,0x62,0x6F,0x6F,0x6C,0x61,0x34,0xF5,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,0xA3,0x61,0x30,0x6B,0x74,0x65,0x73,0x74,0x5F,0x64,0x6F,0x75,0x62,0x6C,0x65,0x61,0x32,0xFB,0x7F,0xEF,0xFF,0xFC,0x57,0xCA,0x82,0xAE,0x62,0x2D,0x33,0x1A,0x5B,0x98,0xD7,0x80,';
370+
const senMlUInt = ArduinoCloud.getSenml(null, 'test_uint', 4, timestamp);
371+
const senMlSInt = ArduinoCloud.getSenml(null, 'test_sint', -4, timestamp);
372+
const senMlFloat = ArduinoCloud.getSenml(null, 'test_float', 4.5, timestamp);
373+
const senMlString = ArduinoCloud.getSenml(null, 'test_string', 'test value', timestamp);
374+
const senMlBool = ArduinoCloud.getSenml(null, 'test_bool', true, timestamp);
375+
const senMlDouble = ArduinoCloud.getSenml(null, 'test_double', 1.79769e+308, timestamp);
376+
const senMl = [senMlUInt, senMlSInt, senMlFloat, senMlString, senMlBool, senMlDouble];
377+
console.log(senMl);
378+
const cborbase64 = ArduinoCloud.getCborValue(senMl);
379+
console.log(cborbase64);
380+
const cborHex = base64toHEX(cborbase64);
381+
console.log(cborHex);
382+
expect(cborHex).toStrictEqual(output);
383+
});

0 commit comments

Comments
 (0)