Skip to content

Commit bd570f4

Browse files
committed
add tests to protocol.rs
1 parent bbfcef4 commit bd570f4

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

esp32-wroom-rp/src/protocol.rs

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,29 +70,34 @@ pub(crate) trait NinaParam {
7070
}
7171

7272
// Used for single byte params
73+
#[derive(PartialEq, Debug)]
7374
pub(crate) struct NinaByteParam {
7475
length: u8,
7576
data: <NinaByteParam as NinaConcreteParam>::DataBuffer,
7677
}
7778

7879
// Used for 2-byte params
80+
#[derive(PartialEq, Debug)]
7981
pub(crate) struct NinaWordParam {
8082
length: u8,
8183
data: <NinaWordParam as NinaConcreteParam>::DataBuffer,
8284
}
8385

8486
// Used for params that are smaller than 255 bytes
87+
#[derive(PartialEq, Debug)]
8588
pub(crate) struct NinaSmallArrayParam {
8689
length: u8,
8790
data: <NinaSmallArrayParam as NinaConcreteParam>::DataBuffer,
8891
}
8992

9093
// Used for params that can be larger than 255 bytes up to MAX_NINA_PARAM_LENGTH
94+
#[derive(PartialEq, Debug)]
9195
pub(crate) struct NinaLargeArrayParam {
9296
length: u16,
9397
data: <NinaLargeArrayParam as NinaConcreteParam>::DataBuffer,
9498
}
9599

100+
#[derive(PartialEq, Debug)]
96101
pub(crate) struct NinaAbstractParam {
97102
// Byte representation of length of data
98103
length_as_bytes: [u8; 2],
@@ -443,3 +448,101 @@ impl Format for ProtocolError {
443448
}
444449
}
445450
}
451+
452+
#[cfg(test)]
453+
mod protocol_tests {
454+
use super::*;
455+
use core::str;
456+
457+
#[test]
458+
fn nina_byte_param_new_returns_payload_too_large_error_when_given_too_many_bytes() {
459+
let str_slice: &str = "too many bytes";
460+
let result = NinaByteParam::new(str_slice);
461+
462+
assert_eq!(
463+
result.unwrap_err(),
464+
Error::Protocol(ProtocolError::PayloadTooLarge)
465+
)
466+
}
467+
468+
#[test]
469+
fn nina_byte_param_from_bytes_returns_payload_too_large_error_when_given_too_many_bytes() {
470+
let bytes: [u8; 2] = [0; 2];
471+
let result = NinaByteParam::from_bytes(&bytes);
472+
473+
assert_eq!(
474+
result.unwrap_err(),
475+
Error::Protocol(ProtocolError::PayloadTooLarge)
476+
)
477+
}
478+
479+
#[test]
480+
fn nina_word_param_new_returns_payload_too_large_error_when_given_too_many_bytes() {
481+
let str_slice: &str = "too many bytes";
482+
let result = NinaWordParam::new(str_slice);
483+
484+
assert_eq!(
485+
result.unwrap_err(),
486+
Error::Protocol(ProtocolError::PayloadTooLarge)
487+
)
488+
}
489+
490+
#[test]
491+
fn nina_word_param_from_bytes_returns_payload_too_large_error_when_given_too_many_bytes() {
492+
let bytes: [u8; 3] = [0; 3];
493+
let result = NinaWordParam::from_bytes(&bytes);
494+
495+
assert_eq!(
496+
result.unwrap_err(),
497+
Error::Protocol(ProtocolError::PayloadTooLarge)
498+
)
499+
}
500+
501+
#[test]
502+
fn nina_small_array_param_new_returns_payload_too_large_error_when_given_too_many_bytes() {
503+
let bytes = [0xA; 256];
504+
let str_slice: &str = str::from_utf8(&bytes).unwrap();
505+
let result = NinaSmallArrayParam::new(str_slice);
506+
507+
assert_eq!(
508+
result.unwrap_err(),
509+
Error::Protocol(ProtocolError::PayloadTooLarge)
510+
)
511+
}
512+
513+
#[test]
514+
fn nina_small_array_param_from_bytes_returns_payload_too_large_error_when_given_too_many_bytes()
515+
{
516+
let bytes: [u8; 256] = [0xA; 256];
517+
let result = NinaSmallArrayParam::from_bytes(&bytes);
518+
519+
assert_eq!(
520+
result.unwrap_err(),
521+
Error::Protocol(ProtocolError::PayloadTooLarge)
522+
)
523+
}
524+
525+
#[test]
526+
fn nina_large_array_param_new_returns_payload_too_large_error_when_given_too_many_bytes() {
527+
let bytes = [0xA; 1025];
528+
let str_slice: &str = str::from_utf8(&bytes).unwrap();
529+
let result = NinaLargeArrayParam::new(str_slice);
530+
531+
assert_eq!(
532+
result.unwrap_err(),
533+
Error::Protocol(ProtocolError::PayloadTooLarge)
534+
)
535+
}
536+
537+
#[test]
538+
fn nina_large_array_param_from_bytes_returns_payload_too_large_error_when_given_too_many_bytes()
539+
{
540+
let bytes: [u8; 1025] = [0xA; 1025];
541+
let result = NinaLargeArrayParam::from_bytes(&bytes);
542+
543+
assert_eq!(
544+
result.unwrap_err(),
545+
Error::Protocol(ProtocolError::PayloadTooLarge)
546+
)
547+
}
548+
}

0 commit comments

Comments
 (0)